使用包含大约800个零件文件的配置单元表控制Map器

hof1towb  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(593)

我有一个配置单元表,每天都会向其中添加数据。因此,每天大约添加5个文件。现在我们在这张table下面有800个零件文件。
我的问题是在任何地方加入或使用这个表都会触发800个Map器,因为Map器与文件的数量成比例。
但是我必须用整个table来做我的工作。
有没有办法使用整个表,但不触发太多的Map器?
文件如下所示

-rw-rw-r--   3 XXXX hdfs     106610 2015-12-15 05:39   /apps/hive/warehouse/prod.db/TABLE1/000000_0_copy_1.deflate
-rw-rw-r--   3 XXXX hdfs     106602 2015-12-23 12:31 /apps/hive/warehouse/prod.db/TABLE1/000000_0_copy_10.deflate
-rw-rw-r--   3 XXXX hdfs     157686 2016-03-06 05:20 /apps/hive/warehouse/prod.db/TABLE1/000000_0_copy_100.deflate
-rw-rw-r--   3 XXXX hdfs     163580 2016-03-07 05:22 /apps/hive/warehouse/prod.db/TABLE1/000000_0_copy_101.deflate
kognpnkq

kognpnkq1#

我更喜欢对表进行分区,这样数据就存储在分区目录中,每当被查询时,只有分区下的文件被访问,当使用分区列时,hive查询中触发的Map程序也被访问。
另一种选择是使用cluster by子句将表存储到固定数量的存储块目录中,并减少查询时访问的目录和文件的数量。

相关问题