apache-spark
pysparkからスカラージョブを呼び出す
サーチ…
前書き
このドキュメントでは、parsparkアプリケーションからScalaジョブを呼び出す方法について説明します。
このアプローチは、Python APIにScala APIの既存の機能がいくつか欠落している場合や、Pythonを使用したパフォーマンスの問題に対処する場合にも役立ちます。
いくつかのユースケースでは、Pythonを使用することは避けられません。例えば、あなたはscikit-learn
モデルを構築しています。
Python RDDを受け取るScala関数を作成する
Python RDDを受け取るScala関数を作成するのは簡単です。あなたが構築する必要があるのは、JavaRDD [Any]
import org.apache.spark.api.java.JavaRDD
def doSomethingByPythonRDD(rdd :JavaRDD[Any]) = {
//do something
rdd.map { x => ??? }
}
Python RDDをシリアル化してスカラコードに送る
開発のこの部分では、Python RDDをJVMにシリアル化する必要があります。このプロセスでは、Sparkの主な開発を使用してjar関数を呼び出します。
from pyspark.serializers import PickleSerializer, AutoBatchedSerializer
rdd = sc.parallelize(range(10000))
reserialized_rdd = rdd._reserialize(AutoBatchedSerializer(PickleSerializer()))
rdd_java = rdd.ctx._jvm.SerDe.pythonToJava(rdd._jrdd, True)
_jvm = sc._jvm #This will call the py4j gateway to the JVM.
_jvm.myclass.apps.etc.doSomethingByPythonRDD(rdd_java)
spark-submitを呼び出す方法
このコードを呼び出すには、スカラコードのjarファイルを作成する必要があります。あなたはあなたの火花を次のように提出する必要があります。
spark-submit --master yarn-client --jars ./my-scala-code.jar --driver-class-path ./my-scala-code.jar main.py
これにより、pySparkジョブで必要なスカラコードを呼び出すことができます
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow