2017-03-22 4 views
0

1.5Mレコードのデータセットを150レコードを持つ別のDFに追加しようとすると、問題が発生します。パフォーマンスは非常に悪く、誤った結果を示しています。 LargeDFがScalaを使用して小さなDFに参加したままブロードキャストに参加することをお勧めしますか?1.5Mレコードのデータセットが150レコードのテンポラリテーブルと結合する必要があるスパークブロードキャストジョイン

ありがとうございます!

+0

あなたは、より大きなデータセットRDDの各パーティションは、各レコードを反復処理し、放送データセットを自分で参加しないためにも –

+0

あなたは、適切なデータ構造として、150件のレコードを放送することができるデータセットやサンプルデータの両方のためのスキーマを追加することができますこれはより効率的になります。 – mbaxi

+0

小さなデータフレームに参加すると、Sparkは小さなデータフレームを自動的にブロードキャストします。これは、ブロードキャストハッシュ結合と呼ばれます。これは、 'spark.sql.autoBroadcastJoinThreshold'プロパティで設定できます。 http://spark.apache.org/docs/latest/sql-programming-guide.htmlを参照してください。 –

答えて

0

明示的にブロードキャスト機能を使用することはできますが、コメントに記載されているように、スパークは小さなDFに対して自動的に参加する必要があります。

import org.apache.spark.sql.functions.broadcast 

dfBig.join(broadcast(dfSmall)) 
関連する問題