zoukankan      html  css  js  c++  java
  • org.apache.hadoop.hive.ql.metadata.HiveException: Internal Error: cannot generate all output rows for a Partition解决

    自己在路径访问明细表开发时,写的sql如下

    SELECT
     guid,
     sessionid,
     event['url'] as page,
     `timestamp` as ts,
     row_number() over(PARTITION BY guid,sessionid ORDER BY `timestamp`) AS stepno,
     lag(event['url'],1,null) over(partition by guid,sessionid order by `timestamp`) AS referral,
     lead(`timestamp`,1,null) over(partition by guid,sessionid order by `timestamp`) -`timestamp` AS stay_time 
    FROM DWD_APL_TFC_DTL WHERE dt='2020-05-07'
    limit 10;

    在hive中执行时,一直报错,查看hive日志,其报如下错误

     通过查看其它的日志内容,发现map端是没有问题的,再结合上面org.apache.hadoop.hive.ql.metadata.HiveException: Internal Error: cannot generate all output rows for a Partition问题,猜测应该是数据倾斜的问题,通过观察自己的数据,发现取出的

    event['url']会存在null的情况,为了证实确实是null值过多造成数据倾斜的情况,于是利用sql语句去查询确实是null值过多,被分配到一个分区。找到问题所在就好办了,由于业务允许,自己直接将值为null的值过滤掉,然后就没报错了。

  • 相关阅读:
    libZPlay 音频编码解码器库
    C# PropertyGrid控件
    .netGDI+(转)
    (转)JITComplier、NGen.exe及.NET Native
    c# 特性/属性(Attribute) 以及使用反射查看自定义特性
    Fluent NHibernate系列文章
    Hibernate工作原理
    Orchard核心机制
    NHibernate和 FluentNHibernate
    极限编程之TDD
  • 原文地址:https://www.cnblogs.com/jj1106/p/12911668.html
Copyright © 2011-2022 走看看