合并输出文件时出现java.lang.nullpointerexception

ws51t4hk  于 2021-07-13  发布在  Hive
关注(0)|答案(1)|浏览(555)

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

  1. create table tn(
  2. col1 string,
  3. etc...
  4. )
  5. partitioned by (
  6. time_key date,
  7. region string,
  8. city string
  9. )
  10. stored as orc
  11. tblproperties ("orc.compress"="ZLIB");

城市分区的大小可以从几mb到几百mb不等。我正在尝试优化存储,以便将所有小文件合并为一个块大小为128mb的文件,并相应地拆分较大的文件。
源表有200个文件,每个文件大约150 mb。它没有分区。
我做了一个简单的插入语句。

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

并获取此错误 NullPointerException .

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

如果我在没有这些设置的情况下尝试插入,结果会很好,因此数据没有任何问题。这种情况下的问题是 city 子分区包含大约200个文件。中的文件总数 time_key 分部达到3-4万。
有什么问题,我能做什么?
我用的是Hive特兹。

9rbhqvlz

9rbhqvlz1#

将此设置为false会有所帮助。

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

相关问题