在Pyspark中将Pandas Dataframe转换为Spark Dataframe时出现TypeError错误

4

我做了研究,但没有找到相关信息。我想要把一个简单的 pandas.DataFrame 转换成一个 Spark dataframe,就像这样:

df = pd.DataFrame({'col1': ['a', 'b', 'c'], 'col2': [1, 2, 3]})
sc_sql.createDataFrame(df, schema=df.columns.tolist()) 

我收到的错误消息是:
TypeError: Can not infer schema for type: <class 'str'>

我尝试了更简单的方法:

df = pd.DataFrame([1, 2, 3])
sc_sql.createDataFrame(df)

我得到了:
TypeError: Can not infer schema for type: <class 'numpy.int64'>

需要帮助吗?需要手动指定模式或其他吗?

sc_sqlpyspark.sql.SQLContext,我在Python 3.4和Spark 1.6的Jupyter笔记本中。

谢谢!


1
我尝试了这段代码,它运行良好,没有错误。 - shivsn
无论是否有模式,对我来说都不起作用... - neocortex
你使用的Pandas版本是什么? - zero323
Pandas是0.18.1版本。 - neocortex
好的,使用最新更新的Pandas版本(0.18.1),现在似乎可以工作了!显然,我之前使用的是旧版本,这就是问题所在。感谢您的帮助! - neocortex
显示剩余2条评论
1个回答

4

这与您的Spark版本有关,最新的Spark更新使类型推断更加智能化。您可以通过添加此类模式来进行修复:

mySchema = StructType([ StructField("col1", StringType(), True), StructField("col2", IntegerType(), True)])
sc_sql.createDataFrame(df,schema=mySchema)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接