在 spark-shell 中读取 Linux 系统本地文件 /data/bigfiles/test.txt,然后统计出文件的行数,将统计结果保存到 /root/result.txt 文件中。
时间: 2024-10-15 09:15:24 浏览: 150
在`spark-shell`环境中,首先需要通过`SparkContext`来读取Linux系统中的文件,然后对文件进行操作并保存结果。以下是具体的步骤:
```scala
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
// 设置Spark配置
val conf = new SparkConf().setAppName("FileCountApp")
val sc = new SparkContext(conf)
// 指定文件路径
val filePath = "/data/bigfiles/test.txt"
// 使用TextFile读取文件,并转换成RDD
val linesRDD = sc.textFile(filePath)
// 统计行数
val lineCount = linesRDD.count()
// 将结果保存到指定文件
val resultPath = "/root/result.txt"
linesRDD.saveAsTextFile(resultPath) // 这里直接保存的是行的数量,而不是每个行的内容
// 印出结果
println(s"Total number of lines in $filePath is $lineCount")
println(s"Result saved to $resultPath.")
// 关闭SparkContext
sc.stop()
```
这段代码会在`/root`目录下创建一个名为`result.txt`的新文件,并将`test.txt`中的行数作为内容保存。如果你想要保存的是每行的内容而非总数,可以考虑使用`saveAsTextFile`并将`count()`改为`mapPartitions`或`foreachPartition`。
阅读全文