千家信息网

好程序员大数据学习路线分享hive的运行方式

发表于:2024-12-03 作者:千家信息网编辑
千家信息网最后更新 2024年12月03日,好程序员大数据学习路线分享hive的运行方式,hive的属性设置: 1、在cli端设置 (只针对当前的session) 3、在java代码中设置 (当前连接) 2、在配置文件中设置 (所有sessio
千家信息网最后更新 2024年12月03日好程序员大数据学习路线分享hive的运行方式

  好程序员大数据学习路线分享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的一种优化。

数据 属性 个数 查询 语句 运行 变量 文件 模式 环境 方式 代码 任务 参数 就是 手动 条件 注释 结果 资源 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 云服务器是属于什么类型的服务 医院网络安全整改方案 乡镇网络安全预算方案 无锡电脑软件开发平台 串口服务器410S与服务器通信 网络安全专业要考什么证 sybase 创建数据库 渭南市康讯互联网科技有限公司 怀柔区品牌软件开发售后保障 筑客网络技术上海公司荣誉 宽带运营商服务器未响应 芜湖门店管理软件开发外包公司 数据库属于一次信息源 对网络安全技术的态度 云储存和云服务器的关系 网络安全会泄露信息吗 年前找软件开发工作好找 软件开发任职设想 plsql数据库安装 2021年网络安全优秀企业之移动安全十强 微信读写服务器mysql数据库 数据库excel表格在哪 腾讯服务器安装在哪里 魔兽服务器维修 笔记本适合软件开发 停电数据库损坏怎么处理 哪一年我国商品化软件开发 疫情期间开展网络安全巡查工作 国公安机关DNA数据库 南京华天网络技术有限公司
0