我是Scala Spark的初学者,我遇到了问题。
我有这样的地图(有数百万行):
Map("date_create1" -> "user_id1", "date_create1" -> "user_id2", "date_create1" -> "user_id1", "date_create2" -> "user_id1")
我想计算每个日期有多少不同的用户。
像这样:
Map("date_create1" -> 2, "date_create2" -> 1 )
我如何在Scala / Spark中执行此操作。 如果我使用aggregateByKey,我就不能有一个明显的不是吗?
非常感谢你的帮助
答案 0 :(得分:4)
我假设你有一个像下面这样的元组。而你需要的是按日期获得不同的用户。您可以通过使用distinct和countByKey
轻松完成此操作val data = Array(("date1","user1"),("date1","user1"),("date1","user3"),("date1","user2"),("date2","user1"),("date2","user2"),("date2","user2"))
val rdd = sc.parallelize(data)
val distincCount = rdd.distinct.countByKey()
输出:
distincCount: scala.collection.Map[String,Long] = Map(date2 -> 2, date1 -> 3)