2017-10-08 4 views
0

私はこの質問に対して否定的な票を得ることはできません。それは複数のスパークバージョン間で混乱しているので、とにかくそれを聞かせてください。この質問は純粋にパフォーマンスの観点からであり、ではなく、開発者の生産性/スキルの観点からです。私はスパークするのが初めてで、多くの人が2017年の視点から最新の状況を知りたいと思っています。PySparkとScala

私はPythonでJITの問題を認識していますが、ここでは問題にはなりません。純粋にPySparkの観点からです。


私はまだPySparkが伝え直接Scalaのから火花APIを使用して比較したときに遅く(またはすべてでそれが虚偽である場合)である理由について理解することができません。私の検索に基づいて、パフォーマンスへの影響はアクセスされているAPIに基づいています。

RDDの場合:基本的に、spark workerのデータはシリアル化され、python workerに送信されます。いくつかの操作では、シリアライズするとコストがかかります(もちろん、ステージングされたパイプラインと操作に依存しますが、シャッフル操作があると、PythonプロセスがJavaワーカーと再び通信し、シリアル化されます)。この話はshedsの上に明かりがあります。

しかし、データセットはAPIとは異なります。そして、伝えられるところによると、すべての言語(source)から同じことを実行します。

質問は次のとおりです。

  • が私の上から正しい理解ですか?実際にPySparkが遅いときに誰かにもっと光を当てることができますか?または、遅れは、ちょうどどんなpysparkの複雑さよりも、JITの不足に起因するだけです。 RDDのは、あなたがデータフレームAPIにのみ組み込み関数を使用する場合は、その後のpythonのオーバーヘッドが(ちょうどAPIの折り返し)が非常に低くなければならない

答えて

2

を使用している場合。PySparkに直面している現実的などのような問題

  • しかし、UDFやRDDにマップされているもの(マップなど)を使用すると、pysparkの速度はかなり遅くなります。

    あなたが共有したビデオでは、それが遅くなる理由がよく説明されています。