Python 如何在Pyspark RDD中查找元素索引?
这是我的第一个问题。我正在用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() 我犯了一个错误 请让我知道如何找到索引 根据提供的
['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()。这将解决您的问题:)