Hive深入应用总结
记录下官方文档上讲的比较少,觉得有用的hive相关知识,绝对干货。
命令:
表明tb1
describe extended tb1;返回表tb1字段,存储格式类型,位置,修改时间等等关于表的详细信息
show functions;显示可以用的函数列表,包括可用的udf函数。
describe function length; 返回length函数的说明,执行输出length(str) - Returns the length of str
set hive.enforce.bucketing;执行显示某个属性的只,这里显示是否确保表中使用桶hive.enforce.bucketing=false,可以通过set hive.enforce.bucketing=true来修改为true;
hive --hiveconf hive.root.logger=DEBUG,console 设置进入本次session中的参数值,这里设置调试信息发送到控制台
set hive.groupby.skewindata=true 在执行某条可能会出现数据倾斜的HQL前设置,会分两个阶段来执行HQL解决数据倾斜。
explain HQL 可以查看HQL的查询计划
对于数据量比较大的排重select count(sid) from tb1 group by sid;会比select count(distinct sid) from tb1更有效。
hive0.6.0以后支持create datebase dbname,use dbname,drop database dbname来进行分库操作
hive 表分为托管表和外部表
托管表drop表时元数据和数据会被一起删除。
外部表由自己来控制数据的创建和删除,drop表不会删除数据,外部表的位置需要在建表的时候指明。建表create external table tb1....
load数据是一个移动操作,加上local关键字,hive会把本地文件系统的数据复制到hive仓库目录,在同一个文件系统中就会变成复制
查看rcfile格式存储的文件内容
hive -rcfilecat /user/hive/warehouse/tb1/dt=20120325/hour=15/000000_0
顺便说下Hadoop查看顺序文件内容,可以使压缩文件,例如
hadoop fs -text /user/hive/warehouse/tb1/dt=20120317/20120317.lzo