一.实验目的
1. 了解Spark SQL所能实现的功能;
2. 能够使用Spark SQL执行一些sql语句。
二.实验要求
1. 能在实验结束之后完成建立数据库,建立数据表的数据结构;
2. 建立数据表之后能在Spark SQL中执行SQL语句进行查询;
3. 练习怎么向Spark SQL中导入数据。
三.实验原理
Spark SQL用于以交互式方式编写并执行Spark SQL,且书写语法为类SQL,同Spark Shell一样,启动时写明“–master spark://master:7077”则进入集群模式,否则默认进入单机模式。由于默认安装的Spark已经包含了Spark SQL,故无需安装其它组件,直接执行即可。
Spark SQL使得运行SQL和HiveQL查询十分简单。Spark SQL能够轻易地定位相应的表和元数据。Spark SQL为Spark提供了查询结构化数据的能力,查询时既可以使用SQL也可以使用人们熟知的DataFrame API(RDD)。Spark SQL支持多语言编程包括Java、Scala、Python及R,开发人员可以根据自身喜好进行选择。
DataFrame是Spark SQL的核心,它将数据保存为行构成的集合,行对应列有相应的列名。使用DataFrames可以非常方便地查询数据、给数据绘图及进行数据过滤。
DataFrames也可以用于数据的输入与输出,例如利用Spark SQL中的DataFrames,可以轻易地将下列数据格式加载为表并进行相应的查询操作:
1. RDD;
2. JSON;
3. Hive;
4. Parquet;
5. MySQL;
6. HDFS;
7. S3;
8. JDBC;
9. 其它 。
数据一旦被读取,借助于DataFrames便可以很方便地进行数据过滤、列查询、计数、求平均值及将不同数据源的数据进行整合。
如果你正计划通过读取和写数据来进行分析,Spark SQL可以轻易地帮你实现并将整个过程自动化。
四. 实验步骤
登录大数据实验一体机,启动实验十七,并点击右上方的一键搭建按钮,等待搭建完成。如图17-1所示:
图17-1 自动搭建集群
在master机上建立一个数据文件weather.dat。
在master机上启动Spark SQL。
确认当前Spark SQL中是否已经存在我们需要建立的数据库。
Spark SQL> show databases;
确认在当前的Spark SQL中不存在数据库名为db的数据库时进行操作。
Spark SQL> create database db;
切换当前数据库。
Spark SQL> use db;
建表操作。
执行命令检查是否建表成功
通过上述命令能在结果中发现weather表。
导入数据
执行查询命令。
通过查询命令可以正确得到刚才导入的数据就代表导入数据成功。
删除表;
上述命令可以通过查看数据库中存在的表检查weather表是否删除。
五.实验结果
建立数据库成功后show database 结果中能看到以下内容,如图17-2所示。
图17-2
建表成功之后show tables 结果能能看到的以下内容,如图17-3所示。
图17-3
执行查询命令成功,如图17-4所示。
select * from weather;
图17-4
执行过滤结果如图17-5所示。
select * from weather where temperature > 10.0
图17-5
实验操作:
步骤1:搭建Spark集群
配置Spark集群(独立模式):
1.前提:
配置各节点之间的免密登录,并在/etc/hosts中写好hostname与IP的对应,这样方便配置文件的相互拷贝。2、因为下面实验涉及Spark集群使用HDFS,所以按照之前的实验预先部署好HDFS。
在master机上操作:确定存在spark。
在master机上操作:进入/usr/cstor目录中。
进入配置文件目录/usr/cstor/spark/conf, 先拷贝并修改slave.templae为slave。
然后用vim命令编辑器编辑slaves文件
编辑slaves文件将下述内容添加到slaves文件中。
上述内容表示当前的Spark集群共有三台slave机,这三台机器的机器名称分别是slave1~3。
在spark-conf.sh中加入JAVA_HOME。
加入以下内容
export JAVA_HOME=/usr/local/jdk1.7.0_79
将配置好的Spark拷贝至slaveX、client。(machines在目录/root/data/2下,如果不存在则自己新建一个)
使用for循环语句完成多机拷贝。
在master机上操作:启动Spark集群。
2.配置HDFS
配置Spark集群使用HDFS:
首先关闭集群(在master上执行)
将Spark环境变量模板复制成环境变量文件。
[root@master ~]# cd /usr/cstor/spark/conf
[root@master conf]# cp spark-env.sh.template spark-env.sh
修改Spark环境变量配置文件spark-env.sh。
[root@master conf]$ vim spark-env.sh
在sprak-env.sh配置文件中添加下列内容。
export HADOOP_CONF_DIR=/usr/cstor/hadoop/etc/hadoop
重新启动spark
步骤2:进入spark-sql
步骤3:spark-sql建库
步骤4:spark-sql建表
查看创建的表show tables;
步骤5:spark-sql导入数据
步骤6:spark-sql条件查询
步骤7:spark-sql删表
验证是否删除