读hive编程指南随笔

hive cli(1.1.0版本)
(1)hive客户端可以使用hadoop相关命令,去掉hdfs,例如:dfs -ls /;
(2)set hive.cli.print.header=true; 打印头部信息
(3)set hive.cli.print.current.db=true; hive cli 显示当前所在数据库
(4)删除数据库先得删除库下面的表,加cascade关键字可以让hive自行删除库下面的表
例如:drop database if exists test_dp cascade;
(5)hive自带的两个属性,last_modified_by上一次修改用户,last_modified_time上一次修改时间
(6)分区,
hive.exec.dynamic.partitions.pernode ,缺省值是100,指每个mapper或reducer可以创建的最大动态分区个数
hive.exec.max.dynamic.partitions 缺省值是1000,指的是一个动态分区创建语句可以创建的最大分区数目
hive.exec.max.created.files 缺省值是100000,全局可以创建的最大文件个数
(7)floor()向下取整,ceil()向上取整
(8)json_tuple()可以解析多个字段,例如:select a.* from test lateral view json_tuple(‘${hivevar:msg}’,’server’,’host’) a as f1,f2;
get_json_object()只能解析一个
(9)解析url,parse_url_tuple()和parse_url()
(10)job的输入数据大小必须小于参数:
hive.exec.mode.local.auto=true
hive.exec.mode.local.auto.inputbytes.max(默认128MB)
job的map数必须小于参数:hive.exec.mode.local.auto.tasks.max(默认4)
job的reduce数必须为0或者1
(11)map join 大表关联小表,将小表加入内存,
set hive hive.auto.convert.join=true; --开启
set hive.mapjoin.smalltable.filesize=25000000; --设置小表的大小
right join和full join 不支持此操作。
(12)order by和sort by的区别:
order by全局排序,会有一个reduce去处理。sort by局部排序,在每个reduce中排序。如果只有一个reduce的时候是一样的。如果取topN,sort by优于order by
distribute by类似于group by
(13)多个union all,可以insert into 代替。union all会对数据源进行分发拷贝
(14)多个left join关联时,表的数据量应该依次增大。扫描最大的那个表,其他表加入缓存。可以手动加参数,/+streamtable(s)/
(15)当查询同一个张表的两个不用语句时,
如下效率低:
insert overwrite table test1 select * from history where user=‘xiaoming’

insert overwrite table test2 select * from history where user=‘xiaohong’

优化查询:
from history
insert overwrite table test1 select * where user=‘xiaoming’
insert overwrite table test2 select * where user=‘xiaohong’
注:使用多插入模式,不能往同一个表中插入
(16)set hive.mapred.mode=strict;严格模式,会禁止三种查询。
1.分区表不加where条件限制查询,不允许扫描所有分区
2.order by语句查询,必须限制limit语句
3.限制笛卡尔的查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值