计算每组事件的发生次数 - Spark

时间:2017-09-07 10:30:37

标签: scala apache-spark

拥有以下rdd

BBBBBBAAAAAAABAABBBBBBBB
AAAAABBAAAABBBAAABAAAAAB

我需要计算每组事件的迭代次数,因此,对于此示例,预期输出应为:

BBBBBBAAAAAAABAABBBBBBBB    A -> 2   B -> 3
AAAAABBAAAABBBAAABBCCCCC    A -> 3   B -> 4  C-> 1

Final Output ->  A -> 5   B -> 7  C-> 1

我已经实现了拆分,并为每个字符滑动以尝试获取值,但我无法获得预期的结果。

谢谢,

1 个答案:

答案 0 :(得分:0)

val baseRDD = sc.parallelize(Seq("BBBBBBAAAAAAABAABBBBBBBB", "AAAAABBAAAABBBAAABBCCCC"))
baseRDD.flatMap(x => "(\\w)\\1*".r.findAllMatchIn(x).map(x => (x.matched.charAt(0), 1)).toList).reduceByKey((accum, current) => accum + current).foreach(println(_))

结果

(C,1) (B,6) (A,5)

希望这是你想要的。