• 2020-09-11:Hive的优化策略有哪些?


    福哥答案2020-09-11:

    [Hive调优及优化的12种方式](https://zhuanlan.zhihu.com/p/80718835?utm_source=qq)
    1.请慎重使用COUNT(DISTINCT col)。可以考虑使用Group By 或者 ROW_NUMBER() OVER(PARTITION BY col)方式代替COUNT(DISTINCT col)。
    2.小文件会造成资源的多度占用以及影响查询效率。在数据源头HDFS中控制小文件产生的个数。
    3.请慎重使用SELECT *。在查询数据表时,指定所需的待查字段名,而非使用 * 号。
    4.不要在表关联后面加WHERE条件。采用谓词下推的技术,提早进行过滤有可能减少必须在数据库分区之间传递的数据量。
    5.处理掉字段中带有空值的数据。
    6.设置并行执行任务数。
    7.设置合理的Reducer个数。
    8.JVM重用。
    9.为什么任务执行的时候只有一个reduce?避免使用全局排序,可以使用sort by进行局部排序。使用GROUP BY进行统计,不会进行全局排序。
    10.选择使用Tez引擎。
    11.选择使用本地模式。
    12.选择使用严格模式。

    [Hive 任务优化策略-整合,持续更新。](https://zhuanlan.zhihu.com/p/90953307)
    1、好的模型设计事半功倍 。
    2、解决数据倾斜问题 。
    3、减少 job 数 。
    4、设置合理的 MapReduce 的 task 数,能有效提升性能。(比如,10w+级别的计算,用 160个 reduce,那是相当的浪费,1 个足够) 。
    5、了解数据分布,自己动手解决数据倾斜问题是个不错的选择。这是通用的算法优化,但算法优化有时不能适应特定业务背景,开发人员了解业务,了解数据,可以通过业务逻辑精 确有效的解决数据倾斜问题 。
    6、数据量较大的情况下,慎用 count(distinct),group by 容易产生倾斜问题 。
    7、对小文件进行合并,是行之有效的提高调度效率的方法,假如所有的作业设置合理的文 件数,对云梯的整体调度效率也会产生积极的正向影响 。
    8、优化时把握整体,单个作业最优不如整体最优。

  • 相关阅读:
    一道编程面试题
    AtCoder Grand Contest 016 B
    AtCoder Regular Contest 076 D
    Codeforces Round #419 (Div. 2) B. Karen and Coffee
    2017 计蒜之道 复赛 Windows画图+百度地图导航
    Codeforces Round #418 (Div. 2) B. An express train to reveries
    棠梨煎雪
    Bits And Pieces
    Let Them Slide
    TeaTree
  • 原文地址:https://www.cnblogs.com/waitmoon/p/13654213.html
Copyright © 2020-2023  润新知