私はこの質問に対して否定的な票を得ることはできません。それは複数のスパークバージョン間で混乱しているので、とにかくそれを聞かせてください。この質問は純粋にパフォーマンスの観点からであり、ではなく、開発者の生産性/スキルの観点からです。私はスパークするのが初めてで、多くの人が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の折り返し)が非常に低くなければならない