通常我们是在控制台输入命令:spark-sql进入命令行界面:
这是大多数人最喜欢用的,也最熟悉的界面。除了这种方式,还可以借助第三方的客户端来接入Spark SQL,常用的windows下图形客户端有:SQuirreL SQL Client、DbVisualizer和Oracle SQL Developer等。
那么这三个图形界面都是用的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命令一样,也可以加很多控制参数的。
启动之后可以看到:
顺便说一下,远程调用服务(RPC)和消息队列(Message Queue)对比:
RPC系统结构:Consumer <=> Provider
即:Consumer调用的Provider提供的服务。RPC是面向动作的请求响应模式。
MessageQueue系统结构:Sende <=> Queue <=> Receiver
即:Sender发送消息给Queue;Receiver从Queue拿到消息来处理。MQ是面向数据的生产者消费者模式。
主流RPC框架:
thrift(Facebook 开源的一个 RPC 框架)
dubbo(淘宝开源的基于TCP的RPC框架)
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的依赖包:$SPARK_HOME/jars/*,当然其中有用的仅仅是如下几个包
接下来再讲三个图形界面,最关键的就是导入上图这14个依赖包,就能成功连上spark。至于安装教程,网上很多,但是最关键的还是所依赖的包。它们本质上是以JDBC的方式远程连接spark sql,而spark sql继承自hive,所以连接方式和hive完全一样:
org.apache.hive.jdbc.HiveDriver
jdbc:hive2://master:10000
因此本方法同样适用于hive。
------完-----