在pyspark中将流水线RDD转换为Dataframe时出错[复制]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我试图将下面的流水线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将其转换为数据帧,请告诉我。

python apache-spark dataframe pyspark rdd
1个回答
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_|
+------------+
© www.soinside.com 2019 - 2024. All rights reserved.