我有元组的 RDD。我想爆炸键值对并保留重复项。本质上是键 x 值。我想将此阵列的 RDD 馈入 LDA 模型。我将在下面说明一些代码,在此先感谢您:
当前状态
> >> rdd4.take(2)
[ [(u'11394071', 1), (u'11052103', 1), (u'11052101', 1)],
[(u'11847272', 2), (u'999999', 1), (u'11847272', 3)] ]
首选州
> >> rdd4.take(2)
[ ['11394071','11052103','11052101'],
['11847272', '11847272','999999','11847272','11847272','11847272'] ]
4 回答
不使用列表推导的解决方案,可能更清楚:
该解释实际上与我的其他答案相同。
从我的头顶
但是不在有火花的机器附近
print result
的输出:说明:
这就是所谓的(有点复杂)列表理解-从右边阅读:
很明显,不是吗?对于您
orig_list
中的每个orig_list_item
(本身就是列表),我们将做同样的事情:我们将解开其中每一对的各个部分的包装(分别给它们命名为
item
和count
-例如,对于第一对,它们将为item == u'11394071'
,count == 1
)。现在我们创建此项目的列表
并将重复
count
次不幸的是,我们将获得一个列表列表,内容如下(来自您第二个更有趣的 sub-list)
因此我们需要将它们组合(连接)成一个简单的列表-导入的模量
itertools
的函数(类方法)会为我们做到的。
但是-不幸的是-更高版本的
Python
(我认为是Python 2.7
)中的此函数会生成生成器,而不是列表-因此,我们最终将使用 built-in 函数list()
获得所需的列表。使用功能并保留 RDD: