0

我有一个配置单元表,每天都会向其中添加数据。因此,每天会添加大约 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
4

1 回答 1

0

我更喜欢对表进行分区,以便数据存储在分区目录中,并且每当查询时,仅访问分区下的文件,并且在使用该分区列时在配置单元查询中触发的映射器也是如此。

其他选项是使用 CLUSTER BY 子句对表进行存储,以将数据分配到固定编号。分桶目录并减少编号。查询时访问的目录和文件。

于 2016-04-15T06:00:49.113 回答