大数据技术原理与应用 实验6 Spark数据处理系统的搭建

一、实验题目

熟悉常用的Spark操作。

二、实验目的

1.熟悉Spark Shell的使用;
2.熟悉常用的Spark RDD API、Spark SQL API和Spark DataFrames API。

三、实验平台

操作系统:Linux
Spark版本: 1.6
Hadoop版本: 3.3.0
JDK版本:1.8

四、实验内容和要求

使用Spark shell完成如下习题:

1.Spark RDD部分:

a)读取Spark安装目录下的文件README.md(/usr/local/spark/README.md);
b)统计包含“Spark”的单词(区分大小写)的出现次数,给出执行语句与结果截图;
c)统计空白行的出现次数,给出执行语句与结果截图。

2.Spark SQL部分(分别使用Spark SQL API和Spark DataFrames API完成):

a)在Spark安装目录下建立一个文件example.json,内容如下:
{“name”: “Michael”, “age”: 25, “gender”: “male”}
{“name”: “Andy”, “age”: 30, “gender”: “female”}
{“name”: “Justin”, “age”: 19, “gender”: “female”}
b)读取该文件(/usr/local/spark/example.json)
c)筛选性别为”female”的记录并显示结果,给出执行语句与结果截图;
d)统计性别为”male”和”female”的人数并显示结果,给出执行语句与结果截图。
(提示:使用DataFrames API判断字符串相等,应使用”===”操作符;使用SQL API判断字符串相等,应使用”=”操作符)

五、实验步骤

1. Spark RDD部分

1.1 读取文件

val textFile = sc.textFile("file:///usr/local/spark/README.md");

1.2 统计"Spark"词频

textFile.filter(word => word.contains("Spark")).count();

图1

1.3 统计空白行出现次数

textFile.flatMap(_.split("\n")).filter(_.size == 0) .count();

图2

2. Spark SQL部分

2.1 建立文件

路径:/usr/local/spark/example.json
内容:
{“name”: “Michael”, “age”: 25, “gender”: “male”}
{“name”: “Andy”, “age”: 30, “gender”: “female”}
{“name”: “Justin”, “age”: 19, “gender”: “female”}
图3

2.2 Spark DataFrames API实现

a)读取文件

val df = sqlContext.read.json("file:///usr/local/spark/example.json");
df.show();

图4
b)筛选性别为"female"的记录

df.filter(df("gender") === "female").show();

图5
c)统计性别为"male"和"female"的人数

df.groupBy("gender").count().show();

图6

2.3 Spark SQL API实现

a)将df注册为临时表people

df.registerTempTable("people");

b)读取文件

val result = sqlContext.sql("SELECT * FROM people");
result.show();

图7
c)筛选性别为"female"的记录

val result = sqlContext.sql("SELECT * FROM people WHERE gender = 'female' ");
result.show();

图8
d)统计性别为"male"和"female"的人数

val result = sqlContext.sql("SELECT gender, COUNT (*) AS count FROM people GROUP BY gender");
result.show();

图9

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值