2024-05-15 06:04:00 发布
网友
我尝试按原始键值对中的值进行分组,如
[(1, a), (2, a), (3, a), (4, a), (3, b), (1, b), (1, c), (4, c), (4, d)]
我可以使用groupByKey()方法按键分组,但找不到按值分组的方法
a = [1 , 2 , 3 , 4] b = [3, 1] c = [1, 4] d = [4]
我签了spark API文档,但找不到任何方法
Spark的rdd有一个groupBy操作符,您可以在这里传递一个自定义的groupBy函数。
groupBy
data = sc.parallelize([(1, a), (2, a), (3, a), (4, a), (3, b), (1, b), (1, c), (4, c), (4, d)]) data.groupBy(lambda tup: tup[1])
它将按值(tuple的第二个元素)对数据进行分组。请注意,groupBy和groupByKey可能会导致内存不足异常,并且是昂贵的操作。见Avoid GroupByKey
input = sc.parallelize([(1,"a"),(2,"a"),(3,"a"),(4,"a"),(1,"b"),(3,"b"),(1,"c"),(4,"c"),(4,"d")]) input.groupByKey().collect() output1 = input.map(lambda (x,y):(y,x)) output2 = output1.groupByKey() output2.collect()
你可以通过在RDD中反转元组来实现这一点
RDD.map(lambda s: reversed(s)) [(1, a), (2, a),....]
意志变成
[(a, 1), (a, 2),....]
现在groupByKey()。
虽然我不确定效率,但它会起作用的:)
Spark的rdd有一个
groupBy
操作符,您可以在这里传递一个自定义的groupBy函数。它将按值(tuple的第二个元素)对数据进行分组。请注意,groupBy和groupByKey可能会导致内存不足异常,并且是昂贵的操作。见Avoid GroupByKey
你可以通过在RDD中反转元组来实现这一点
意志变成
现在groupByKey()。
虽然我不确定效率,但它会起作用的:)
相关问题 更多 >
编程相关推荐