在桌面上创建这个data.txt文件,读取为RDD数据,data.txt的文件内容是hadoop is good, my name is chenhongcheng, scala ok ,spark is fast, spark is better,只统计每一行中包含3个单词的,一行中存在单词数不为3的不统计,给出scala代码
时间: 2024-03-27 14:39:06 浏览: 70
scala 操作RDD的代码分析实例
好的,以下是符合您要求的Scala代码:
```scala
import org.apache.spark.{SparkConf, SparkContext}
object WordCount {
def main(args: Array[String]) {
val conf = new SparkConf().setAppName("WordCount").setMaster("local")
val sc = new SparkContext(conf)
val lines = sc.textFile("data.txt")
val filteredLines = lines.filter(line => line.split(" ").length == 3)
val wordCounts = filteredLines.flatMap(line => line.split(" "))
.map(word => (word, 1))
.reduceByKey(_ + _)
wordCounts.foreach(println)
}
}
```
这段代码首先读取了文件 `data.txt` 中的数据,然后使用 `filter` 过滤了那些单词数不为3的行,接着使用 `flatMap` 和 `map` 操作将每个单词映射为 `(单词, 1)` 的键值对,并使用 `reduceByKey` 将相同单词的计数进行累加,最后输出结果。
阅读全文