私は、2列 - col1
とcol2
を持つスパークデータフレームを持っています。なぜSpark DataFrameが間違ったパーティション数を作成していますか?
scala> val df = List((1, "a")).toDF("col1", "col2")
df: org.apache.spark.sql.DataFrame = [col1: int, col2: string]
私はcol1
に一意の値の数に等しいファイルの数のすべてのデータを書き込むために、parquet
形式でディスクにdf
を書くとき、私はこのように、col1
を使用してrepartition
の操作を行います。
scala> df.repartition(col("col1")).write.partitionBy("col1").parquet("file")
上記のコードは、ファイルシステム内に1つのファイルしか生成しません。しかし、シャッフル処理の回数は、私がcol1
1つの値のみ、すなわち、1
が含まれている場合、なぜそれがrepartition
で200個のパーティションを作成していることを、ここで一つのことを理解することはできませんよ200
なり?スパークSQLシャッフル世界で