【问题标题】:spark scala: count occurrence key - pair valuesspark scala:计数出现键 - 对值
【发布时间】:2018-10-23 07:43:13
【问题描述】:

我是 Scala 新手,需要帮助来弄清楚如何计算键对值的出现次数。我有一个输入文本文件如下:

a: b
b: c
c: a,b,d
d: b,c
e: b

我想计算每个值的出现次数,所以应该是这样的:

a | b | c| d| e| 
0   4   2  1  0

我想做的是将每一行和每个键、值对拆分成如下内容:

a,b
b,c
c,a
c,b
c,d
d,b
d,c
e,b

然后根据同一个key进行计数。

到目前为止我所拥有的是:

val links = sc.textFile("input.txt")
 val test = links.flatMap(line => line.split(":").map(row => row.split("\\s+")

任何想法下一步做什么或我能看到的参考将不胜感激,谢谢。

【问题讨论】:

    标签: scala apache-spark apache-spark-sql


    【解决方案1】:

    你可以阅读文件:

    val df = spark.read.option("delimiter", ":").csv("/path/to/file").toDF("key", "value")
    

    拆分记录

    import org.apache.spark.sql.functions._
    
    val long = df.withColumn("value", explode(split(trim($"value"), ",")))
    

    或者聚合

    long.groupBy("value").count.show
    

    或枢轴

    long.groupBy().pivot($"value").count.show
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 2015-01-14
      • 2021-06-07
      • 2020-08-24
      • 1970-01-01
      相关资源
      最近更新 更多