DataGrip编写SQL语句操作Spark(Spark ThriftServer)
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文件