Hive 合并输出文件时的java.lang.NullPointerException

Hive 合并输出文件时的java.lang.NullPointerException,hive,orc,apache-tez,Hive,Orc,Apache Tez,我有一个有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的文件,并相应地分割

我有一个有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语句

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个文件。时间键中的文件总数达到3-4万个

有什么问题,我能做什么


我正在使用hive tez。

将此设置为false有帮助

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