createDataFrame()失败,无法弄清楚原因

时间:2016-12-09 13:20:50

标签: apache-spark pyspark apache-spark-sql

我正在尝试使用似乎是规范的#34; hello world"来创建数据帧。创建火花数据帧,无法理解其失败的原因。救命啊!

from pyspark.sql.types import *
schema = StructType([StructField("product", StringType(), True)])
l = [('foo')]
rdd = sc.parallelize(l)
df = sqlContext.createDataFrame(rdd, schema)
df.show()

以上代码抛出错误

ValueError: Unexpected tuple 'foo' with StructType`

代码基本上是从pyspark.sql module直接解除的,所以我完全被难倒了。

1 个答案:

答案 0 :(得分:1)

那是因为createDataFrame需要RDD [Row]作为参数:

df = sqlContext.createDataFrame(rdd.map (lambda x: Row(x)), schema)

会为您提供正确的DataFrame

完整代码,测试Spark 1.6:

from pyspark.sql.types import *

schema = StructType([StructField("product", StringType(), True)])
l = [('foo')]
rdd = sc.parallelize(l)

df = sqlContext.createDataFrame(rdd.map (lambda x: Row(x)), schema)
df.show()