快捷搜索: 王者荣耀 脱发

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文件

经验分享 程序员 微信小程序 职场和发展