【发布时间】:2016-11-06 19:15:10
【问题描述】:
我正在为 pyspark 中键值映射的基本操作而苦苦挣扎。以下是问题描述:
data = {(1, [2, 3, 4]), (2, [a, b, 3]), (3, [x, y]) }
我想获取当前值列表中不包含的所有键的值。结果应该是这样的:
data = {(1, [a, b, x, y]), (2, [x, y]), (3, []) }
在过滤结果之前,我只是尝试用几种方法组合值:
- 向函数发送数据并创建嵌套循环来转换数据:失败,因为我无法让我的 RDD 正确迭代
- 使用 map 遍历数据:
data.map(lambda x: (x[0], x[1].map(lambda a,b: (x[a] + x[b])))):失败,因为列表没有map或flatMap属性 - 使用valuemap方法:
data.flatMapValues(lambda a, b: (data.lookup(a) + data.lookup(b))).
顺便说一句,我对 pyspark 完全陌生,所以我的方法可能很幼稚,但是有没有办法使这些工作中的任何一个工作,或者我应该使用不同的方法?
【问题讨论】:
标签: python apache-spark pyspark key-value rdd