实验十七 Spark实验:Spark SQL

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Will_cruise/article/details/89180110

实验指导:

17.1 实验目的

1. 了解Spark SQL所能实现的功能;

2. 能够使用Spark SQL执行一些sql语句。

17.2 实验要求

1. 能在实验结束之后完成建立数据库,建立数据表的数据结构;

2. 建立数据表之后能在Spark SQL中执行SQL语句进行查询;

3. 练习怎么向Spark SQL中导入数据。

17.3 实验原理

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.4 实验步骤

登录大数据实验一体机,启动实验十七,并点击右上方的一键搭建按钮,等待搭建完成。如图17-1所示:

图17-1 自动搭建集群

在master机上建立一个数据文件weather.dat。

[root@master ~]# cat ~/data/16/weather.dat
1    nanjing    16.5
2    shanghai    20.1
3    beijing    12.4
4    zhengzhou    8.3
5    hainan      23.3
6    fujian     24.1
7    hefei    18
[root@master ~]#

在master机上启动Spark SQL。

[root@master ~]# cd /usr/cstor/spark/
[root@master spark]# bin/spark-sql --master spark://master:7077

确认当前Spark SQL中是否已经存在我们需要建立的数据库。

Spark SQL> show databases;

确认在当前的Spark SQL中不存在数据库名为db的数据库时进行操作。

Spark SQL> create database db;

切换当前数据库。

 Spark SQL> use db;

建表操作。

Spark SQL> create table weather(
id int,
city string,
temperature double
) row format delimited fields terminated by '\t';

执行命令检查是否建表成功

Spark SQL> show tables;

通过上述命令能在结果中发现weather表。

导入数据

Spark SQL> load data local inpath '/root/data/16/weather.dat' overwrite into table weather;

执行查询命令。

Spark SQL> select * from weather;
Spark SQL> select * from weather where temperature > 10.0;

通过查询命令可以正确得到刚才导入的数据就代表导入数据成功。

删除表;

[Spark SQL> drop table weather;

上述命令可以通过查看数据库中存在的表检查weather表是否删除。

17.5 实验结果

建立数据库成功后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。

[root@master ~]# ls /usr/cstor
spark/
[root@master ~]#

在master机上操作:进入/usr/cstor目录中。

[root@master ~]# cd /usr/cstor
[root@master cstor]#

进入配置文件目录/usr/cstor/spark/conf, 先拷贝并修改slave.templae为slave。

[root@master ~]# cd /usr/cstor/spark/conf
[root@master cstor]# cp  slaves.template slaves

然后用vim命令编辑器编辑slaves文件

[root@master cstor]# vim slaves

编辑slaves文件将下述内容添加到slaves文件中。

slave1
slave2
slave3

上述内容表示当前的Spark集群共有三台slave机,这三台机器的机器名称分别是slave1~3。

在spark-conf.sh中加入JAVA_HOME。

[root@master cstor]# vim /usr/cstor/spark/sbin/spark-config.sh

加入以下内容

export JAVA_HOME=/usr/local/jdk1.7.0_79

将配置好的Spark拷贝至slaveX、client。(machines在目录/root/data/2下,如果不存在则自己新建一个)

使用for循环语句完成多机拷贝。

[root@master ~]# cd /root/data/2
[root@master ~]# cat  machines
slave1
slave2
slave3
client
[root@master ~]# for  x  in  `cat  machines` ; do  echo  $x ; scp  -r  /usr/cstor/spark/  $x:/usr/cstor/; done;

在master机上操作:启动Spark集群。

[root@master local]# /usr/cstor/spark/sbin/start-all.sh

2.配置HDFS

配置Spark集群使用HDFS:

首先关闭集群(在master上执行)

[root@master ~]# /usr/cstor/spark/sbin/stop-all.sh

将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删表

验证是否删除

当然,我们亦可以通过登录SparkUI后,在Spark Jobs中观察到所有操作  

猜你喜欢

转载自blog.csdn.net/Will_cruise/article/details/89180110
今日推荐