python - 在 pyspark 中使用元组映射
问题描述
我有一个格式的 RDD[(("doc1", ("ab","bc","cd",...)),("doc2", ("de","ab","ab",...)))...]
我们可以将其映射到格式的 RDD[((ab, (doc1, doc2,...)),(bc, (doc1, doc2,...))]
解决方案
通过查看您提供的代码,我不确定您的列表是否包含单个元组或多个元组。
假设你有一个rdd
of tuples
,你可以申请
flatMap
展平原件的第二个元素tuple
,然后应用reduceByKey
将结果聚合到tuples
of 中(key, list)
,然后应用map
将内部转换lists
回tuples
rdd = (sc.parallelize([("doc1", ("ab","bc","cd")), ("doc2", ("de","ab","ab"))])
.flatMap(lambda x: [(i, [x[0]]) for i in x[1]])
.reduceByKey(lambda a, b: a + b)
.map(lambda x: (x[0], tuple(x[1]))))
print(rdd.collect())
[('cd', ('doc1',)), ('bc', ('doc1',)), ('ab', ('doc1', 'doc2', 'doc2')), ('de', ('doc2',))]
推荐阅读
- google-chrome - Selenium / Watir TCP 连接仅在 worker dyno heroku 上失败
- algorithm - 在连续数据中查找全局最小值
- php - Laravel 使用 Google Analytics - 使用未定义的常量
- java - 带有规范的 Spring 数据 jpa 限制结果
- java - JFMI,标量变量的数量,传递字符串
- javascript - 删除括号前后的所有空格
- python - Python:用 sklearn 流形绘制预先计算的距离矩阵
- python - 具有不同“速度”的pygame元素
- .net - 为高性能编程 HttpClient
- php - 响应类型从 JSON 更改为 HTML,无需任何代码更改