第1關(guān):第一題
- 任務(wù)描述
- 編程要求
- 測試說明
任務(wù)描述
本關(guān)任務(wù):根據(jù)編程要求,完成任務(wù)。
編程要求
打開右側(cè)代碼文件窗口,在 Begin 至 End 區(qū)域補(bǔ)充代碼,完成任務(wù)。
在本地目錄 /data/bigfiles
中有兩個文件 a.txt
與 b.txt
,現(xiàn)在需要對這兩個文件進(jìn)行合并,并剔除其中重復(fù)的內(nèi)容,將合并結(jié)果存儲到 /root/result/
目錄下。
下面是 a.txt
與 b.txt
存儲的內(nèi)容示例:
20170101 x20170102 y20170103 x20170104 y20170105 z20170106 z......
合并結(jié)果按首列升序進(jìn)行排列。
測試說明
平臺將對你編寫的代碼進(jìn)行評測,如果與預(yù)期結(jié)果一致,則通關(guān),否則測試失敗。
代碼文件:
from pyspark import SparkContext, SparkConf
################ Begin ################
# 創(chuàng)建SparkContext對象
sc = SparkContext('local','remdup')
# 加載兩個文件
lines1 = sc.textFile("file:///data/bigfiles/a.txt")
lines2 = sc.textFile("file:///data/bigfiles/b.txt")
# 合并兩個文件的內(nèi)容
lines = lines1.union(lines2)
# 去重操作
distinct_lines = lines.distinct()
# 排序操作
res = distinct_lines.sortBy(lambda x:x)
# 保存結(jié)果
res.repartition(1).saveAsTextFile("file:///root/result")
# 關(guān)閉SparkContext對象
sc.stop()
################ End ################
第2關(guān):第二題
- 任務(wù)描述
- 編程要求
- 測試說明
任務(wù)描述
本關(guān)任務(wù):根據(jù)編程要求,完成任務(wù)。
編程要求
打開右側(cè)代碼文件窗口,在 Begin 至 End 區(qū)域補(bǔ)充代碼,完成任務(wù)。
在本地目錄 /data/bigfiles
中有三個文件 Algorithm.txt
、Database.txt
和 Python.txt
。其中每行存儲的內(nèi)容由兩個字段組成,第一個是學(xué)生名字,第二個是學(xué)生的成績。
請你讀取這三個文件的內(nèi)容,計算各個學(xué)生的平均成績(保留兩位小數(shù)),將輸出結(jié)果存儲到 /root/result2/
目錄下。
下面是上述文件一個樣例,供參考。
小明 92小紅 87小新 82小麗 90......
輸出示例:
('小紅',82.88)('小明',81.23)......
輸出結(jié)果按平均分成績降序進(jìn)行排列。
測試說明
平臺將對你編寫的代碼進(jìn)行評測,如果與預(yù)期結(jié)果一致,則通關(guān),否則測試失敗。
代碼文件:
from pyspark import SparkContext
################ Begin ################
# 創(chuàng)建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)
# 合并三個文件的內(nèi)容
merged_data = data_algorithm.union(data_database).union(data_python)
# 完成數(shù)據(jù)聚合
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)
# 保存結(jié)果
result_path = "/root/result2/"
sorted_scores.saveAsTextFile(result_path)
# 關(guān)閉SparkContext對象
sc.stop()
################ End ################
第二關(guān)
第2關(guān):第一題
任務(wù)描述
本關(guān)任務(wù):根據(jù)編程要求,完成任務(wù)。
編程要求
打開右側(cè)代碼文件窗口,在 Begin 至 End 區(qū)域補(bǔ)充代碼,完成任務(wù)。
在 pyspark
中讀取 Linux 系統(tǒng)本地文件 /data/bigfiles/data.txt
,該數(shù)據(jù)集包含了某大學(xué)計算機(jī)系的成績,數(shù)據(jù)格式如下所示:
Tom,DataBase,80Tom,Algorithm,50Tom,DataStructure,60Jim,DataBase,90Jim,Algorithm,60Jim,DataStructure,80……
第一列為學(xué)生姓名,第二列為課程名稱,第三列為課程成績。
統(tǒng)計該系總共有多少名學(xué)生,直接打印輸出統(tǒng)計的結(jié)果。
輸出示例如下:
該系共有學(xué)生:n 人
測試說明
平臺將對你編寫的代碼進(jìn)行評測,如果與預(yù)期結(jié)果一致,則通關(guān),否則測試失敗。
from pyspark import SparkContext
###############Begin##############
# 創(chuàng)建SparkContext對象
sc = SparkContext("local", "Student Count")
# 讀取文本文件
lines = sc.textFile("file:///data/bigfiles/data.txt")
# 統(tǒng)計學(xué)生人數(shù)
arr = lines.map(lambda x:x.split(",")).map(lambda x: x[0])
distinct_res = arr.distinct()
res=distinct_res.count()
# 打印結(jié)果
print("\n該系共有學(xué)生:%d 人"%res)
# 關(guān)閉SparkContext對象
sc.stop()
###############End################
第2關(guān):第二題
任務(wù)描述
本關(guān)任務(wù):根據(jù)編程要求,完成任務(wù)。
編程要求
打開右側(cè)代碼文件窗口,在 Begin 至 End 區(qū)域補(bǔ)充代碼,完成任務(wù)。
在 pyspark
中讀取 Linux 系統(tǒng)本地文件 /data/bigfiles/data.txt
,該數(shù)據(jù)集包含了某大學(xué)計算機(jī)系的成績,數(shù)據(jù)格式如下所示:
Tom,DataBase,80Tom,Algorithm,50Tom,DataStructure,60Jim,DataBase,90Jim,Algorithm,60Jim,DataStructure,80……
第一列為學(xué)生姓名,第二列為課程名稱,第三列為課程成績。
統(tǒng)計該系共開設(shè)了多少門課程,直接打印輸出統(tǒng)計的結(jié)果。
輸出示例如下:
該系共有 n 門課程
測試說明
平臺將對你編寫的代碼進(jìn)行評測,如果與預(yù)期結(jié)果一致,則通關(guān),否則測試失敗。
from pyspark import SparkContext
################ Begin ################
# 創(chuàng)建SparkContext對象
sc = SparkContext("local", "Course Count")
# 讀取文本文件
lines = sc.textFile("file:///data/bigfiles/data.txt")
# 統(tǒng)計課程數(shù)量
course_count = lines.map(lambda x: x.split(",")[1]).distinct().count()
# 打印結(jié)果
print("\n該系共有 %d 門課程" % course_count)
# 關(guān)閉SparkContext對象
sc.stop()
################ End ################
第2關(guān):第三題
任務(wù)描述
本關(guān)任務(wù):根據(jù)編程要求,完成任務(wù)。
編程要求
打開右側(cè)代碼文件窗口,在 Begin 至 End 區(qū)域補(bǔ)充代碼,完成任務(wù)。
在 pyspark
中讀取 Linux 系統(tǒng)本地文件 /data/bigfiles/data.txt
,該數(shù)據(jù)集包含了某大學(xué)計算機(jī)系的成績,數(shù)據(jù)格式如下所示:
Tom,DataBase,80Tom,Algorithm,50Tom,DataStructure,60Jim,DataBase,90Jim,Algorithm,60Jim,DataStructure,80……
第一列為學(xué)生姓名,第二列為課程名稱,第三列為課程成績。
計算 Tom
同學(xué)的總成績平均分是多少(保留一位小數(shù)),直接打印輸出計算的結(jié)果。
輸出示例如下:
Tom 同學(xué)的總成績平均分為:xx.x 分
測試說明
平臺將對你編寫的代碼進(jìn)行評測,如果與預(yù)期結(jié)果一致,則通關(guān),否則測試失敗。
from pyspark import SparkContext
################ Begin ################
# 創(chuàng)建SparkContext對象
sc = SparkContext("local", "Tom Average Score")
# 讀取文本文件
lines = sc.textFile("file:///data/bigfiles/data.txt")
# 計算 Tom 同學(xué)的平均分
tom_scores = lines.filter(lambda x: x.startswith("Tom")).map(lambda x: float(x.split(",")[2]))
average_score = tom_scores.mean()
# 打印結(jié)果
print("\nTom 同學(xué)的總成績平均分為:%.1f 分" % average_score)
# 關(guān)閉SparkContext對象
sc.stop()
################ End ################
第2關(guān):第四題
任務(wù)描述
本關(guān)任務(wù):根據(jù)編程要求,完成任務(wù)。
編程要求
打開右側(cè)代碼文件窗口,在 Begin 至 End 區(qū)域補(bǔ)充代碼,完成任務(wù)。
在 pyspark
中讀取 Linux 系統(tǒng)本地文件 /data/bigfiles/data.txt
,該數(shù)據(jù)集包含了某大學(xué)計算機(jī)系的成績,數(shù)據(jù)格式如下所示:
Tom,DataBase,80Tom,Algorithm,50Tom,DataStructure,60Jim,DataBase,90Jim,Algorithm,60Jim,DataStructure,80……
第一列為學(xué)生姓名,第二列為課程名稱,第三列為課程成績。
求每名同學(xué)選修的課程門數(shù),直接打印輸出計算的結(jié)果。
輸出示例如下:
('Lewis', 4)('Mike', 3)('Walter', 4)('Conrad', 2)('Borg', 4)……
測試說明
平臺將對你編寫的代碼進(jìn)行評測,如果與預(yù)期結(jié)果一致,則通關(guān),否則測試失敗。
from pyspark import SparkContext
################ Begin ################
# 創(chuàng)建SparkContext對象
sc = SparkContext("local", "Courses Count")
# 讀取文本文件
lines = sc.textFile("file:///data/bigfiles/data.txt")
# 統(tǒng)計各個同學(xué)選修課程數(shù)量
res = lines.map(lambda x:x.split(",")).map(lambda x:(x[0],1)) #學(xué)生每門課程都對應(yīng)
each_res = res.reduceByKey(lambda x,y: x+y) #按學(xué)生姓名獲取每個學(xué)生的選課總數(shù)
# 打印結(jié)果
each_res.foreach(print)
# 關(guān)閉SparkContext對象
sc.stop()
################ End ################
第2關(guān):第五題
任務(wù)描述
本關(guān)任務(wù):根據(jù)編程要求,完成任務(wù)。
編程要求
打開右側(cè)代碼文件窗口,在 Begin 至 End 區(qū)域補(bǔ)充代碼,完成任務(wù)。
在 pyspark
中讀取 Linux 系統(tǒng)本地文件 /data/bigfiles/data.txt
,該數(shù)據(jù)集包含了某大學(xué)計算機(jī)系的成績,數(shù)據(jù)格式如下所示:
Tom,DataBase,80Tom,Algorithm,50Tom,DataStructure,60Jim,DataBase,90Jim,Algorithm,60Jim,DataStructure,80……
第一列為學(xué)生姓名,第二列為課程名稱,第三列為課程成績。
統(tǒng)計該系 DataBase
課程共有多少人選修,直接打印輸出計算的結(jié)果。
輸出示例如下:
選修 DataBase 課程的同學(xué)共有 n 位
測試說明
平臺將對你編寫的代碼進(jìn)行評測,如果與預(yù)期結(jié)果一致,則通關(guān),否則測試失敗。
from pyspark import SparkContext
################ Begin ################
# 創(chuàng)建SparkContext對象
sc = SparkContext("local", "DataBase Students Count")
# 讀取文本文件
lines = sc.textFile("file:///data/bigfiles/data.txt")
# 統(tǒng)計選修 DataBase 課程的人數(shù)
arr = lines.map(lambda x:x.split(",")).filter(lambda x:x[1]=="DataBase")
res = arr.count()
# 打印結(jié)果
print("\n選修 DataBase 課程的同學(xué)共有 %d 位" % res)
# 關(guān)閉SparkContext對象
sc.stop()
################ End ################
第2關(guān):第六題
任務(wù)描述
本關(guān)任務(wù):根據(jù)編程要求,完成任務(wù)。
編程要求
打開右側(cè)代碼文件窗口,在 Begin 至 End 區(qū)域補(bǔ)充代碼,完成任務(wù)。
在 pyspark
中讀取 Linux 系統(tǒng)本地文件 /data/bigfiles/data.txt
,該數(shù)據(jù)集包含了某大學(xué)計算機(jī)系的成績,數(shù)據(jù)格式如下所示:
Tom,DataBase,80Tom,Algorithm,50Tom,DataStructure,60Jim,DataBase,90Jim,Algorithm,60Jim,DataStructure,80……
第一列為學(xué)生姓名,第二列為課程名稱,第三列為課程成績。
統(tǒng)計該系各門課程的平均分是多少(保留一位小數(shù)),直接打印輸出計算的結(jié)果。
輸出示例如下:
('ComputerNetwork', 51.9)('Software', 50.91)('DataBase', 50.54)......
測試說明
平臺將對你編寫的代碼進(jìn)行評測,如果與預(yù)期結(jié)果一致,則通關(guān),否則測試失敗。
from pyspark import SparkContext
################ Begin ################
# 創(chuàng)建SparkContext對象
sc = SparkContext("local", "Courses Average")
# 讀取文本文件
lines = sc.textFile("file:///data/bigfiles/data.txt")
# 統(tǒng)計該系各門課程的平均分
res = lines.map(lambda x: x.split(",")).map(lambda x: (x[1], (int(x[2]), 1)))
temp = res.reduceByKey(lambda x, y: (x[0] + y[0], x[1] + y[1])) # 按課程名聚合課程總分和選課人數(shù)
# 課程總分/選課人數(shù) = 平均分,保留一位小數(shù)
avg = temp.map(lambda x: (x[0], round(x[1][0] / x[1][1], 1)))
# 打印結(jié)果
avg.foreach(print)
# 關(guān)閉SparkContext對象
sc.stop()
################ End ################
第2關(guān):第七題
任務(wù)描述
本關(guān)任務(wù):根據(jù)編程要求,完成任務(wù)。
編程要求
打開右側(cè)代碼文件窗口,在 Begin 至 End 區(qū)域補(bǔ)充代碼,完成任務(wù)。
在 pyspark
中讀取 Linux 系統(tǒng)本地文件 /data/bigfiles/data.txt
,該數(shù)據(jù)集包含了某大學(xué)計算機(jī)系的成績,數(shù)據(jù)格式如下所示:
Tom,DataBase,80Tom,Algorithm,50Tom,DataStructure,60Jim,DataBase,90Jim,Algorithm,60Jim,DataStructure,80……
第一列為學(xué)生姓名,第二列為課程名稱,第三列為課程成績。
使用累加器計算共有多少人選了 DataBase 這門課,直接打印輸出計算的結(jié)果。
輸出示例如下:
共有 n 名同學(xué)選修了 DataBase 課程
測試說明
平臺將對你編寫的代碼進(jìn)行評測,如果與預(yù)期結(jié)果一致,則通關(guān),否則測試失敗。文章來源:http://www.zghlxwxcb.cn/news/detail-767885.html
from pyspark import SparkContext
from pyspark.accumulators import AccumulatorParam
################ Begin ################
# 創(chuàng)建SparkContext對象
sc = SparkContext("local", "DataBase Students Count")
# 創(chuàng)建累加器
data_base_students_count = sc.accumulator(0)
# 定義累加器參數(shù)
class MyAccumulatorParam(AccumulatorParam):
def zero(self, value):
return value
def addInPlace(self, acc1, acc2):
return acc1 + acc2
# 讀取文本文件
lines = sc.textFile("file:///data/bigfiles/data.txt")
# 使用累加器統(tǒng)計選修 DataBase 課程的人數(shù)
def count_data_base_students(line):
global data_base_students_count
if line.split(",")[1] == "DataBase":
data_base_students_count += 1
# 使用 foreach 方法遍歷 RDD 并應(yīng)用累加器
lines.foreach(count_data_base_students)
# 打印結(jié)果
print("\n共有 %d 名同學(xué)選修了 DataBase 課程" % data_base_students_count.value)
# 關(guān)閉SparkContext對象
sc.stop()
################ End ################
如有侵權(quán)請聯(lián)系刪除文章來源地址http://www.zghlxwxcb.cn/news/detail-767885.html
到了這里,關(guān)于educoder大數(shù)據(jù)作業(yè)答案的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!