hive优化

  1. 大表拆小表
    灵活运用临时表、分区表、外部表、桶表;

  2. sql语句
    对于复杂的sql语句 分解为多个简单sql语句;
    join语句先过滤,再关联

  3. 合理设置map和reduce的个数
    怎么设置map的个数: 一个分片就是一个块,一个maptask
    源码里面有FileInputFormat类splitsize方法
    Math.max(min_size,Math.min(max_size,block_size));
    min_size默认参数值是0M
    max_size默认参数值是256M
    block_size —> 128M
    设置max_size和min_size
    FileInputFormat.setMaxInputSplitSize(job,size)
    FileInputFormat.setMinInputSplitSize(job,size)

    reduce数量:默认的是一个
    在hive:set mapreduce.job.reduce

  4. 开启并行执行
    hive.exec.parallel=true

    设置同时运行的线程数,默认是8个
    hive.exec.parallel.thread.number=8

  5. jvm重用
    一个job启用一个jvm,共用jvm
    mapreduce.job.jvm.numtasks 默认是1个,一般可以设置为3或5 ,节省资源

  6. 推测执行
    比如:运行十个map和十个reduce任务 --》九个都执行完毕了,有一个reduce还没结束
    mapreduce会重新开启一个跟这个一模一样的任务,两个相同的任务去完成同样一件事情,谁先完成那么另一个就会
    被kill掉

    缺点:会消耗资源,一般不建议开启,有可能数据重复写入,造成异常

  7. hive.exec.mode.local.auto 默认是不开启的
    速度上会很快

    限制:job的输入数据不能大于128M,map个数不能超过4个,reduce的个数不能超过一个

  8. hive本地模式
    hive的压缩设置:
    普通:可以建一个源表,然后再创建新表,新表的数据来源于源表

  9. hive压缩设置
    配置map:

    hive.exec.compress.intermediate
    true

mapreduce.map.output.compress=true
mapreduce.map.output.compress.codec=org.apache.hadoop.io.compress.SnappyCodec

配置reduce:

hive.exec.compress.output
true

mapreduce.output.fileoutputformat.compress=true
mapreduce.output.fileoutputformat.compress.codec=org.apache.hadoop.io.compress.SnappyCodec

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值