Pyspark - 基于RDD中的一个键的总和和聚合
我有下面的RDD。Pyspark - 基于RDD中的一个键的总和和聚合
[[1,101,001,100,product1], [2,102,001,105,product2],
[3,103,002,101,product3]]
预期成果是在度假心情
[('001', ['product1','100'],['product2','105']),('002',['product3','101'])]
回答:
的感觉,所以你去:
我认为,那项3 & 5在嵌套列表应弦...
创建RDD:
ls = [[1,101,"001",100,"product1"], [2,102,"001",105,"product2"],
[3,103,"002",101,"product3"]]
rdd1 = sc.parallelize(ls)
这将提供rdd1
为:
[[1, 101, '001', 100, 'product1'], [2, 102, '001', 105, 'product2'],
[3, 103, '002', 101, 'product3']]
映射:
# discard items 1 & 2; set item 3 as key rdd2 = rdd1.map(lambda row: (row[2], [row[4], row[3]]))
rdd2.collect()
> [('001', ['product1', 100]),
> ('001', ['product2', 105]),
> ('002', ['product3', 101])]
# group by key and map values to a list
rdd3 = rdd2.groupByKey().mapValues(list)
rdd3.collect()
> [('001', [['product1', 100], ['product2', 105]]),
> ('002', [['product3', 101]])]
这是不太你感兴趣的输出,但随后的RDD被键入..
以上是 Pyspark - 基于RDD中的一个键的总和和聚合 的全部内容, 来源链接: utcz.com/qa/266185.html