大数据学习路线分享hive的运行方式,hive的属性设置: 1、在cli端设置 (只针对当前的session) 3、在java代码中设置 (当前连接) 2、在配置文件中设置 (所有session有效)

设置属性的优先级依次降低。 cli端只能设置非hive启动需要的属性。(log属性,元数据连接属性)

查找所有属性: hive>set; 查看当前属性的值:通常是hadoop hive> set -v; 模糊查找属性: hive -S -e "set" | grep current; hive -S -e "set" | grep index;

hive变量:system 、 env 、hivevar 、hiveconf

system :系统级别环境变量(jvm、hadoop等),可读可写 hive> set system:min.limit = 3; hive> set system:min.limit; system:min.limit=3

env:环境变量 (HADOOP_HOME),只读不能写。 hive> set env:PWD; env:PWD=/usr/local/hive-1.2.1

hivevar:自定义临时变量(可读可写)

hive> set hivevar:min.limit=3;
hive> set hivevar:min.limit;
hivevar:min.limit=3
hive> set hivevar:min.limit=2;
hive> set hivevar:min.limit;
hivevar:min.limit=2

hiveconf:自定义临时属性变量(可读可写)

hive> set hiveconf:max.limit=10;
hive> set hiveconf:max.limit;
hiveconf:max.limit=10
hive> set hiveconf:max.limit=6;
hive> set hiveconf:max.limit;
hiveconf:max.limit=6

hive的运行方式: 1、cli端运行 (临时统计、开发) 2、hive -S -e "hql 语句"; (适合单个hql的query语句) 3、hive -S -f /hql文件; (hql文件的脚本)

不带参数

hive -S -e "use qf1603;select * from user1;" hive -S -f /home/su.hql;

hive在0.9版本以前是不支持的-f 带参数的执行:

hive --hivevar min_limit=3 -hivevar -hivevar t_n=user1 -e 'use qf1603;select * from {hive:t_n} limit {hivevar:min_limit};'
hive --hiveconf min_lit=3 -e "use qf1603;select * from user1 limit ${hiveconf:min_lit};"
hive -S --hiveconf t_n=user1 --hivevar min_limit=3 -f ./su.hql

hive中注释: --注释内容

insert overwrite local directory '/home/out/05'
select * from user1 limit 3;

###三、hive 优化 1、环境优化(linux 句柄数、应用内存分配、是否负载等) 2、应用配置属性方面的优化。 3、代码优化(hql,尝试换一种hql的写法)。

1、学会看explain

explain :显示hql查询的计划。 explain extended :显示hql查询的计划。还会显示hql的抽象表达式树。(就是解释器干得事)

explain select * from user1;
explain extended select * from user1;

一个hql语句将会有一个或者多个stage构成。每一个stage相当于一个mr的job, stage可以是一个Fetch 、 map join 、 limit 等操作。 每一个stage都会按照依赖关系依次执行,没有依赖关系的可以并行执行。

2、对limit的优化:

hive.limit.row.max.size=100000
hive.limit.optimize.limit.file=10
hive.limit.optimize.enable=false

3、对join的优化:

永远是小表驱动大表(小结果集驱动大结果集) 必要时候使用小表标识 /+STREAMTABLE(小表别名)/ 将业务调整为能尽量使用map-side join: hive.auto.convert.join: smalltable: 尽量避免笛卡尔积的join查询,即便有咯也需要使用on 或者where 来过滤。 hive目前的join 只支持等值连接(= and)。其它的不行

4、使用hive本地模式(在一个jvm里面运行)

hive.exec.mode.local.auto=false
hive.exec.mode.local.auto.inputbytes.max=134217728
hive.exec.mode.local.auto.input.files.max=4

5、hive并行执行(stage之间没有相互依赖关系的可以并行执行)

hive.exec.parallel=false
hive.exec.parallel.thread.number=8

6、严格模式:

hive提供的严格模式阻挡三种查询: 1、带有分区的表的查询 2、带有orderby的查询 3、join查询语句,不带on条件 或者 where条件。

7、设置mapper 和 reduce个数

mapper个数太多,启动耗时,个数太少,资源利用不充分 reducer个数太多,启动耗时,个数太少,资源利用不充分

mapper个数: 手动设置:

set mapred.map.tasks=2;

适当调整块大小,从而改变分片数,来改变mapper个数:

通过合并文件小文件来减少mapper个数:

set mapred.max.split.size=25600000; 256M
set mapred.min.split.per.node=1
set mapred.min.split.per.rack=1
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;

reducer个数(通常手动设置):

set mapreduce.job.reduces=-1;

8、hive使用jvm重用

mapreduce.job.jvm.numtasks=1 set mapred.job.reuse.jvm.num=8; ##jvm里运行task的任务数

9、数据倾斜(查看:Hive优化.docx文档)

数据倾斜:数据某列的值分布不均匀。 造成数据倾斜的原因: 1、原本数据就倾斜 2、hql语句可能造成 3、join 极容易造成 4、count(distinct col) 5、group by语句也容易

解决方法: 1、如果数据本身倾斜,看数据能否直接分离(找到倾斜的数据) 2、将倾斜的数据单独出来计算,然后和正常的数据进行union all 3、将倾斜的数据赋予随机数来进行join查询,均衡每个task的任务量。 4、试图不变需求改写hql语句。

倾斜解决的几个属性设置:

hive.map.aggr=true
hive.groupby.skewindata=false
hive.optimize.skewjoin=false

10、job数量的控制

连接查询的on中的连接字段类型尽可能相同。 通常是一个简单hql语句生成一个job,有join 、limit 、group by 都将有可能会生成一个独立job。

select
u.uid,
u.uname
from user1 u
where u.uid in (select l.uid from login l where l.uid=1 limit 1)
;
select
u.uid,
u.uname
from user1 u
join login l
on u.uid = l.uid
where l.uid = 1
;

分区 、分桶 、索引 这些本身就是hive的一种优化。

hive hql文档_大数据学习路线分享hive的运行方式相关推荐

  1. hive hql文档_大数据学习不能停,看看如何安装hive快800倍!共572.91M视频文档

    前言 hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行. 其优点是学习成本低,可 ...

  2. 深圳大数据培训:好程序员大数据学习路线之hive 存储格式

    深圳大数据培训:好程序员大数据学习路线之hive 存储格式 好程序员大数据学习路线之hive存储格式,hive的存储格式通常是三种:textfile . sequencefile . rcfile . ...

  3. 试图加载格式不正确的程序_好程序员大数据学习路线之hive存储格式

    好程序员大数据学习路线之hive存储格式,hive的存储格式通常是三种:textfile . sequencefile . rcfile . orc .自定义 set hive.default.fil ...

  4. hdp对应hadoop的版本_好程序员大数据学习路线分享hadoop的知识总结

    大数据学习路线分享hadoop的知识总结,Hadoop的背景:原生公司是apache, cdh的cloudar公司,hortworks公司提供hdp. 其中apache的发行版本大致有1.x ,2.x ...

  5. 好程序员大数据学习路线分享scala单列和伴生对象

    好程序员大数据学习路线分享scala单列和伴生对象 scala单例 object SingletonDemo { def main(args: Array[String]): Unit = { val ...

  6. hive 时间转字符串_大数据面试杀招——Hive高频考点,还不会的进来挨打

    一.什么是Hive,为什么要用Hive,你是如何理解Hive? 面试官往往一上来就一个"灵魂三连问",很多没有提前准备好的小伙伴基本回答得都磕磕绊绊,效果不是很好.下面贴出菌哥的回 ...

  7. 2021最全大数据学习路线(建议收藏)

    个人简介:非科班双一流硕士,CAE仿真方向转行大数据,现杭州某大厂大数据工程师! 我可以给你提供最全的[大数据学习路线]:帮助你搭建大数据知识体系,从入门到精通:亲自指导你大数据工程师面试的简历该如何 ...

  8. 2018大数据学习路线从入门到精通

    最近很多人问小编现在学习大数据这么多,他们都是如何学习的呢.很多初学者在萌生向大数据方向发展的想法之后,不免产生一些疑问,应该怎样入门?应该学习哪些技术?学习路线又是什么?今天小编特意为大家整理了一份 ...

  9. 大数据学习路线2019版(附全套视频教程及网盘下载)

    什么是大数据? 大数据(BIG DATA)是指无法在一定时间范围内用常规软件工具进行捕捉.管理和处理的数据集合,是需要新处理模式才能具有更强的决策力.洞察发现力和流程优化能力的海量.高增长率和多样化的 ...

最新文章

  1. 前后端分离的探索(四)
  2. PHP mysql 写入多条记录_PHP mysql插入多条记录的Array数组获取问题
  3. 第5章 Python 数字图像处理(DIP) - 图像复原与重建11 - 空间滤波 - 自适应滤波器 - 自适应局部降噪、自适应中值滤波器
  4. java 数组冒泡排序、转置(降序)
  5. python3 Crypto使用出现的问题
  6. 风机桨叶故障诊断(四) 正负样本准备——从图像中随机扣图
  7. sat2 计算机科目,2019-2020年SAT2考试时间及Top100大学要求
  8. 关于CAS服务器磁盘占用的问题,锁定目录惹的祸
  9. C++_类和对象_C++运算符重载_左移运算符重载_链式编程_实现直接打印对象---C++语言工作笔记056
  10. Windows 编程[20] - 改变菜单项并换行
  11. 知网一键下载PDF文献
  12. 腾讯云学生机(官网入口)
  13. 脉聊社交网站源码类似微博的社交源码 模板UI非常漂亮自适应手机版 重点是有原生APP
  14. Windows的hosts文件在哪里?
  15. TVS和ESD的区别
  16. OpenGL VBO, PBO与FBO
  17. 使用chrome浏览器打开微信页面配置方式
  18. idea打开命令行窗口
  19. 手机kakao聊天能自动翻译 WhatsApp翻译 实时翻译
  20. x210---电容式触摸屏学习笔记

热门文章

  1. javascript replace高级用法
  2. 云场景实践研究第37期:悦跑圈
  3. Sublime Text 2/3如何支持中文GBK编码(亲测实现)
  4. sublime的一些快捷键
  5. android 接收SDCcard插拔的广播
  6. 关于dll实现api挂接
  7. Nagios 监控平台快速安装
  8. php软件开发--mongodb
  9. java多态 成员访问特点(父类引用指向子类对象)
  10. 热门编程语言,热门开源项目,MS-DOS,Python,Calcurse等