问题:
编写独立应用程序实现求平均值问题 每个输入文件表示班级学生某个学科的成绩,每行内容由两个字段组成,第一个是学生名字,第二个是学生的成绩;编写Spark独立应用程序求出所有学生的平均成绩,并输出到一个新文件中。下面是输入文件和输出文件的一个样例,供参考。
Algorithm成绩:
小明 92
小红 87
小新 82
小丽 90
Database成绩:
小明 95
小红 81
小新 89
小丽 85
Python成绩:
小明 82
小红 83
小新 94
小丽 91
平均成绩如下:
(小红,83.67)
(小新,88.33)
(小明,89.67)
(小丽,88.67)
编程思路:
- 把三个文件分别读取,然后整合成一个文件,最终格式:姓名 成绩 学科
- 按照scala代码的思路,统计每个人的平均成绩即可
pyspark实现:
# 读入数据
str_path = '../测试数据/spark/课程数据/'
course_list = [
'Algorithm',
'DataBase',
'python',
]
rdd_data = []
for course in course_list:
path = str_path + course + '.txt'
print(path)
rdd = sc.textFile(path)
rdd_data.append(rdd)
print(rdd_data)
# 把所有rdd合并成一个
rdd_total = rdd_data[0]
for i in range(1, len(rdd_data)):
rdd_total = rdd_total.union(rdd_data[i])
print('所有数据:')
print(rdd_total.collect())
# 求每个人的平均值
stu_1 = rdd_total.map(lambda x: