2016-07-21 26 views
2

比較のために、2つの列 "A"、 "B"を持つテーブル "T"があるとします。 HDFSデータベースにはhiveContextもあります。理論的にはSpark DataFrame vs sqlContext

、次の高速です:私たちは、データフレームを作る

sqlContext.sql("SELECT A,SUM(B) FROM T GROUP BY A") 

または「DF」はこれらの単純な種類のためにT.を参照するデータフレームである

df.groupBy("A").sum("B") 

1つの方法を他の方法よりも優先させる理由がありますか?

答えて

3

スパークの開発者は、最適化するために大きな努力をしています。 DataFrame ScalaとDataFrame SQLの間のパフォーマンスは区別できません。 DataFrame Pythonの場合でも、データをドライバに収集するときは違いがあります。

それは私達はちょうどdatabricks enter image description here

によって公開され

持つ方法私たちが快適に、これまでどのような性能比較を選択することができ、新たな世界を

It doesn't have to be one vs. another

を開きます

5

いいえ、これらは同じ実行計画にまで沸騰するはずです。スパークSQLエンジンの下には、同じ最適化エンジン、触媒オプティマイザが使用されています。スパークのUIを見たり、結果のDataFrameにexplainを呼び出すことによって、いつでもこれを確認することができます。