• 【hive】hive表很大的时候查询报错问题


      线上hive使用环境出现了一个奇怪的问题,跑一段时间就报如下错误:

    FAILED: SemanticException MetaException(message:Exception thrown when executing query : SELECT A0.PART_NAME,A0.PART_NAME AS NUCORDER0 FROM PARTITIONS A0 LEFT OUTER JOIN TBLS B0 ON A0.TBL_ID = B0.TBL_ID LEFT OUTER JOIN DBS C0 ON B0.DB_ID = C0.DB_ID WHERE C0.`NAME` = ? AND B0.TBL_NAME = ? ORDER BY NUCORDER0)

    然后,等待一段时间就又可能执行了。

         经过逐步问题定位(拆分各个查询),发现是对一个特大表(每小时大概80G左右数据,高峰时段更大)的查询引起的。在查询中有如下的语句:

    where (cast(if(length(hour)<2, concat(day,'''0''',hour), concat(day,hour)) as INT) between 2017101006 and 2017101017

        其目的是想实现滑动时间窗口几个小时的数据查询,由于有跨天的存在,因此写的和上边一样。但是这样写对于特大表实际上是不行的,没有用到分区。

    问题找到了,解决方案如下:

    1.针对查询要求,重新设计表,按照天和小时一起来分区,新的分区day_time。

    2.用新的表直接查询的时候可以使用day_time between  2017101006 and 2017101017 来查询

    3.后续观察,发现不报如上错误了。

  • 相关阅读:
    温故而知新汇总贴
    温故而知新—heap
    温故而知新--hashtable
    温故而知新-set
    温故而知新——map
    温故而知新----stack
    找工作的时候我们改准备些什么
    js瀑布流布局
    js小游戏---智力游戏
    原生js完成拼图小游戏
  • 原文地址:https://www.cnblogs.com/accipiter/p/7685919.html
Copyright © 2020-2023  润新知