利用spark-shell加载/user/wanyi/count.txt文件创建RDD,并分别完成获取第一行的内容、获取文件所有项的计数、对文件单词进行计数并按倒序排列并输出、将结果保存在HDFS的/out/hadoop/count/目录上并输出。(上传所有操作的代码
时间: 2024-12-16 15:24:23 浏览: 1
为了在Spark Shell中完成这些操作,你需要首先启动Spark Shell并设置`textFile`读取HDFS文件。以下是相应的代码片段:
```scala
// 首先,导入需要的Spark库
import org.apache.spark.sql.SparkSession
// 创建SparkSession
val spark = SparkSession.builder.appName("WordCountExample").getOrCreate()
// 加载HDFS文件
val textFile = spark.read.text("/user/wanyi/count.txt")
// 获取第一行内容
val firstLine = textFile.first()
println(s"First line of the file: $firstLine")
// 计算文件所有项的长度统计(默认每个项视为一行)
val countOfItems = textFile.count()
println(s"Number of lines in the file: $countOfItems")
// 对单词进行计数
val wordCounts = textFile.flatMap(_.split(" ")).map(word => (word, 1)).reduceByKey(_ + _)
wordCounts.cache() // 缓存结果以便后续操作
// 按倒序排列并输出
val sortedCounts = wordCounts.sortBy(_._2, ascending=false)
sortedCounts.foreach(println)
// 将结果保存到HDFS
val outputDir = "/out/hadoop/count"
wordCounts.saveAsTextFile(outputDir)
println(s"Results saved to: $outputDir")
```
这段代码首先读取`count.txt`文件,然后执行了一些基本的操作,如获取第一行、计算行数以及单词计数。最后,它将结果保存到指定的HDFS目录。
阅读全文