2016-08-16 5 views
0

私はデータフレームの代わりにデータセットを使用したいと思います。カスタムケースクラスなしでデータセットに多くのカラムを持つ寄木細工ファイルを読むにはどうすればいいですか?

私は、寄木細工のファイルを読み込み、直接の種類を推測したいよ:

val df: Dataset[Row] = spark.read.parquet(path) 

私はDataset[Row]が、Datasetを望んでいません。

val df= spark.read.parquet(path).as[myCaseClass] 

しかし、私のデータは、多くの列があります。

は、私はのような何かを行うことができます知っています!ケースクラスの作成を避けることができれば、それは素晴らしいことでしょう!

+2

「DataSet」に変換する前に、必要な列を選択することができます。 –

答えて

2

なぜDatasetで作業しますか?私はあなたが無料のスキーマ(あなたは結果としてDataFrameを持っています)だけでなく、タイプセーフなスキーマを持っているからです。

データセットにはEncoderが必要で、データセット、つまりスキーマを表すタイプが必要です。

select妥当な数値にあなたの列を入力してas[MyCaseClass]を使用するか、DataFrameが提供するものを受け入れる必要があります。

+0

ありがとうJacek。それは理にかなっている。 私はマッピングフィールドの 'Row'を扱いたくありませんでした。例。要素にアクセスするためにその後 'ヴァルmaxMetric = metricsCurve.orderBy($「メトリック」.desc).head()' :私は 'DataFrame'をお持ちの場合 :私は最大値を持つ行を抽出したいと言います 'maxMetric.getAs [Double](" precision ")' しかし、metricsCurveがデータセットである場合、私はできる: 'maxMetric。 maxMetricはクラスのインスタンスなので、精度は '' – ab3

関連する問題