姓名 | 语文 | 数学 | 英语 | 物理 | 化学 |
---|---|---|---|---|---|
陈燕文 | 89 | 98 | 80 | 76 | 65 |
张晓峰 | 90 | 78 | 92 | 84 | 56 |
李太白 | 87 | 93 | 67 | 78 | 92 |
洪小琳 | 98 | 67 | 87 | 90 | 76 |
1. 准备数据
- 创建本地成绩文件:
scores.txt
,包含学生成绩数据。 - 上传到 HDFS:
- 创建目录:
hdfs dfs -mkdir -p /scoresumavg/input
- 上传文件:
hdfs dfs -put scores.txt /scoresumavg/input
- 创建目录:
2. 交互式实现
- 读取成绩文件:使用 Spark 读取 HDFS 上的文件。
val df = spark.read.text("hdfs://master:9000/scoresumavg/input/scores.txt")
- 转换数据帧:将单列文本数据帧转换为多列数据帧,包含学生姓名和各科成绩。
val scoreDF = df.withColumn(...).drop("value")
- 创建临时视图:将转换后的数据帧注册为临时视图,以便使用 SQL 查询。
scoreDF.createOrReplaceTempView("t_score")
- 执行 SQL 查询:计算每名学生的总分和平均分。
val result = spark.sql("select name, (chinese + math + english + physics + chemistry) as sum, round((chinese + math + english + physics + chemistry) / 5.0, 2) as avg from t_score")
- 展示结果:在控制台展示查询结果。
result.show
3. Spark 项目实现
- 创建 Maven 项目:选择 Scala 作为编程语言,配置项目名称和其他基本信息。
- 添加依赖:添加 Spark Core 和 Spark SQL 的 Maven 依赖。
- 设置源程序文件夹:将源代码目录设置为 Scala 目录。
- 添加 Scala SDK:确保项目配置了 Scala 开发环境。
- 创建日志属性文件:
log4j.properties
,配置日志记录器。 - 创建 HDFS 配置文件:
hdfs-site.xml
,配置 HDFS 客户端属性。
4. 开发 Scala 程序
- 创建包和对象:在
net.huawei.sql
包中创建ScoreSumAvg
对象。 - 编写主方法:在
ScoreSumAvg
对象中编写main
方法,实现数据读取、转换、查询和展示的逻辑。 - 运行程序:编译并运行 Scala 程序,查看控制台输出的成绩统计结果。
5. 验证结果
- 检查控制台输出:确保程序正确运行并输出预期的总分和平均分。
- 验证 HDFS 数据:可选地,检查 HDFS 上的数据文件是否正确上传和处理。
6. 项目优化与维护
- 代码优化:根据需要重构代码,提高程序的可读性和性能。
- 异常处理:添加异常处理逻辑,确保程序的健壮性。
- 扩展功能:根据需求,可能需要添加更多的数据处理功能。