大きな入力データ〜800GBの5つの中サイズのテーブル(それぞれ〜80GB)を結合する必要があります。すべてのデータはHIVEテーブルにあります。 これを達成するためにSpark SQL 1.6.1を使用しています。 --num-executors 20 --driver-memory 40g --executor-memory 65g --executor-cores 6
で参加には40分ほどかかります。すべての結合は、ソートマージ外部結合です。また、多くのシャッフルが起こっているのを見ている。Spark SQL結合のシャッフルを避けるためにデータを物理的に分割する方法
ハイブのすべてのテーブルを同数のバケットにバケットして、データ自体を最初にロードするときに、すべてのテーブルの類似のキーが同じスパークパーティションに移動するようにしました。しかし、スパークはバケットを理解していないようです。
&ソートデータをハイブ(パーツファイルなし)で分割できるため、スパイクはハイブ自体からデータをロードしている間にパーティション化キーを知り、データをシャッフルせずに同じパーティショニングで結合します周り?これにより、ハイブからデータをロードした後に、再パーティショニングを追加することがなくなります。