目录

 

一、简介 

二、使用Thrift JDBC/ODBC server

2.1概述

2.2使用案例

三、使用Spark SQL cli


一、简介 

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.xmlcore-site.xmlhdfs-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