[hive]hive结果表中每500万条记录生成一个文件(Kbase可用)

 前提:原始表和目标表的行数一致(这里DWS的一行转换成ADS的多行,但是多行是一个REC记录)

drop table ads.ads_distinct_zhibiao_nian_diqu;
create table ads.ads_distinct_zhibiao_nian_diqu
(
    top string,
    years string,
    zheng_shi_indicator string,
    zheng_shi_indicator_old string,
    di_qu_dai_ma string,
    di_qu_deng_ji string,
    di_yu_lei_xing_dai_ma string,
    reportgrouper string,
    reportgrouper_old string,
    zheng_shi_value string,
    zheng_shi_unit string,
    zheng_shi_value_old string,
    zheng_shi_unit_old string,
    wen_ben_wen_jian_ming string,
    nian_jian_zhong_wen_ming string,
    nian_jian_nian_fen string,
    tiao_mu_ti_ming string,
    bian_hao string,
    ru_ku_biao_shi string,
    yin_shua_ye_ma string,
    fu_qin_jie_dian string,
    guo_biao_di_yu_dai_ma string
)
row format delimited
fields terminated by "\n"
;


insert overwrite table ads.ads_distinct_zhibiao_nian_diqu
select
    "<REC>" as top,
    concat("<年份>=",years) years ,
    concat("<正式指标>=",zheng_shi_indicator) zheng_shi_indicator,
    concat("<正式指标_OLD>=",zheng_shi_indicator_old) zheng_shi_indicator_old,
    concat("<地区代码>=",di_qu_dai_ma) di_qu_dai_ma,
    concat("<地区等级>=",di_qu_deng_ji) di_qu_deng_ji,
    concat("<地域类型代码>=",di_yu_lei_xing_dai_ma) di_yu_lei_xing_dai_ma,
    concat("<REPORTGROUPER>=",reportgrouper) reportgrouper,
    concat("<REPORTGROUPER_OLD>=",reportgrouper_old) reportgrouper_old,
    concat("<显示数值>=",zheng_shi_value) zheng_shi_value,
    concat("<显示单位>=",zheng_shi_unit) zheng_shi_unit,
    concat("<显示数值_OLD>=",zheng_shi_value_old) zheng_shi_value_old,
    concat("<显示单位_OLD>=",zheng_shi_unit_old) zheng_shi_unit_old,
    concat("<文件名X>=",wen_ben_wen_jian_ming) wen_ben_wen_jian_ming,
    concat("<年鉴中文名X>=",nian_jian_zhong_wen_ming) nian_jian_zhong_wen_ming,
    concat("<年鉴年份X>=",nian_jian_nian_fen) nian_jian_nian_fen,
    concat("<条目题名X>=",tiao_mu_ti_ming) tiao_mu_ti_ming,
    concat("<编号X>=",bian_hao) bian_hao,
    concat("<入库标识X>=", ru_ku_biao_shi)  ru_ku_biao_shi,
    concat("<印刷页码X>=",yin_shua_ye_ma) yin_shua_ye_ma,
    concat("<父亲节点X>=",fu_qin_jie_dian) fu_qin_jie_dian,
    concat("<国标地域代码>=",guo_biao_di_yu_dai_ma) guo_biao_di_yu_dai_ma
from
    dws.dws_distinct_zhibiao_nian_diqu
;

 查看该dws表,并选择一个文件

计算这个文件的条数 

也就是说276m的文件为82万条,那可以计算出500万条的大小为,400万的大小为

(因为我们需要的结果介于400万条到500万条之间)

276M*500/82=1682M

276M*400/82=1346M

通过设置读入的切片的大小可以达到想要的结果,再运行前面的sql即可

set mapred.max.split.size=1682000000;
--切片的最大值
set mapred.min.split.size=1346000000;
--切片的最小值
set mapred.min.split.size.per.node=1346000000;
--每个节点切片的最小值
set mapred.min.split.size.per.rack=1346000000;
--每个机架切片的最小值

会将所有切片合并或切割成咱们指定的大小 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值