hive优化基础1

本文介绍了Hive的性能优化技巧,包括开启分桶、设置reduce个数、使用列式存储格式ORC和Parquet、优化大表JOIN、SQL优化如列裁剪和分区裁剪、解决数据倾斜问题、动态分区调整、并行执行以及JVM重用等,旨在提升Hive查询效率。
摘要由CSDN通过智能技术生成

1.hive优化基础1

开启分桶 set hive.enforce.bucketing=true;
设置reduce个数 set mapreduce.job.reduces=3;

  1. hive表 ->orc和parquet -->ZLIB或snappy Parquet是面向分析型业务的列式存储格式

  2. fetch抓取: 在全局找、字段查找、limit查找等都不走mapreduce. set hive.fetch.task.conversion=more;默认为 none.

  3. 本地模式 :
    a. set hive.exec.mode.local.auto=true;
    b. 调节本地模式阈值set hive.exec.mode.local.auto.inputbytes.max=51234560;默认为128M.
    c. 设置local mr的最大输入文件个数 set hive.exec.mode.local.auto.input.files.max=10; 默认 为4.

  4. 大表join小表 map join 优化
    a. set hive.auto.convert.join = true; – 默认为true
    b. 小表阈值设置 : set hive.mapjoin.smalltable.filesize= 25000000; 默认25M.

  5. 大表join 大表 :
    a. 空key过滤
    优化前: SELECT a.* FROM nullidtable a JOIN ori b ON a.id = b.id;
    优化后: SELECT a.* FROM (SELECT * FROM nullidtable WHERE id IS NOT NULL ) a JOIN ori b ON a.id = b.id;
    b. 空key 转换
    有时虽然某个key为空对应的数据很多,但是相应的数据不是异常数据,必须要包含在join的结果中,此时我们可以表a中key为空的字段赋一个随机的值,使得数据随机均匀地分不到不同的reducer上
    不随机分补:
    SELECT a.*
    FROM nullidtable a
    LEFT JOIN ori b ON CASE WHEN a.id IS NULL THEN ‘hive’ ELSE a.id END = b.id;
    随机分布:
    SELECT a.*
    FROM nullid

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大道独行之BIGDATA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值