gpt4 book ai didi

python - Pyspark RDD : find index of an element

转载 作者:太空狗 更新时间:2023-10-30 01:53:45 25 4
gpt4 key购买 nike

我是 pyspark 的新手,我正在尝试将 python 中的列表转换为 rdd,然后我需要使用 rdd 查找元素索引。对于我正在做的第一部分:

list = [[1,2],[1,4]]
rdd = sc.parallelize(list).cache()

所以现在 rdd 实际上是我的列表。问题是我想找到任何任意元素的索引,例如适用于 python 列表的“索引”函数。我知道一个名为 zipWithIndex 的函数,它为每个元素分配索引,但我在 python 中找不到合适的示例(有 java 和 scala 的示例)。

谢谢。

最佳答案

使用filterzipWithIndex:

rdd.zipWithIndex().
filter(lambda (key,index) : key == [1,2]).
map(lambda (key,index) : index).collect()

请注意,这里的 [1,2] 可以很容易地更改为变量名,并且整个表达式可以包含在一个函数中。

它是如何工作的

zipWithIndex 简单地返回一个 (item,index) 的元组,如下所示:

rdd.zipWithIndex().collect()
> [([1, 2], 0), ([1, 4], 1)]

filter 仅查找符合特定条件的那些(在本例中,key 等于特定子列表):

rdd.zipWithIndex().filter(lambda (key,index) : key == [1,2]).collect()
> [([1, 2], 0)]

map 很明显,我们可以取回索引:

rdd.zipWithIndex().filter(lambda (key,index) : key == [1,2]).
map(lambda (key,index): index).collect()
> [0]

然后如果需要,我们可以通过索引 [0] 来简单地获取第一个元素。

关于python - Pyspark RDD : find index of an element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36438321/

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