• 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的值过滤掉,然后就没报错了。

  • 相关阅读:
    git log中文乱码问题
    局域网映射公网IP
    Android Studio 的一些配置
    Android Studio的安装
    adb的安装
    python的安装
    CentOS 7 上部署 java web 项目
    SQL——SQL语句总结(8)
    SQL——SQL语句总结(7)
    SQL——SQL语句总结(6)
  • 原文地址:https://www.cnblogs.com/jj1106/p/12911668.html
Copyright © 2020-2023  润新知