文章目录
1.Spark ThriftServer
Spark ThriftServer 相当于一个持续性的Spark on Hive集成模式,可以启动并监听在10000端口,持续对外提供服务,可以使用数据库客户端工具或代码连接上来,操作Spark
bin/spark-sql 脚本,类似于Hive的 bin/hive脚本
(内部内置了hive的hiveServer2服务或Spark执行引擎,每次脚本执行,都会启动内内置的hiveServer2或Spark引擎),
一旦退出客户端,服务端也就停止。
而, Spark的分布式执行引擎,也即Spark ThriftServer服务,是一个持续性的Spark on Hive集成模式,一旦启动,持续对外提供服务。
可以使用DagaGrip、Pycharm、Navicat等数据库客户端产品,或代码JDBC方式、或Beeline脚本,连接Spark ThriftServer服务,直接编写SQL语句,操作Spark。
2.启动 Spark ThriftServer
SPARK_HOME=/export/server/spark
$SPARK_HOME/sbin/start-thriftserver.sh \
--hiveconf hive.server2.thrift.port=10000 \
--hiveconf hive.server2.thrift.bind.host=node1 \
--master local[2]
local[2]:指定线程并行度,一般是CPU核数2-3倍
master local, 每一条SQL在Local本地运行
master yarn, 每一条SQL在Yarn集群中运行
3.Beeline方式连接
cd /export/server/spark/bin
./beeline
输入:
!connect jdbc:hive2://node1:10000
4.DataGrip方式连接
单击"+"号,或右键单击 -> 选择数据元 -> 选中 Other -> 选中 Apache Spark
新建数据源,填写Spark ThriftServer机器地址、监听端口、访问用户
添加驱动
配置成功,console窗口就可以直接写SQL
5. 代码方式
spark = SparkSession.builder \
.appName('spark on hive') \
.master('local[*]') \
.config('spark.sql.shuffle.partitions', 4) \
.config('hive.metastore.uris', 'thrift://node1:9083') \
.config('spark.sql.warehouse.dir', 'hdfs://node1:8020/user/hive/warehouse') \
.enableHiveSupport() \
.getOrCreate()
# 2. 执行相关的操作
spark.sql("select * from pyspark_hive.stu; ").show()
6. SparkSQL运行方式
thrift server服务出现, 只是提供了新的方式来书写SQL: .
beeline方式 或者 图形化界面方式
适用于: 纯 SQL的开发工作, 开发后, 形成一个个的SQL的脚本, 在部署上线的时候, 采用spark-sql提交运行
.
./spark-sql -f 脚本
./spark-sql -e 'SQL语句‘
./spark-submit py文件或scala文件