【发布时间】:2018-10-02 18:31:52
【问题描述】:
我是 scala spark 的新手。我有一个文本文件数据作为
001,delhi,india
002,chennai,india
003,hyderabad,india
004,newyork,us
005,chicago,us
006,lasvegas,us
007,seattle,us
我想计算每个国家/地区不同城市的数量,所以我应用了 groupBy 和 mapGroups。我不确定如何计算 mapGroups 中的值。请在下面找到我的代码
val ds1 = sparkSession.read.textFile("samplefile.txt").map(x => x.split(","))
val ds2 = ds1.groupByKey(x => x(2)).mapGroups{case(k,iter) => (k,iter.map(x => x(2)).toArray)}
请帮助我了解语法。我知道可以通过 spark-sql 轻松完成,但我想通过 scala 来完成
【问题讨论】:
-
如果您想按城市计数,只需将
toArray替换为size。 -
@leo 如果我的城市不是不同的,并且我想计算每个国家/地区的不同城市数量,那么语法会是什么??
-
@LeoC 请尝试回答我上面发布的问题
-
请看我发布的答案。
-
@LeoC 假设我有一个额外的列(未在我的示例文件中给出),我想按国家/地区计算平均分组,那么语法应该是什么。提前致谢
标签: scala apache-spark