美文网首页
Hive to SparkSQL 简单指南

Hive to SparkSQL 简单指南

作者: 六层楼那么高 | 来源:发表于2022-02-09 10:53 被阅读0次

    Hive 转 SparkSQL

    1. SparkSQL vs Hive

    • 性能差距:SparkSQL 比 Hive 快很多
    • 稳定性差距: 负载高时 hiveserver2 稳定性一般

    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

    相关文章

      网友评论

          本文标题:Hive to SparkSQL 简单指南

          本文链接:https://www.haomeiwen.com/subject/dkdwkrtx.html