我有我已經使用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上的方法 - 你不能在它上面使用它。 –