【问题标题】:java.lang.NullPointerException when merging output files合并输出文件时出现 java.lang.NullPointerException
【发布时间】:2021-07-14 09:42:45
【问题描述】:

我有一个包含 3 个分区列的表

create table tn(
col1 string,
etc...
)
partitioned by (
time_key date,
region string,
city string
)
stored as orc
tblproperties ("orc.compress"="ZLIB");

城市分区可以有从几mb到几百mb。我正在尝试优化存储,以便将所有小文件合并为一个等于 128mb 块大小的文件,并相应地拆分更大的文件。

源表有 200 个文件,每个文件大约 150 mb。它没有分区。

我为此做了一个简单的插入语句。

INSERT INTO TABLE tn PARTITION (time_key, region, city) 
SELECT * FROM source_tn;

使用以下设置并得到此错误NullPointerException

set hive.merge.tezfiles=true;
set hive.merge.smallfiles.avgsize=128000000;
set hive.merge.size.per.task=128000000;
set hive.merge.orcfile.stripe.level=true;
set hive.auto.convert.join=false;

如果我在没有这些设置的情况下尝试插入,则效果很好,因此数据没有任何问题。这种情况下的问题是每个city 子分区包含大约200 个文件。 time_key 分区中的文件总数达到 30-40 千。

有什么问题,我该怎么办?

我正在使用 hive tez。

【问题讨论】:

    标签: hive orc apache-tez


    【解决方案1】:

    将此设置为 false 有帮助。

    set hive.merge.orcfile.stripe.level=false;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-21
      • 2020-02-27
      • 2021-12-02
      • 2018-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多