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

回到顶部