Spark SQL的ThriftServer服务和图形化客户端

时间:2024-04-07 11:00:25

通常我们是在控制台输入命令:spark-sql进入命令行界面:

Spark SQL的ThriftServer服务和图形化客户端

这是大多数人最喜欢用的,也最熟悉的界面。除了这种方式,还可以借助第三方的客户端来接入Spark SQL,常用的windows下图形客户端有:SQuirreL SQL ClientDbVisualizerOracle SQL Developer等。

Spark SQL的ThriftServer服务和图形化客户端


那么这三个图形界面都是用的ThriftServer作为服务端,而客户端的SQL请求实际是通过它中转给Spark集群的。ThriftServer是主流的RPC框架,spark中已经嵌入了它,所以只需要启动它即可。

sh $SPARK_HOME/sbin/start-thriftserver.sh     

  --本地运行

sh $SPARK_HOME/sbin/start-thriftserver.sh  

--masterspark://lyy1:7077 

 --集群运行

spark-sql命令一样,也可以加很多控制参数的。

Spark SQL的ThriftServer服务和图形化客户端

启动之后可以看到:

Spark SQL的ThriftServer服务和图形化客户端


顺便说一下远程调用服务(RPC)和消息队列(Message Queue)对比

RPC系统结构:Consumer <=>  Provider

即:Consumer调用的Provider提供的服务。RPC是面向动作的请求响应模式。

 

MessageQueue系统结构:Sende <=>  Queue  <=> Receiver

即:Sender发送消息给QueueReceiverQueue拿到消息来处理。MQ是面向数据的生产者消费者模式。

 

主流RPC框架:

thrift(Facebook 开源的一个 RPC 框架)

dubbo(淘宝开源的基于TCPRPC框架)

RMI(JAVA自带的远程方法调用工具)

 

主流MQ框架:

ZeroMQ

Jafka/Kafka

Redis

 

    继续说ThriftServer,由于Spark SQL中自带了thrift,所以可以很方便的通过thrift来查询SQL语句。

在命令行下通过beeline连接ThriftServer

$SPARK_HOME/bin/beeline

进入后连接命令:

!connect jdbc:hive2://master:10000

Enter username for jdbc:hive2:// master:10000:aaa

Enter password for jdbc:hive2:// master:10000:***

然后就连上了SparkSQL,与Spark SQL客户端是一样的,但是速度慢一点。

 

同时也可以通过代码连接ThriftServer,代码如下,直接运行即可。

Spark SQL的ThriftServer服务和图形化客户端

    但是需要注意的是运行改程序所需的依赖包很容易出错,最简单的方式是使用spark的依赖包:$SPARK_HOME/jars/*,当然其中有用的仅仅是如下几个包

Spark SQL的ThriftServer服务和图形化客户端

    接下来再讲三个图形界面,最关键的就是导入上图这14个依赖包,就能成功连上spark。至于安装教程,网上很多,但是最关键的还是所依赖的包。它们本质上是以JDBC的方式远程连接spark sql,而spark sql继承自hive,所以连接方式和hive完全一样:

org.apache.hive.jdbc.HiveDriver

jdbc:hive2://master:10000

因此本方法同样适用于hive。

------完-----