1.在 spark-shell 中读取 Linux 系统本地文件 /data/bigfiles/test.txt,然后统计出文件的行数,将统计结果保存到 /root/result.txt 文件中。 2.在 spark-shell 中读取 HDFS 系统文件 /user/hadoop/test.txt,然后统计出文件的行数,将统计结果保存到 /root/result2.txt 文件中。
时间: 2023-12-23 21:04:46 浏览: 162
可以使用以下代码来解决你的问题:
1. 读取本地文件并统计行数
```scala
// 导入 SparkSession
import org.apache.spark.sql.SparkSession
// 创建 SparkSession
val spark = SparkSession.builder()
.appName("Count Lines")
.master("local[*]")
.getOrCreate()
// 读取本地文件
val localFile = spark.read.text("/data/bigfiles/test.txt")
// 统计行数
val count = localFile.count()
// 将结果保存到本地文件
import java.io.PrintWriter
new PrintWriter("/root/result.txt") { write(count.toString); close }
```
2. 读取 HDFS 文件并统计行数
```scala
// 导入 SparkSession
import org.apache.spark.sql.SparkSession
// 创建 SparkSession
val spark = SparkSession.builder()
.appName("Count Lines")
.master("local[*]")
.getOrCreate()
// 读取 HDFS 文件
val hdfsFile = spark.read.text("hdfs://localhost:9000/user/hadoop/test.txt")
// 统计行数
val count = hdfsFile.count()
// 将结果保存到本地文件
import java.io.PrintWriter
new PrintWriter("/root/result2.txt") { write(count.toString); close }
```
需要注意的是,上述代码中的 HDFS 地址为 localhost:9000,如果你的 HDFS 地址不同,需要做相应的修改。
阅读全文