在pyspark中将流水线RDD转换为Dataframe时出错

时间:2017-12-29 15:45:04

标签: python apache-spark dataframe pyspark rdd

我正在尝试将以下流水线RDD转换为数据帧。

流水线RDD - > user_rdd

['new_user1',
 'new_user2',
 'Onlyknows',
 'Icetea',
 '_coldcoffee_']

我尝试使用以下代码进行转换

schema = StructType([StructField('Username', StringType(), True)])
user_df = sqlContext.createDataFrame(user_rdd,schema)
mention_df.show(20)

我收到以下错误:

ValueError: Unexpected tuple 'new_user1' with StructType

我也试过使用toDF():

user_df=user_rdd.toDF()

这次遇到的错误是:

TypeError: Can not infer schema for type: <type 'str'>

如果有办法使用pyspark将其转换为数据框,请告诉我。

1 个答案:

答案 0 :(得分:1)

你拥有的rdd是一个字符串列表,基本上是1d数据;数据帧需要2d数据;将rdd中的每个元素转换为元组应解决问题:

user_df = sqlContext.createDataFrame(user_rdd.map(lambda x: (x,)), schema)
#                                             ^^^^^^^^^^^^^^^^^^^  
user_df.show()
+------------+
|    Username|
+------------+
|   new_user1|
|   new_user2|
|   Onlyknows|
|      Icetea|
|_coldcoffee_|
+------------+