Python 如何在Pyspark RDD中查找元素索引?

Python 如何在Pyspark RDD中查找元素索引?,python,apache-spark,indexing,pyspark,rdd,Python,Apache Spark,Indexing,Pyspark,Rdd,这是我的第一个问题。我正在用Pyspark编写代码。我和RDD: ['a,b,c,d,e,f'] 如何找到元素“e”的索引 我试过zipWithIndex,但它没有给我任何索引 我看到了一个类似的问题,但上面提到的解决方案并没有返回索引 rdd.zipWithIndex().filter(lambda key,index : key == 'e') \ .map(lambda key,index : index).collect() 我犯了一个错误 请让我知道如何找到索引 根据提供的

这是我的第一个问题。我正在用Pyspark编写代码。我和RDD:

['a,b,c,d,e,f']
如何找到元素“e”的索引

我试过zipWithIndex,但它没有给我任何索引

我看到了一个类似的问题,但上面提到的解决方案并没有返回索引

rdd.zipWithIndex().filter(lambda key,index : key == 'e') \
    .map(lambda key,index : index).collect()
我犯了一个错误

请让我知道如何找到索引

根据提供的解决方案:

我还有一个问题。我的rdd采用以下格式:

['a,b,c,d,e,f']
因此,当我尝试:

rdd.zipWithIndex().lookup('e')

我得到[]

我该如何进行


谢谢

您得到了一个异常,因为
map
filter
都需要单个参数的函数:

rdd=sc.parallelize(['a','b','c','d','e','f'])
(rdd)
.zipWithIndex()
.filter(lambda ki:ki[0]=“e”)
.map(lambda ki:ki[1]))
# [4]
在史前Python版本中,元组解包也可以工作:

(rdd
.zipWithIndex()
.filter(lambda(键,索引):键=='e')
.map(lambda(键,索引):索引))
但我希望你不要用这些

就个人而言,我只会使用
lookup

rdd.zipWithIndex().lookup('e')
# [4]

另外-请记住,RDD中的值顺序可能不是确定的。

谢谢您的帮助。我还有一个问题。我的rdd是这样的格式:['a,b,c,d,e,f'],所以当我尝试:rdd.zipWithIndex().lookup('e')我得到[]如果你创建
rdd
sc.parallelize(['a,b,c,d,e,f'])
这是一个单元素示例。我编辑了问题以显示示例输入。好的,谢谢。但我正在处理一个数据集,其中包含['a,b,c,d,e,f']中的元素。那么,我应该先拆分元素,然后再进行查找吗?您需要拆分rdd的字符串来划分行,然后只使用appy zipWithIndex()。这将解决您的问题:)