赞
踩
需求: 一张300+字段,1亿数据量的表,去重并重新按照天分区 ,
(1)方案:直接全表去重并按照字段 动态分区
结果 : 失败,由于数据量和字段过多,全表去重(row_number over())和 动态分区 都消耗过多资源,根本无法运行成功
(2)方案: 1.全表去重到中间表
2.中间表动态分区至原表
结果:失败, 中间表运行成功使用15分钟,但是中间表动态分区至原表时,整个集群文件操作符飙升,导致集群hbase 节点也不停 掉,程序也报broken_pip 的错误,搞的大家很郁闷。冷静分析如下:原表全表去重之后没做任何处理,导致生成了1099个reduce文件(集群单job 最大redece 数量),而每个文件大约含有100个分区日期,这就导致了每个文件要生成100个小文件。一共要生成10万个文件,导致整个集群文件操作符沾满,进而影响集群和hbase
(3)最终方案。
1.全表去重到中间表 时 distribute by 分区字段,这样就可以 将相同分区的数据放到同一个文件中 用时 15 分钟
2.新处理过的中间表 动态分区至原表, 用时3分钟,问题完美解决
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。