Hive | 笔记总结20220708v3

笔记总结20220708v3

  • Hive 模式区分场景应用:
    • Hive 本地模式与Spark模式的区分使用:
    • 小结
  • union all的应用场景:
    • 多表数据合并到同一张表:
    • 优化场景:
    • 小结
  • 多级分区表,分区字段比较多的情况,可能会出现return code 2 的报错
    • 解决办法:
    • 小结

Hive 模式区分场景应用:

Hive 本地模式与Spark模式的区分使用:

  • 1.一些小表的查询(group by /count /sum /max /min 等)可以使用本地模式进行,local本地模式直接读取HDFS的路径文件内容执行MapperReduce,在资源吃紧的时候,可以快速查询
  • 2.Spark模式用于跑一些大表的关联/大表取数方面,有很好的效果

小结

理解Hive的原理和在Hadoop中的生态有助于我们更好的去使用Hive

union all的应用场景:

多表数据合并到同一张表:

常用的调参配置:
set hive.exec.parallel=true;
set hive.exec.parallel.thread.number=16;(number数量视集群而定)

优化场景:

  • 未开启并行模式时,每个union all的查询是串行执行的;当并行模式开启时,每个union all查询都会一起执行,提高效率,经典的空间换时间。
  • 值得一提的是,需要注意union all不宜过多,5个以上的union all,建议改写成insert into拆分执行,因为5个以上的union all并行效率不比多个insert into高。

小结

union all的使用场景在实际生产中非常常用,但是使用不当,很容易出现报错甚至卡顿,因此需要谨慎union all的表个数,适当的开启并行,能够有效的降本增效。

多级分区表,分区字段比较多的情况,可能会出现return code 2 的报错

如图,日志报错信息如下时,就是由于分区字段过多导致的code 2报错。
Hive | 笔记总结20220708v3_第1张图片

解决办法:

1.先count(distinct)一下二级分区字段数量
2.添加参数配置:set hive.exec.max.dynamic.partitions.pernode=500;(适当设置大一些)

小结

多级分区表,可以有效的提高查询效率,但是如果二级以上的分区字段过多,如大于1000,则会出现报错,因为默认的partitions不大,需要手动调参。


我思故我在,做一个践行的思考者。

你可能感兴趣的:(Hive,hive,spark,大数据)