수색…


소개

이 문서는 pyspark 응용 프로그램에서 Scala 작업을 호출하는 방법을 보여줍니다.

이 접근법은 Python API에 Scala API의 일부 기존 기능이 없거나 Python을 사용하여 성능 문제에 대처할 때 유용 할 수 있습니다.

어떤 경우에는 Python을 사용하는 것이 불가피합니다 (예 : scikit-learn 사용하여 모델을 구축 scikit-learn .

파이썬 RDD를받는 스칼라 함수 만들기

파이썬 RDD를받는 스칼라 함수를 만드는 것은 쉽습니다. 빌드 할 필요가있는 것은 JavaRDD [Any]

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

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

파이썬 RDD를 직렬화하여 스칼라 코드로 보내기

이 개발 부분에서는 파이썬 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을 호출하는 방법

이 코드를 호출하려면 스칼라 코드의 항아리를 만들어야합니다. 다음과 같이 spark를 호출해야합니다.

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