第1关:第一题
任务描述
本关任务:根据编程要求,完成任务。
编程要求
打开右侧代码文件窗口,在 Begin 至 End 区域补充代码,完成任务。
在本地目录 /data/bigfiles
中有两个文件 a.txt
与 b.txt
,现在需要对这两个文件进行合并,并剔除其中重复的内容,将合并结果存储到 /root/result/
目录下。
下面是 a.txt
与 b.txt
存储的内容示例:
20170101 x
20170102 y
20170103 x
20170104 y
20170105 z
20170106 z
......
合并结果按首列升序进行排列。
from pyspark import SparkContext, SparkConf ################ Begin ################ # 创建SparkContext对象 sc = SparkContext('local','remdup') # 加载两个文件 lines1 = sc.textFile("file:///data/bigfiles/a.txt") lines2 = sc.textFile("file:///data/bigfiles/b.txt") # 合并两个文件的内容 lines = lines1.union(lines2) # 去重操作 distinct_lines = lines.distinct() # 排序操作 res = distinct_lines.sortBy(lambda x:x) # 保存结果 res.repartition(1).saveAsTextFile("file:///root/result") # 关闭SparkContext对象 sc.stop() ################ End ################
第2关:第二题
本关任务:根据编程要求,完成任务。
编程要求
打开右侧代码文件窗口,在 Begin 至 End 区域补充代码,完成任务。
在本地目录 /data/bigfiles
中有三个文件 Algorithm.txt
、Database.txt
和 Python.txt
。其中每行存储的内容由两个字段组成,第一个是学生名字,第二个是学生的成绩。
请你读取这三个文件的内容,计算各个学生的平均成绩(保留两位小数),将输出结果存储到 /root/result2/
目录下。
下面是上述文件一个样例,供参考。
小明 92
小红 87
小新 82
小丽 90
......
输出示例:
('小红',82.88)
('小明',81.23)
......
输出结果按平均分成绩降序进行排列。
from pyspark import SparkContext
################ Begin ################
# 创建SparkContext对象
sc = SparkContext('local', 'average_score')
# 加载三个文件
file_path_algorithm = "/data/bigfiles/Algorithm.txt"
file_path_database = "/data/bigfiles/Database.txt"
file_path_python = "/data/bigfiles/Python.txt"
data_algorithm = sc.textFile(file_path_algorithm)
data_database = sc.textFile(file_path_database)
data_python = sc.textFile(file_path_python)
# 合并三个文件的内容
merged_data = data_algorithm.union(data_database).union(data_python)
# 完成数据聚合
student_scores = merged_data.map(lambda line: (line.split()[0], float(line.split()[1])))
# 求平均分并排序
average_scores = student_scores.groupByKey().mapValues(lambda scores: round(sum(scores) / len(scores), 2))
sorted_scores = average_scores.sortBy(lambda x: x[1], ascending=False)
# 保存结果
result_path = "/root/result2/"
sorted_scores.saveAsTextFile(result_path)
# 关闭SparkContext对象
sc.stop()
################ End ################
标签:章节,文件,测验,file,scores,sc,path,txt,data
From: https://blog.csdn.net/m0_70967613/article/details/139359661