章节测验(文件)

第1关:第一题

任务描述

本关任务:根据编程要求,完成任务。

编程要求

打开右侧代码文件窗口,在 BeginEnd 区域补充代码,完成任务。

在本地目录 /data/bigfiles 中有两个文件 a.txtb.txt,现在需要对这两个文件进行合并,并剔除其中重复的内容,将合并结果存储到 /root/result/ 目录下。

下面是 a.txtb.txt存储的内容示例:

 
  1. 20170101 x
  2. 20170102 y
  3. 20170103 x
  4. 20170104 y
  5. 20170105 z
  6. 20170106 z
  7. ......

 

合并结果按首列升序进行排列。

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关:第二题

本关任务:根据编程要求,完成任务。

编程要求

打开右侧代码文件窗口,在 BeginEnd 区域补充代码,完成任务。

在本地目录 /data/bigfiles 中有三个文件 Algorithm.txtDatabase.txtPython.txt。其中每行存储的内容由两个字段组成,第一个是学生名字,第二个是学生的成绩。

请你读取这三个文件的内容,计算各个学生的平均成绩(保留两位小数),将输出结果存储到 /root/result2/ 目录下。

下面是上述文件一个样例,供参考。

 
  1. 小明 92
  2. 小红 87
  3. 小新 82
  4. 小丽 90
  5. ......

输出示例:

 
  1. ('小红',82.88)
  2. ('小明',81.23)
  3. ......

输出结果按平均分成绩降序进行排列。

 

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 ################

  • 14
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值