pyspark (Apache Spark) の DataFrame API を使用していますが、次の問題が発生しています。
同じソース DataFrame に由来する 2 つの DataFrame を結合すると、結果の DF は膨大な数の行に爆発します。簡単な例:
n
ディスクから行を含む DataFrame をロードします。
df = sql_context.parquetFile('data.parquet')
次に、そのソースから 2 つの DataFrame を作成します。
df_one = df.select('col1', 'col2')
df_two = df.select('col1', 'col3')
最後に、(内部で) それらを元に戻したい:
df_joined = df_one.join(df_two, df_one['col1'] == df_two['col1'], 'inner')
キーインcol1
はユニークです。n
結果の DataFrame には行があるはずですが、行がありn*n
ます。
ディスクから直接ロードするdf_one
と、それは起こりません。df_two
私は Spark 1.3.0 を使用していますが、これは現在の 1.4.0 スナップショットでも発生します。
なぜそれが起こるのか誰か説明できますか?