我有这种格式的数据
(apple, laptop)
(apple, laptop)
(apple, ipad)
(dell, laptop)
我想输出
(apple, laptop, 2)
(apple, ipad, 1)
(dell, laptop, 1)
我想使用groupby and then count
执行此操作,但groupby不允许基于两列进行分组。
我是Spark的新手,缺乏想法。有人可以帮忙吗?
答案 0 :(得分:1)
如果您只想计算每个数据的计数,那么您可以使用countByValue API。
val data = Array(("apple","laptop"),("apple","laptop"),("dell","laptop"), ("apple","ipad"))
val rdd = sc.parallelize(data)
scala> rdd.countByValue
res0: scala.collection.Map[(String, String),Long] = Map((apple,laptop) -> 2, (apple,ipad) -> 1, (dell,laptop) -> 1)