hive:合并配置设置不起作用

pepwfjgg  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(544)

在Hive2.2.0上,我使用查询从另一个大小为1.34GB的源表填充orc表

  1. INSERT INTO TABLE TableOrc SELECT * FROM Table; ---- (1)

查询将创建包含6个orc文件的tableorc表,这些文件比256mb的块大小小得多。

  1. -- FolderList1
  2. -rwxr-xr-x user1 supergroup 65.01 MB 1/1/2016, 10:14:21 AM 1 256 MB 000000_0
  3. -rwxr-xr-x user1 supergroup 67.48 MB 1/1/2016, 10:14:55 AM 1 256 MB 000001_0
  4. -rwxr-xr-x user1 supergroup 66.3 MB 1/1/2016, 10:15:18 AM 1 256 MB 000002_0
  5. -rwxr-xr-x user1 supergroup 63.83 MB 1/1/2016, 10:15:41 AM 1 256 MB 000003_0
  6. -rwxr-xr-x user1 supergroup 69.11 MB 1/1/2016, 10:15:57 AM 1 256 MB 000004_0
  7. -rwxr-xr-x user1 supergroup 23.83 MB 1/1/2016, 10:16:02 AM 1 256 MB 000005_0

为了潜在地消除这种情况,下面的配置将按照其他多个stackoverflow用户的建议使用,tableorc将被截断,并再次执行查询(1)。

  1. SET hive.merge.mapfiles=true;
  2. SET hive.merge.mapredfiles=true;
  3. SET hive.merge.size.per.task=128000000; -- (128MB)
  4. SET hive.merge.smallfiles.avgsize=128000000; -- (128MB)

这一次的结果是一个tableorc有3个orc文件,日志显示3个额外的mr作业

  1. -- FolderList2
  2. -rwxr-xr-x user1 supergroup 132.49 MB 1/1/2016, 11:47:01 PM 1 256 MB 000000_0
  3. -rwxr-xr-x user1 supergroup 130.12 MB 1/1/2016, 11:47:02 PM 1 256 MB 000001_0
  4. -rwxr-xr-x user1 supergroup 92.93 MB 1/1/2016, 11:47:03 PM 1 256 MB 000002_0

我的问题是,当配置设置为使用128mb时,为什么orc文件大小大于128mb(https://cwiki.apache.org/confluence/display/hive/configuration+properties)

  1. hive.merge.size.per.task
  2. Default Value: 256000000
  3. Added In: Hive 0.4.0
  4. Size of merged files at the end of the job.
tjvv9vkg

tjvv9vkg1#

您的初始平均文件大小小于 hive.merge.smallfiles.avgsize ,这就是合并任务开始合并它们的原因。前两个文件合并65.01 mb+67.48 mb=132.49 mb这比 hive.merge.size.per.task 这就是为什么合并任务将停止以将此结果文件与更多文件合并。它不会被拆分为正好128m。它的工作方法很简单。

相关问题