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

Hive 使用包含大约800个零件文件的配置单元表控制映射器,hive,mappers,Hive,Mappers,我有一个配置单元表,每天都会向其中添加数据。 因此,每天大约添加5个文件。 现在我们在这张桌子下面有800个零件文件 我遇到的问题是在任何地方加入或使用此表都会触发800个映射程序,因为映射程序与文件的数量成比例 但是我必须使用整个表来运行我的作业 有没有办法使用整个表,但不触发太多的映射器 文件如下所示 -rw-rw-r-- 3 XXXX hdfs 106610 2015-12-15 05:39 /apps/hive/warehouse/prod.db/TABLE1/00000

我有一个配置单元表,每天都会向其中添加数据。 因此,每天大约添加5个文件。 现在我们在这张桌子下面有800个零件文件

我遇到的问题是在任何地方加入或使用此表都会触发800个映射程序,因为映射程序与文件的数量成比例

但是我必须使用整个表来运行我的作业

有没有办法使用整个表,但不触发太多的映射器

文件如下所示

-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

我更愿意对表进行分区,以便将数据存储在分区目录中,无论何时查询,都只访问分区下的文件,使用分区列时在配置单元查询中触发的映射程序也是如此。

另一种选择是使用clusterby子句将数据分配到固定数量的带块目录中,从而减少查询时访问的目录和文件的数量