的感觉,所以你去:
我认为,那项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被键入..
多一点上下文将有助于回答这个问题。你想汇总什么?关键是什么?我现在就认为嵌套列表中的第三项是你的钥匙?应该忽略嵌套列表的项目1和2? – DrEigelb
是的。你是对的。第三场是关键,第一项和第二项可以忽略 –
imho SO不是一个平台,你只是在围栏上抛出一个问题(特别是当提供少量上下文时),并希望有人抛出一个答案。你需要表明,你已经把思想和研究带入了一个问题。看看SO-Meta的[__我该如何问一个好问题?__](https://meta.stackexchange.com/help/how-to-ask)。这会让其他人更容易解决问题,并帮助您找到所需的答案。 – DrEigelb