python - 如何在 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()

我收到一个错误。

请告诉我如何找到索引。

根据提供的解决方案:

我还有一个问题。我的rdd是这样的格式:

['a,b,c,d,e,f']

所以当我尝试时:

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

我得到 [ ]

我该怎么办

谢谢

最佳答案

你会得到一个异常,因为 mapfilter 都需要一个参数的函数:

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 (key, index): key == 'e')
    .map(lambda (key, index): index))

但我希望你不要使用这些。

我个人只会使用lookup

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

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

关于python - 如何在 Pyspark RDD 中查找元素的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48492741/

相关文章:

python - 在 Python 脚本中使用 Scrapy Spider 输出的问题

Scala:如何获取数据框中的一系列行

apache-spark - 使用 Dataset.groupByKey 时如何绕过 2GB 缓冲区限制?

apache-spark - PySpark:如何重新采样频率

mysql - 当在 mysql 中插入或更新行时,索引到底会发生什么?

sql - 为什么在创建索引时使用 Where 子句?

python - 使用多个 Python 应用程序构建存储库

python - 按 SQLObject 中的外键引用的另一个表的字段排序

sql - MySQL 忽略了我的索引

python - 如何管理文件中的某些网址内容?