一、CLI操作:
1、普通设置:
set hive.cli.print.header=true; // 打印查询头,需要显示设置 set hive.mapred.mode=strict; // hive strict模式,分区表必须在where中分区过滤,不允许笛卡尔积查询 set hive.mapred.mode=nostrict; // 与上一行相反 // 分区已经对应目录结构,因此在数据文件就可以不用存分区的数据了; set hive.exec.dynamic.partition = true; // 动态分区 set hive.exec.dynamic.partition.mode = nonstrict;
2、性能设置:
set hive.map.aggr=true // 提高聚合性能,需要更多内存。允许map阶段进行“顶级”聚合,(非顶级聚合将会在执行一个GROUP BY后执行) 《HIVE编程指南》P86 set hive.auto.convert.join=true; // 开启map-side-join
PS: 分区已经对应目录结构,因此在数据文件就可以不用存分区的数据了。
二、元数据:
1、显示所有表:
SHOW TABLES; SHOW TABLES IN bi; // 查看某个schema下所有表 SHOW TABLES ‘*rathan*‘; // 正则匹配表名
2、表结构:
DESC bi.rathan_table_name; // 最简,只显示数据列信息 DESC EXTENDED bi.rathan_table_name; // 查看完整表结构,Detailed Table Information 压缩显示 DESC FORMATTED bi.rathan_table_name; // 查看完整表结构,Detailed Table Information展开显示 // DESC == DESCRIBE SHOW PARTITIONS bi.rathan_table_name; // 查看所有分区 SHOW PARTITIONS bi.rathan_table_name PARTITION(hp_cal_dt=‘2015-08-06‘); //某个分区是否存在
三、DDL:
1、建表:
CREATE TABLE IF NOT EXISTS bi.rathan_table_name LIKE bi.rathan_another_tablename;
四、DML:
INSERT INTO TABLE bi.rathan_table_name; // 追加数据 INSERT OVERWRITE TABLE bi.rathan_table_name; //覆盖数据 // 如果target目录不存在,则创建。使用了OVERWRITE就会把目标文件夹的数据全部删掉,使用INTO则不会删掉(重名的话会把之前文件重命名为“之前文件名_序列号”);
五、其他:
发现了写了很多的关于hive的blog,在此偷偷mark一下,留待慢慢消化:
http://my.oschina.net/leejun2005/blog/308427#OSC_h2_12
时间: 2024-10-10 08:31:27