我正在尝试将以下流水线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将其转换为数据框,请告诉我。
答案 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_|
+------------+