私はいくつかの Spark アプリケーションを開発するために Python コードを書いています。Python が実行中の JVM とどのようにやり取りするのか、非常に興味があり、Spark のソース コードを読み始めました。
最終的に、すべての Spark 変換/アクションが、次の方法で特定の jvm メソッドを呼び出していることがわかります。
self._jvm.java.util.ArrayList(),
self._jvm.PythonAccumulatorParam(host, port))
self._jvm.org.apache.spark.util.Utils.getLocalDir(self._jsc.sc().conf())
self._jvm.org.apache.spark.util.Utils.createTempDir(local_dir, "pyspark") \
.getAbsolutePath()
...
_jvm
Python プログラマーとして、このオブジェクトで何が起こっているのか非常に興味があります。ただし、 pysparkの下のすべてのソース コードを簡単に読んだところ、 Context_jvm
クラスの属性であることがわかりました。それ以上は、属性やメソッドについては何も知りません。_jvm's
pyspark が JVM 操作にどのように変換されるかを理解してくれる人はいますか? scala コードを読んで、_jvm
そこに が定義されているかどうかを確認する必要がありますか?