【发布时间】:2021-07-16 04:07:36
【问题描述】:
我是 Spark(使用 Python)的新手,即使在查看相关帖子后也无法弄清楚。
我有一个 RDD。 RDD 的每条记录都是一个列表列表,如下所示
[[1073914607, 0, -1],[1073914607, 2, 7.88],[1073914607, 0, -1],[1073914607, 4, 40.0]]
[[1074079003, 0, -1],[1074079003, 2, 2.87],[1074079003, 0, -1],[1074079003, 4, 35.2]]
我想将 RDD 转换为具有 3 列的数据框,基本上是堆叠所有元素列表。数据框应如下所示。
account_id product_id price
1073914607 0 -1
1073914607 2 7.88
1073914607 0 -1
1073914607 4 40
1074079003 0 -1
1074079003 2 2.87
1074079003 0 -1
1074079003 4 35.2
我试过my_rdd.toDF(),但它给了我两行四列,每个元素列表在一列中。我还尝试了其他帖子中可能相关的一些解决方案。由于我对火花很陌生,因此我遇到了各种错误,我可以弄清楚。请帮忙。谢谢。
添加于 2021 年 7 月 28 日。最后,我执行以下操作来遍历每个元素并生成一个长列表并将其转换为数据框。可能这不是最有效的方法,但它解决了我的问题。
result_lst=[]
for x in my_rdd.toLocalIterator():
for y in x:
result_lst.append(y)
result_df=spark.createDataFrame(result_lst, ['account_id','product_id','price'])
【问题讨论】:
-
请不要发布图片。人们很难复制和重现您的问题。
标签: list dataframe pyspark rdd