2016-07-27 4 views
1

時間効率のためにどのapiまたはコマンドを論理的に使用するかを論理的に結論づけるステップは何ですか?スパークで時間的に効率的なコードに使用するapisを決定する方法

例:経験的には、sql api呼び出しでデータフレームを結合すると、ネイティブのscalaコマンドを使用するよりも30%以上効率が良いことがわかりました。

df1.join(df2, df1.k == df2.k, joinType='inner') sqlContext.sql('SELECT * FROM df1 JOIN df2 ON df1.k = df2.k')

最適なコマンドを決定する際に関与して最初の原則は何ですか?

+0

「ネイティブスカラコマンド」とはどういう意味ですか? spark apiと比較するために使用したコマンドの例を挙げることができますか? – avr

+0

@avr sqlContextでsqlクエリを呼び出す代わりに 'join'を使うことを意味していました – Omley

答えて

1

大きなデータでのパフォーマンスの比較は、あなたが制御できない要因が多すぎるために非常に難しいことです。

explainを使用して、論理的および物理的な実行計画を確認してください。 DSLとSparkSQLの2つが同じであれば、Sparkは全く同じ作業を行います。私は、上記の両方の結果が同じであることと、観察された違いが、テスト実行中の他のプロセスによるマシンリソースの使用、実行間のプリキャッシュなど、他の要因によるものと期待しています。

ジョブの実行中に、Spark UIをsee what's going onに設定します。

関連する問題