大数据学习(32)hive优化方法总结

&&大数据学习&&
系列专栏: 哲学语录: 承认自己的无知,乃是开启智慧的大门
如果觉得博主的文章还不错的话,请点赞+收藏⭐️+留言支持一下博主哦

Hive优化主要从以下几个方面考虑:

  1. 数据倾斜:对于数据倾斜问题,可以尝试进行数据重分布,将倾斜的数据进行重新整理。也可以通过多线程处理和数据分箱等技术进行优化。
  2. 减少job数:对于大量的小任务,可以尝试进行任务的合并,减少任务的启动次数,从而提高效率。
  3. 合理设置map和reduce的task个数:根据实际的数据量和计算资源,合理设置map和reduce的task个数,可以有效提升性能。
  4. 对小文件进行合并:小文件过多会增加IO开销,可以考虑对小文件进行合并,提高处理效率。
  5. map阶段的优化:可以通过调整数据的分割单元的大小来优化map阶段。例如,通过调整mapred.max.split.size参数,可以减小map的数量。
  6. reduce阶段的优化:选择合适的reduce task的数量,可以通过设置mapred.reduce.task参数来进行指定。
  7. 使用本地模式:当输入数据量较小的时候,可以使用本地模式,避免MapReduce的启动和切换开销。可以通过设置hive.exec.mode.local.auto=true来实现。
  8. 并行执行:在执行SQL的时候,可以将任务拆分成多个步骤,并行执行,提高效率。
  9. 严格模式:在严格模式下,Hive会对SQL执行有更高的要求,这样可以避免一些潜在的问题。
  10. JVM重用:在Hadoop2中,可以通过开启Uber模式来实现JVM重用,减少启动开销。
  11. 推测执行:Hadoop默认开启了推测执行功能,当某个任务运行慢的时候,会启动一个备份任务。在某些情况下,最好关闭这个功能。
  12. JOIN操作优化:对于JOIN操作,可以采用map端JOIN或者bucketed JOIN等方式进行优化。当有多个表进行JOIN操作时,可以采用笛卡尔积的方式,然后过滤出需要的行。
  13. 利用并行性:如果一个查询可以在多个partition上并行执行,那么就可以通过增加更多的partition来提高查询的并行度。
  14. 使用更快的文件格式:例如ORC或者Parquet等列式存储格式,相对于传统的文本文件或者CSV文件,它们可以提供更快的查询速度。
  15. 调整Hive的配置参数:例如设置hive.tez.container.size和hive.tez.java.opts等参数,可以调整任务使用的内存和CPU等资源,从而提高性能。

上述很多方法在博客中都有详细介绍,不过还有一些,JVM重用,使用本地模式等没有详细介绍过,等之后有时间再深入了解一下和大家再介绍使用。

你可能感兴趣的:(大数据,学习,hive)