我在java中有一个类,它可以构建一些复杂的Spark Dataframe 。
package companyX;
class DFBuilder {
public DataFrame build() {
...
return dataframe;
}
}
我把这个类添加到pyspark/jupiter类路径中,这样它就可以被py 4j调用了。现在当我调用它的时候,我得到了一个奇怪的类型:
b = sc._jvm.companyX.DFBuilder()
print(type(b.build()))
#prints: py4j.java_gateway.JavaObject
对比分析
print(type(sc.parallelize([]).toDF()))
#prints: pyspark.sql.dataframe.DataFrame
有没有办法把这个JavaObject转换成合适的pyspark Dataframe ?我遇到的一个问题是,当我想df.show在java构建的 Dataframe 上调用www.example.com()时,它会打印在spark日志中,而不是笔记本单元格中。
3条答案
按热度按时间k5hmc34c1#
可以使用
DataFrame
初始化器:如果您使用过时的Spark版本,请将
SparkSession
示例替换为SQLContext
。参考Zeppelin: Scala Dataframe to python
dgiusagp2#
从spark 2.4开始,当你在python one中 Package scala Dataframe 时,你仍然应该使用
SQLContext
而不是SparkSession
。如果
SparkSession
被传递,一些方法如toPandas()
将不能与DataFrame
一起工作。qlvxas9a3#
对于使用sparkSession对象的人,即使使用较新的spark(如3. 2)