hive学习总结

Hive总结:

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。

 

一、Hive优化总结:

 

1、通过fetch抓取:针对Hive中对某些情况的查询可以不必使用MapReduce计算,节省申请资源的开销。

                                 eg:select * from table 

                                 fetch 抓取配置
                                 hive.fetch.task.conversion  默认值 从1.0版本以上为 more ,在0.x版本是 minimal
                                 可选值: 
                                 none : 如果配置了这个参数, 那么所有的查询的SQL 都会执行MR
                                 minimal : 执行 select *|字段 from 表 的时候, 可以不走MR的. 其余全走
                                 more :  执行 select * | 字段  以及在全局查找、字段查找、limit查找等都不走MR 

2、 hive的本地模式: 对于数据量较小的情况,执行MR的时候, 让hive不要提交YARN平台, 类似于像在IDEA中执行MR一样
                                 如何开启本地模式: 
                                 set hive.exec.mode.local.auto=true;  默认值为false  

                                 什么时候会执行本地:
                                  set hive.exec.mode.local.auto.inputbytes.max=51234560;  输入的数据量大小 ,默认大小为 128M
                                  set hive.exec.mode.local.auto.input.files.max=10; 输入的文件数量   默认为 4

                                  在开发中, 测试环境下, 一般要开启本地模式, 在生产环境中正常对数据进行操作, 开不开无所谓了。

3、Join端优化:

动态分区:

场景就是讲一个分区表的数据加载到另一个分区表的情况:不要一个一个分区字段的添加,动态加载分区字段实现。

如果要使用动态分区, 必须先设置一下内容: 
            set hive.exec.dynamic.partition=true;  开启动态分区, 默认为 true
            set hive.exec.dynamic.partition.mode=nonstrict; 打开非严格模式  默认为: strict严格模式
            set  hive.exec.max.dynamic.partitions=1000;
            set hive.exec.max.dynamic.partitions.pernode=100

动态分区的SQL:     
            insert into  table 表 partition (分区字段) select ....分区字段 from 表 ;
                注意: 查询的SQL的最后面必须是分区字段


 

数据倾斜:

 

行列过滤

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值