Hive to SparkSQL 简单指南

2022-02-09  本文已影响0人  六层楼那么高

Hive 转 SparkSQL

1. SparkSQL vs Hive

2.如何改造

2.1 hive cli 场景

典型场景:使用 shell 脚本通过 hive 命令执行 sql 代码的
Hive 写法:

hive -v -e "select * from table limti 10" 
hive -f xxx.sql
or
echo "select * from table limti 10" | hive

SparkSQL 写法:

spark-sql -v -e "select * from table limti 10"
spark-sql -f xxx.sql

变量写法
spark-sql -d date='20181010' -f xxx.sql

select * from xxx where id = ${date};

配置 spark 参数

spark-sql --conf spark.executor.memory=12g -e "select * from table limti 10"

2.2 hiveserver2 场景(beeline 等)

典型场景:通过 hivesever2 提交的任务,例如 beeline 或者 jdbc 提交的。
Hive写法:
典型的连接字符串如下:

jdbc:hive2://x1:2181,x2:2181,x3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2

SparkSQL 写法:

只需要更换连接串:

jdbc:hive2://x1:2181,x2:2181,x3:2181/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_spark2;

2.3 Hive 常见写法转换

hive: 创建 temporay table

hive -e "create temporary table tmpdb.table1 as select xxx"

SparkSQL:
在 tmp 库中创建物理表:

spark-sql -e "create table tmpdb.table1 if not exists as select xxx"

好处:开发调试阶段或者线上重跑,这些中间表不用重复计算,避免频繁浪费计算资源

2.4 迁移验证

抽样分区数据,使用 Hive SparkSQL 都跑一次,比对输出结果是否一致。

3. 即时查询场景

「即时查询」(Zeppelin) : %spark.sql

上一篇 下一篇

猜你喜欢

热点阅读