栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

[hive]hive结果表中每500万条记录生成一个文件

[hive]hive结果表中每500万条记录生成一个文件

一.实现

没设置之前的结果为22个 

先测试运行一下,看结果表中一条记录是多大

 751*500万=3755000000 kb

即生成的结果文件一个应为1655000000 kb

set hive.merge.mapfiles=true;
--对mr进行设置
set hive.merge.mapfiles=true;
--only-map进行设置
set hive.merge.smallfiles.avgsize=1024000000;
--1g
set hive.merge.size.per.task=3755000000;
--3755m

create table if not exists 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
    "" 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,
    concat("=",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
;

 结果

因为是用一条记录的大小计算500条记录的总大小,如果其中有些记录的大小<我门查看的那条记录的大小,则跑出的结果会大于500万。建议是取多条记录,计算他们的平均值。

二.知识点

查询官网

Configuration Properties - Apache Hive - Apache Software Foundation

1.有三个对reduce task设定的参数
mapred.reduce.tasks
强制指定reduce个数
默认值:-1
添加于:Hive 0.1.0
通过将此属性设置为 -1,Hive 将自动计算出reduce task的数量。

hive.exec.reducers.bytes.per.reducer
每个reduce task处理的最大数据量
Hive 0.14.0 及更高版本中为256,000,000 即256 MB
也就是说,如果输入大小为 1 GB,则将使用 4 个 reducer。

hive.exec.reducers.max
每个job最大的reduce task个数
默认值:1009 在 Hive 0.14.0 及更高版本中
每个job 的最大reducer 数量。

对上述3个参数进行设定

set mapred.reduce.tasks=1;
set hive.exec.reducers.max=1
set hive.exec.reducers.bytes.per.reducer=10240000000(10g)

drop table test.a
create table test.a as
select * from test.test_distinct;

无效。

无效原因:

insert t1 select * from t2

create table t1 as select * from t2

这两种方式都不走mr,所以没用

2.使用合并小文件参数
1.hive.merge.smallfiles.avgsize
默认值:16000000(16m)
添加于:Hive 0.5.0
当作业的平均输出文件大小小于此数字时,Hive 将启动额外的 map-reduce 作业以将输出文件合并为更大的文件。

2.hive.merge.mapfiles   
为 true,则[1.]对 map-only 作业执行此操作;

3.hive.merge.mapredfiles
为 true,则对 map-reduce 作业执行此操作。

4.hive.merge.size.per.task
默认值:256000000(256m)
添加于:Hive 0.4.0
合并后文件的大小。
1.仅设置合并后的文件大小
set hive.merge.mapfiles=true;
set hive.merge.size.per.task=2048000000;
--2g

drop table test.b;
create table test.b as
select * from test.a;

无效! 

2.设置合并多大的文件和合并后文件大小
set hive.merge.mapfiles=true;
set hive.merge.smallfiles.avgsize=2048000000;
--2g
set hive.merge.size.per.task=2048000000;
--2g

drop table test.b;
create table test.b as
select * from test.a;

有效!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/774244.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号