将Spark DataFrame从Python迁移到Scala



我在齐柏林飞船的Python段落中创建了一个spark DataFrame。

sqlCtx = SQLContext(sc)
spDf = sqlCtx.createDataFrame(df)

CCD_ 1是熊猫数据帧

print(type(df))
<class 'pandas.core.frame.DataFrame'>

我想做的是将spDf从一个Python段落移动到另一个Scala段落。使用z.put似乎是一种合理的方法。

z.put("spDf", spDf)

我得到了这个错误:

AttributeError: 'DataFrame' object has no attribute '_get_object_id'

有什么建议可以纠正这个错误吗?或者有什么建议移动spDf

您可以put内部Java对象而不是Python包装器:

%pyspark
df = sc.parallelize([(1, "foo"), (2, "bar")]).toDF(["k", "v"])
z.put("df", df._jdf)

然后确保使用正确的类型:

val df = z.get("df").asInstanceOf[org.apache.spark.sql.DataFrame]
// df: org.apache.spark.sql.DataFrame = [k: bigint, v: string]

但最好注册临时表:

%pyspark
# registerTempTable in Spark 1.x
df.createTempView("df")

并使用SQLContext.table读取:

// sqlContext.table in Spark 1.x
val df = spark.table("df")
df: org.apache.spark.sql.DataFrame = [k: bigint, v: string]

要反向转换,请参阅Zeppelin:Scala Dataframe到python

相关内容

  • 没有找到相关文章

最新更新