如何使用Spark / Scala计算文件中的所有字符?这是我在火花壳中做的事情:
scala> val logFile = sc.textFile("ClasspathLength.txt")
scala> val counts = logFile.flatMap(line=>line.split("").map(char=>(char,1))).reduceByKey(_ + _)
scala> println(counts.count())
scala> 62
我在这里得到错误的数字。有人可以帮我解决这个问题吗?
答案 0 :(得分:1)
你在这里做的是:
计算每个唯一字符在输入中出现的次数:
val counts = logFile.flatMap(line=>line.split("").map(char=>(char,1))).reduceByKey(_ + _)
然后:
counts.count()
),忽略您在上一步中计算的实际值 如果您对显示文件中的总字符数感兴趣 - 根本不需要分组 - 您可以将每一行映射到长度,然后使用隐式转换为DoubleRDDFunctions
以调用sum()
:
logFile.map(_.length).sum()
或者,您可以flatMap
为每个字符单独记录,然后使用count
:
logFile.flatMap(_.toList).count
答案 1 :(得分:-2)
这里你需要的只是flatMap + count
logFile.flatMap(identity).count