Suche…


Einführung

Dieses Dokument zeigt Ihnen, wie Sie Scala-Jobs über eine Pyspark-Anwendung aufrufen.

Dieser Ansatz kann hilfreich sein, wenn in der Python-API einige vorhandene Funktionen der Scala-API fehlen oder sogar Leistungsprobleme bei der Verwendung von Python auftreten.

In einigen Anwendungsfällen ist die Verwendung von Python unvermeidlich, z. B. scikit-learn Sie Modelle mit scikit-learn .

Erstellen einer Scala-Funktion, die eine Python-RDD empfängt

Das Erstellen einer Scala-Funktion, die eine Python-RDD empfängt, ist einfach. Was Sie brauchen, ist eine Funktion, die eine JavaRDD [Any] erstellt.

import org.apache.spark.api.java.JavaRDD

def doSomethingByPythonRDD(rdd :JavaRDD[Any]) = {
    //do something
    rdd.map { x => ??? }
}

Serialisieren und Senden von Python-RDD an Scala-Code

In diesem Teil der Entwicklung sollten Sie die Python-RDD mit der JVM serialisieren. Dieser Prozess verwendet die Hauptentwicklung von Spark, um die jar-Funktion aufzurufen.

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)

So rufen Sie Spark-Submit an

Um diesen Code aufzurufen, müssen Sie das Glas Ihres Scala-Codes erstellen. Dann musst du deinen Funken so anrufen:

spark-submit --master yarn-client --jars ./my-scala-code.jar --driver-class-path ./my-scala-code.jar main.py

Damit können Sie jeden Scala-Code aufrufen, den Sie für Ihre pySpark-Jobs benötigen



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow