1.pyspark交互式编程
(1) 该系总共有多少学生;
1 | lines = sc.textFile("file:///usr/local/spark/sparksqldata/Data01.txt") |
答案为:265人
(2) 该系共开设了多少门课程;
1 | lines = sc.textFile("file:///usr/local/spark/sparksqldata/Data01.txt") |
答案为8门
(3) Tom同学的总成绩平均分是多少;
1 | lines = sc.textFile("file:///usr/local/spark/sparksqldata/Data01.txt") |
Tom同学的平均分为30.8分
(4) 求每名同学的选修的课程门数;
1 | lines = sc.textFile("file:///usr/local/spark/sparksqldata/Data01.txt") |
答案共265行
(‘Lewis’, 4)
(‘Mike’, 3)
(‘Walter’, 4)
(‘Conrad’, 2)
(‘Borg’, 4)
……
(5) 该系DataBase课程共有多少人选修;
1 | lines = sc.textFile("file:///usr/local/spark/sparksqldata/Data01.txt") |
答案为126人
(6) 各门课程的平均分是多少;
1 | lines = sc.textFile("file:///usr/local/spark/sparksqldata/Data01.txt") |
答案为:
(‘ComputerNetwork’, 51.9)
(‘Software’, 50.91)
(‘DataBase’, 50.54)
(‘Algorithm’, 48.83)
(‘OperatingSystem’, 54.94)
(‘Python’, 57.82)
(‘DataStructure’, 47.57)
(‘CLanguage’, 50.61)
(7)使用累加器计算共有多少人选了DataBase这门课。
1 | lines = sc.textFile("file:///usr/local/spark/sparksqldata/Data01.txt") |
2.编写独立应用程序实现数据去重
对于两个输入文件A和B,编写Spark独立应用程序,对两个文件进行合并,并剔除其中重复的内容,得到一个新文件C。下面是输入文件和输出文件的一个样例,供参考。
输入文件A的样例如下:
20170101 x
20170102 y
20170103 x
20170104 y
20170105 z
20170106 z
输入文件B的样例如下:
20170101 y
20170102 y
20170103 x
20170104 z
20170105 y
根据输入的文件A和B合并得到的输出文件C的样例如下:
20170101 x
20170101 y
20170102 y
20170103 x
20170104 y
20170104 z
20170105 y
20170105 z
20170106 z
【参考答案】
实验答案参考步骤如下:
1 | (1)假设当前目录为/usr/local/spark/mycode/remdup,在当前目录下新建一个remdup.py文件,复制下面代码; |
1 | (2)最后在目录/usr/local/spark/mycode/remdup下执行下面命令执行程序(注意执行程序时请先退出pyspark shell,否则会出现“地址已在使用”的警告); |