在Scala Spark和PySpark之间传递sparkSession

时间:2019-10-01 12:44:03

标签: scala dataframe apache-spark pyspark

我的要求是从现有的PySpark程序中调用“ Spark Scala”功能。 将PySpark程序中创建的sparkSession传递给Scala函数的最佳方法是什么。 我按如下方式将我的Scala罐子传递到Pyspark。

spark-submit --jars ScalaExample-0.1.jar pyspark_call_scala_example.py iris.data

Scalacode

def getDf(spark: SparkSession, query:String, df: DataFrame, log: Logger): DataFrame = {

import spark.implicits._

val df = spark.sql(query)

df

}

Pysparkcode

if __name__ == '__main__':

query = sys.argv[1]

spark = SparkSession \
.builder \
.appName("PySpark using Scala example") \
.getOrCreate()

log4jLogger = sc._jvm.org.apache.log4j 

log = log4jLogger.LogManager.getLogger(__name__) 

query_df = DataFrame(sc._jvm.com.crowdstrike.dsci.sparkjobs.PythonHelper.getDf(???, query, ???), sqlContext)

问题

如何将sparksession和logger传递给getDf?

https://www.crowdstrike.com/blog/spark-hot-potato-passing-dataframes-between-scala-spark-and-pyspark/

1 个答案:

答案 0 :(得分:0)

要将SparkSession从Python传递到Scala,请使用spark._jsparkSession