主页 > 人工智能  > 

Hive的文件合并

Hive的文件合并

背景:Flink数据写入到stage层,然后再入ods层,中间导致hive数据实时性不强,随后做优化,Flink之间以orc格式写入到hive

问题:单表日800亿数据量,产生过多的小文件,影响Impala查询

解决:对hive小文件进行合并,

ALTER TABLE lt_ipsy_xdr_temp PARTITION (day=20230829, hour=9,type=4) CONCATENATE;

目前大数据平台hdfs数据存储情况:

数据仓库中的表: 1.stg层是把flink应用程序写入的数据load进入的; 2.ods层表名称中包含ai的表是从mysql导入的;  /_SCRATCH0 这些目录是sqoop 把mysql数据导入hive时生成的临时目录,可以删除。 3.stg 和 ods 的 tb_bu_dc_monitor_day 是外部表,其他层的表都是内部表; 4.stg层是原始数据,没有经过压缩处理,ods及以后其他各层都是orc格式  

使用hive concatenate (外部表不可用,内部表可用,orc可用,分桶表不可用) 使用方式:

#1.设置文件最小大小(需要设置,否则合并操作可能会不理想): SET mapreduce.input.fileinputformat.split.maxsize=256 #对于非分区表 alter table A concatenate; #2.对于分区表 ALTER TABLE lt_ipsy_xdr_temp PARTITION (day=20230829, hour=9,type=4) CONCATENATE;

因为分桶表不适用,所以可以采用覆写的方式

INSERT OVERWRITE TABLE table 

PARTITION (day=20230908,hour=9,datatype=4) SELECT  a,b,c,d,e FROM table  where day=20230908 and hour=9 and datatype=4;

标签:

Hive的文件合并由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Hive的文件合并