我有我已经使用map
函数从RDD Array[String]
火花 - 组由密钥然后由值
val kvPairs = myRdd.map(line => (line(0), line(1)))
这产生格式的数据创建的非唯一键 - 值对:
1, A
1, A
1, B
2, C
我想将它们的所有键按其值分组,并提供这些值的计数,如下所示:
1, {(A, 2), (B, 1)}
2, {(C, 1)}
我已经尝试了许多不同的尝试,但我可以得到最接近的是这样的:
kvPairs.sortByKey().countByValue()
这给
1, (A, 2)
1, (B, 1)
2, (C, 1)
此外,
kvPairs.groupByKey().sortByKey()
提供价值,但它仍然不是那里:
1, {(A, A, B)}
2, {(C)}
我想这两个结合在一起:
kvPairs.countByValue().groupByKey().sortByKey()
但这返回一个错误
error: value groupByKey is not a member of scala.collection.Map[(String, String),Long]
countByValue()返回一个映射,groupByKey是一个RDD上的方法 - 你不能在它上面使用它。 –