SparkでParquetファイルから特定の列を読み取る効率的な方法 質問する

SparkでParquetファイルから特定の列を読み取る効率的な方法 質問する

多くの列を持つ parquet ファイルから Spark の列のサブセットのみを読み取る最も効率的な方法は何ですか? を使用するのがspark.read.format("parquet").load(<parquet>).select(...col1, col2)最善の方法ですか? また、ケース クラスを使用してタイプセーフ データセットを使用してスキーマを事前に定義することも好みますが、確信はありません。

ベストアンサー1

val df = spark.read.parquet("fs://path/file.parquet").select(...)

これにより、対応する列のみが読み取られます。実際、Parquet は列指向ストレージであり、まさにこのタイプの使用例向けです。実行してみるdf.explainと、Spark は対応する列のみが読み取られたことを通知します (実行プランを出力します)。explainまた、where 条件も使用している場合は、どのフィルターが実行の物理プランにプッシュダウンされたかも通知します。最後に、次のコードを使用して、データフレーム (行のデータセット) をケース クラスのデータセットに変換します。

case class MyData...
val ds = df.as[MyData]

おすすめ記事