HIVE索引优化

        众所周知,当数据量大了的时候跑MapReduce任务是很容易崩掉的,但是当将数据量大的SQL语句转成MapReduce任务时候,很容易报 code2 的错误,就是内存不足,这时候我选择了对hive的数据表进行调优,主要使用行组索引与布隆索引这两种方式。

        1、行组索引:row group index 将文件按行分成若干片段,每个片段都有min 和 max,当查询中有> < = 时候,会根据max/min值,扫描跳过不包含的片段.

         在建立 ORC表格时候,指定表的参数orc.create.index=true 之后,便会建立ORC索引。在向表中加载数据时候,要对需要使用的字段进行排序,否则min/max就失去了意义。

         另外,这种索引主要是针对数值类型的数据,设置hive.optimize.index.filter=true,并重启hive。

        使用:保证建表时侯使用ORC的存储格式 stored as ORC ,并开启行组索引TBLPROPERTIES ( 'orc.compress'='SNAPPY', -- 开启行组索引 'orc.create.index'='true' )。

        当插入数据有效并且使用>、<、= 时候会走行组索引

        CREATE TABLE lxw1234_orc2 (字段列表 ....)

                                stored AS ORC

                                TBLPROPERTIES (

                                         'orc.compress'='SNAPPY',

                                        -- 开启行组索引

                                        'orc.create.index'='true' )

        2、 布隆索引:

                1) 要求表的存储类型为 ORC存储方案

                2) 在建表的时候, 必须设置为那些列构建布隆索引

                3) 仅能适合于等值过滤查询操作

                建表:ORC的文件存储格式,打开行组索引,打开布隆索引

                CREATE TABLE lxw1234_orc2 (字段列表....)

                        stored as ORC

                        TBLPROPERTIES (

                                'orc.compress'='SNAPPY',

                                -- 开启 行组索引 (可选的, 支持全部都打开, 也可以仅开启一个)                                 'orc.create.index'='true',

                                -- pcid字段开启BloomFilter索引

                                'orc.bloom.filter.columns'='pcid,字段2,字段3...' )

         行组索引与布隆索引的使用:

                行组索引:建议只要数据存储格式为ORC, 将这种索引全部打开, 至于导入数据的时候, 如果能保证有序, 那最好, 如果保证不了, 也无所谓, 大不了这个索引的效率不是特别好

                布隆索引:建议将后续会大量的用于等值连接的操作字段, 建立成布隆索引, 比如说: JOIN的字段 经常在where后面出现的等值连接字段

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yangjiwei0207

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

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

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

打赏作者

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

抵扣说明:

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

余额充值