首页 > 解决方案 > 字数统计程序未在 spark 中产生所需的输出

问题描述

我正在为 spark 中的字数编写代码,但它给了我作为数组的输出,并在使用地图后给了我一段时间的 rdd:-

Array[(String, Int)] = Array((Welcome,1), (Programmings,1), (Spark,1), (in,1), (Saaransh,1))

我已经尝试过代码->

val f = sc.textFile("/root/Desktop/BigData/ScalaProgram/WordCount.txt")
val fm = f.flatMap(x => x.split(" ")).map(y => (y,1)).reduceByKey((a, b) => a+b).collect

val i = f.flatMap(x => x.split(" "))
val j = i.map(y => (y,1)).reduceByKey((a, b)=> a+b)

我希望输出为单个整数,它表示单个文件中的单词总数。

标签: apache-spark

解决方案


我觉得措辞有点混乱,但如果这是问题:

我希望输出为单数整数,它是文件中的多个单词。

那么这就是你所需要的:

val fileRDD = sc.textFile("/FileStore/tables/some.txt")
val count_words_in_single_file = fileRDD.flatMap(x => x.split(" ")).map(y => (y,1)).map(w => (w._2)).sum

这将每个文件作为输入执行,如果每个输入有多个文件,则解决方案再次不同,需要获取文件名的 sc.wholeTextFiles,除非您想计算所有文件中的所有单词。

您将来可能需要考虑数据集。


推荐阅读