我想同时做一个明确的计数和计数。 让我通过一个简单的例子向您解释。 这是我的输入数据:
arbre;pommier
fruit;pomme
fruit;pomme
fruit;fraise
fruit;ichigo
arbre;cerisier
arbre;abricotier
sport;foot
sport;rugby
arbre;abricotier
arbre;abricotier
arbre;bananier
fruit;ananas
sport;basket
arbre;abricotier
arbre;abricotier
作为输出,我希望得到:
//type;count;distinct-count
arbre;9;3
fruit;5;4
sport;3;3
使用单词计数示例,我可以计算单词出现的时间(所以这里是计数)。使用函数distinct().groupeByKey()
,我设法计算非重复计数(这里是distinct-count)。
但是,我无法弄清楚如何在同一个RDD上执行此操作,而不是两个单独的RDD。
如果您有关于此主题的想法,文档或链接,我将非常感谢。
答案 0 :(得分:3)
数据:
col1,col2
arbre,pommier
fruit,pomme
fruit,pomme
fruit,fraise
fruit,ichigo
arbre,cerisier
arbre,abricotier
sport,foot
sport,rugby
arbre,abricotier
arbre,abricotier
arbre,bananier
fruit,ananas
sport,basket
arbre,abricotier
arbre,abricotier
使用 Spark 2
创建Dataframeval df = sqlContext.read.option("header", "true").option("inferSchema", "true").csv("filelocation")
df.show
import sqlContext.implicits._
import org.apache.spark.sql.functions._
//Applying count and distinct count
df.groupBy("col1")
.agg(count("col2").alias("count"), countDistinct("col2").alias("distinct"))
.show
输出:
+-----+-----+--------+
| col1|count|distinct|
+-----+-----+--------+
|arbre| 8| 4|
|sport| 3| 3|
|fruit| 5| 4|
+-----+-----+--------+