我正在尝试使用似乎是规范的#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直接解除的,所以我完全被难倒了。
答案 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()