(四)按键归约算子 - reduceByKey()
1、按键归约算子功能
- reduceByKey()算子的作用对像是元素为(key,value)形式(Scala元组)的RDD,使用该算子可以将相同key的元素聚集到一起,最终把所有相同key的元素合并成一个元素。该元素的key不变,value可以聚合成一个列表或者进行求和等操作。最终返回的RDD的元素类型和原有类型保持一致。
2、按键归约算子案例
任务1、在Spark Shell里计算学生总分
- 成绩表,包含四个字段(姓名、语文、数学、英语),只有三条记录
- 创建成绩列表
scores
,基于成绩列表创建rdd1
,对rdd1
按键归约得到rdd2
,然后查看rdd2
内容
val scores = List(("张钦林", 78), ("张钦林", 90), ("张钦林", 76),
("陈燕文", 95), ("陈燕文", 88), ("陈燕文", 98),
("卢志刚", 78), ("卢志刚", 80), ("卢志刚", 60))
val rdd1 = sc.makeRDD(scores)
val rdd2 = rdd1.reduceByKey((x, y) => x + y)
rdd2.collect.foreach(println)
任务2、在IDEA里计算学生总分
-
可能存在问题:在Windows下的IDEA中访问HDFS报错
Could not locate executable null\bin\winutils.exe
-
下载对应版本的
winutils.exe
,放在hadoop安装目录的bin
子目录里 -
-
配置hadoop环境变量
-
-
创建Maven项目 - SparkRDDDemo
-
-
将
java
目录改为scala
-
-
在
pom.xml
文件里添加依赖和构建插件 -
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2