如何在 Python 中解压缩 RDD 中每个项目的值(列表)?
Posted
技术标签:
【中文标题】如何在 Python 中解压缩 RDD 中每个项目的值(列表)?【英文标题】:How to unpack the value (a list) of every item in a RDD in Python? 【发布时间】:2015-12-13 16:59:14 【问题描述】:我有一个 RDD,每个项目都具有以下形式
(key, [ele1, ele2, ele3, ..., elen])
每个项目都是一个键值对,值是一个元素列表。
我想解压列表,这样我就可以创建一个新的 RDD,其中每个项目都包含一个元素,如下所示:
(key, ele1)
(key, ele2)
(key, ele3)
.
.
.
(key, ele4)
如何在 PySpark 中做到这一点?
我试过了
RDD.flatmap(lambda line: line[1])
但这不起作用。
【问题讨论】:
【参考方案1】:比如这个?为了简单起见,我使用了str
元素。
>>> rdd = sc.parallelize([('key', ['ele1', 'ele2'])])
>>> rdd.flatMap(lambda data: [(data[0], x) for x in data[1]]).collect()
[('key', 'ele1'), ('key', 'ele2')]
【讨论】:
谢谢。我试过这个,但它不起作用。它抛出一个错误“AttributeError:'PipelinedRDD'对象没有属性'flatmap'” @zero323 因为您将我的答案编辑为 rdd 特定的,您能解决这个问题吗?谢谢。 这是一个错字 -flatmap
!= flatMap
。以上是关于如何在 Python 中解压缩 RDD 中每个项目的值(列表)?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python3 中解压缩使用 PKZIP 以外的算法加密的文件?
如果使用struct.pack(fmt,v1,v2,...)在python打包,如何在cpp中解压缩数字