gpt4 book ai didi

python - Spark : how to generate several elements in map (python)?

转载 作者:太空宇宙 更新时间:2023-11-04 00:51:17 25 4
gpt4 key购买 nike

我有包含键和值列表的数据。 rdd =(键,[值])

我想要的是:

rdd.map(lambda pair: func(pair))

其中函数为每对返回几个 (Value, New_value)。请注意,New_value 还取决于 Key!

所以,简单地说,在

上使用 .map() 之后
(key1, [Value1, Value2])
(key2, [Value3, Value4, Value5])

我想收到:

(Value1, NewValue1)
(Value2, NewValue2)
(Value3, NewValue3)
(Value4, NewValue4)
(Value5, NewValue5)

如何在 PySpark 中制作它?

最佳答案

让 func 成为连接的键值。

def func(kv):
return '-'.join(kv)

您想将所有列表展平为(键,值)对

rdd.flatMap(lambda kv: ((kv[0], v) for v in kv[1]))

然后将 func 映射到所有对,同时将初始值保留为结果的一部分

 map(lambda kv: (kv[1], func(kv)))

总而言之,

rdd.flatMap(lambda kv: ((kv[0], v) for v in kv[1])).map(lambda kv: (kv[1], func(kv)))

例子

>>> rdd = sc.parallelize([('k1', ['v1', 'v2']), ('k2', ['v3','v4','v5'])])
>>> rdd.flatMap(lambda kv: ((kv[0], v) for v in kv[1])).map(lambda kv: (kv[1], func(kv))).collect()
[('v1', 'k1-v1'),
('v2', 'k1-v2'),
('v3', 'k2-v3'),
('v4', 'k2-v4'),
('v5', 'k2-v5')]

关于python - Spark : how to generate several elements in map (python)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36991622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com