我有一个包含呼叫数据记录(CDR)的配置单元表。我把table按电话号码分开,在约会时扣上扣子。现在,当我在配置单元中插入数据时,过时的调用日期正在我的存储桶中创建小文件,这会导致名称节点元数据增加和性能降低。有没有办法把这些小文件合并成一个。
piah890a1#
使用配置单元插入表时控制文件大小的一种方法是设置以下参数:
set hive.merge.tezfiles=true;set hive.merge.mapfiles=true;set hive.merge.mapredfiles=true;set hive.merge.size.per.task=128000000;set hive.merge.smallfiles.avgsize=128000000;
set hive.merge.tezfiles=true;
set hive.merge.mapfiles=true;
set hive.merge.mapredfiles=true;
set hive.merge.size.per.task=128000000;
set hive.merge.smallfiles.avgsize=128000000;
这将适用于m/r和tez引擎,并将确保创建的所有文件的大小都在128mb或以下(您可以根据您的用例更改大小)。附加阅读:https://community.cloudera.com/t5/community-articles/orc-creation-best-practices/ta-p/248963).合并表文件的最简单方法是重新生成表,同时在运行时运行上述配置单元命令:
CREATE TABLE new_table LIKE old_table;INSERT INTO new_table select * from old_table;
CREATE TABLE new_table LIKE old_table;
INSERT INTO new_table select * from old_table;
在您的情况下,对于orc表,您可以在创建后连接文件:
ALTER TABLE table_name [PARTITION (partition_key = 'partition_value')] CONCATENATE;
1条答案
按热度按时间piah890a1#
使用配置单元插入表时控制文件大小的一种方法是设置以下参数:
这将适用于m/r和tez引擎,并将确保创建的所有文件的大小都在128mb或以下(您可以根据您的用例更改大小)。附加阅读:https://community.cloudera.com/t5/community-articles/orc-creation-best-practices/ta-p/248963).
合并表文件的最简单方法是重新生成表,同时在运行时运行上述配置单元命令:
在您的情况下,对于orc表,您可以在创建后连接文件: