是的,尽管不是很琐碎,但它是可能的。通常,您需要一个Java(友好的)包装器,这样就不必处理Scala功能,而这些功能使用普通Java不能轻松表达,因此在Py4J网关中无法很好地发挥作用。
假设您的课程是int包
com.example,并
Dataframe调用了Python
df
df = ... # Python Dataframe
您必须:
使用您最喜欢的构建工具来构建jar 。
将其包括在驱动程序类路径中,例如使用
--driver-class-path
PySpark shell /的参数spark-submit
。根据确切的代码可能无法使用通过它--jars
以及从Python
SparkContext
实例中提取JVM实例:jvm = sc._jvm
SQLContext
从SQLContext
实例中提取Scala :ssqlContext = sqlContext._ssql_ctx
Dataframe
从中提取Javadf
:jdf = df._jdf
创建的新实例
SimpleClass
:simpleObject = jvm.com.example.SimpleClass(ssqlContext, jdf, "v")
调用
exe
方法并使用Python包装结果Dataframe
:from pyspark.sql import Dataframe
Dataframe(simpleObject.exe(), ssqlContext)
结果应该是有效的PySpark
Dataframe。您当然可以将所有步骤组合到一个调用中。
重要提示 :仅当仅在驱动程序上执行Python代码时,此方法才可行。不能在Python *** 作或转换中使用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)