Spark SQL的分布式SQL引擎
目录
一、简介
Spark SQL可以使用其JDBC / ODBC或命令行界面充当分布式查询引擎。在此模式下,终端用户或应用程序可以直接与Spark SQL交互以运行SQL查询,而无需编写任何代码。主要有两种方式,一种是Thrift JDBC/ODBC,另一种是Spark SQL命令行终端。
二、使用Thrift JDBC/ODBC server
2.1概述
Spark SQL的Thrift JDBC/ODBC server是基于Hive 1.2.1的HiveServer2实现的(注意:在spark1.5.1及其之后的版本是基于Hive1.2.1的,在spark1.5.0和其之前的版本中是基于Hive0.13的)。这个服务启动之后,最主要的功能就是可以让我们通过
Java JDBC来以编程的方式调用Spark SQL。此外,在启动该服务之后,可以通过Spark或Hive 1.2.1自带的beeline工具来进行测试。
执行Spark的sbin目录下的start-thriftserver.sh命令,即可启动JDBC/ODBC server。start-thriftserver.sh命令可以接收所有spark-submit命令可以接收的参数,额外增加的一个参数是--hiveconf,可以用于指定一些Hive的配置属性。可以通过行./sbin/start-thriftserver.sh --help来查看所有可用参数的列表。默认情况下,启动的服务会在localhost:10000地址上监听请求。
注意:需要将hive-site.xml
,core-site.xml
和hdfs-site.xml放在spark的conf目录下,如果hive的metastore是远程模式的话,需要开启metastore服务,比如进入hive的安装目录,执行bin/hive --serveice metastore &
可以使用两种方式来改变服务监听的地址:
第一种:指定环境变量
export HIVE_SERVER2_THRIFT_PORT=<listening-port>
export HIVE_SERVER2_THRIFT_BIND_HOST=<listening-host>
./sbin/start-thriftserver.sh \
--master <master-uri> \
...
第二种:使用命令的参数
./sbin/start-thriftserver.sh \
--hiveconf hive.server2.thrift.port=<listening-port> \
--hiveconf hive.server2.thrift.bind.host=<listening-host> \
--master <master-uri>
...
2.2使用案例
(1)启动thriftserver
sbin/start-thriftserver.sh \
--hiveconf hive.server2.thrift.port=10000 \
--hiveconf hive.server2.thrift.bind.host=kms-1.apache.com \
--master yarn
(2)进入beeline,注意:beeline通常会要求你输入一个用户名和密码。在非安全模式下,我们只要输入本机的用户名(比如root),以及一个空的密码即可。对于安全模式,需要根据beeline的文档来进行认证。
[kms@kms-1 spark-2.3.0-bin-hadoop2.7]$ bin/beeline
Beeline version 1.2.1.spark2 by Apache Hive
beeline>
(3)连接
beeline> !connect jdbc:hive2://kms.apache.com:10000
(4)执行查询
此外Thrift JDBC/ODBC server也支持通过HTTP传输协议发送thrift RPC消息。使用以下方式的配置可以启动HTTP模式
(1)以http的方式启动thriftserver
./sbin/start-thriftserver.sh \
--hiveconf hive.server2.transport.mode=http \
--hiveconf hive.server2.thrift.http.port=10001 \
--hiveconf hive.server2.http.endpoint=cliservice \
--master yarn
(2)进入beeline
[kms@kms-1 spark-2.3.0-bin-hadoop2.7]$ bin/beeline
Beeline version 1.2.1.spark2 by Apache Hive
beeline>
(3)连接
beeline> !connect jdbc:hive2://kms-1.apache.com:10001/default?hive.server2.transport.mode=http;hive.server2.thrift.http.path=cliservice
三、使用Spark SQL cli
Spark SQL CLI是一种方便的工具,可以在本地模式下运行Hive Metastore服务,并执行从命令行输入的查询。请注意,Spark SQL CLI无法与Thrift JDBC服务器通信。要启动Spark SQL CLI,请在Spark目录中运行以下命令:
bin/spark-sql