サーチ…


前書き

このドキュメントでは、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