thriftserver和spark-shell/spark sql的区别:
1.每次启动一个spark-shell/spark sql它都是一个spark application,每次都要重新启动申请资源。
2.用thriftserver,无论启动多少个客户端(beeline),只要是连在一个thriftserver上,它都是一个spark application,后面不用在重新申请资源。能数据共享(上一个beeline做了缓存,下一个beeline能用)
3.用thriftserver,在UI中能直接看到sql的执行计划,方便优化。
一.启动thriftserver 默认端口在10000 可修改
cd /app/spark/spark-2.2.0-bin-2.9.0
./sbin/start-thriftserver.sh --master local[3] --jars /app/mysql-connector-java-5.1.46.jar
查看是否启动成功jps -m
查看UI界面 node1:4040
二.通过客户端beeline来连接
cd /app/spark/spark-2.2.0-bin-2.9.0
./bin/beeline -u jdbc:hive2://localhost:10000 -n root
-n 是当前登录机器的用户名。
这里也可以直接访问到hive中的表。
执行一个左连接查询语句,UI中会显示该语句的执行计划。(调优常用)
select * from dept d left join emp e on d.manager = e.name;
这个页面能看到当前有哪个客户端连接,每个客户端执行了一些什么SQL命令: