使用 Zeppelin 将 Spark DataFrame 从 Python 迁移到 Scala
Posted
技术标签:
【中文标题】使用 Zeppelin 将 Spark DataFrame 从 Python 迁移到 Scala【英文标题】:Moving Spark DataFrame from Python to Scala whithn Zeppelin 【发布时间】:2016-09-12 19:07:18 【问题描述】:我在 Zeppelin 的 Python 段落中创建了一个 spark DataFrame。
sqlCtx = SQLContext(sc)
spDf = sqlCtx.createDataFrame(df)
而df
是一个熊猫数据框
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
的建议?
【问题讨论】:
【参考方案1】:您可以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 to python
【讨论】:
以上是关于使用 Zeppelin 将 Spark DataFrame 从 Python 迁移到 Scala的主要内容,如果未能解决你的问题,请参考以下文章
使用 Zeppelin 将 Spark DataFrame 从 Python 迁移到 Scala
Spark Standalone + Zeppelin + Docker:如何设置 SPARK_HOME
在 zeppelin 中将 pandas 数据帧转换为 spark 数据帧
如何在 zeppelin 中将数组从 spark 绑定到 javascript?