1.官方文档:https://cwiki.apache.org/confluence/display/Hive/LanguageManual

2.分区,桶:http://blog.csdn.net/wisgood/article/details/17186107

3.基本命令:http://hi.baidu.com/7636553/item/61d3ee1b5c27e0663f87ce37


3.shell中传递变量: hive -e "sql where year=${env:year}";

4.对set条件进行过滤 hive -S -e "set" |grep header;

5.显示列名 set hive.cli.print.header=true;

6.创建视图,如果是Null,则会没有这个字段,一般要设置默认值

7.hive在提示符出现前,会执行home目录下的.hiverc文件,一般把启动时执行的命令放入该文件中。

8.分隔符字段ctrA \001,struct和array ctrB \002,map ctrc \003

9.当对多个join连接时,连接键相同,则只产生一个mr

10.连续查询中的表的大小,应该是从左到右依次增加的

11.

  select * from a where a.i in (select i from b)

替换

  select * from a left semi-join b on a.xx=b.xx;

  返回左表中的记录,满足on条件。

12.join类型

INNER JOIN 内连接,

LEFT OUTER JOIN 左外连接,

RIGHT OUTER JOIN 右外连接,

FULL OUTER JOIN 全连接,

LEFT SEMI-JOIN 坐半外连接,

JOIN 笛卡尔积

13.查看压缩文件dfs -cat

14.从sequenct file中去除文件头和压缩,dfs -text xx

15.表生成函数:

  select explode(array(1,2,3)) as ele from src;

作为中间列:

  select name,sub

  from employee

  lateral view explode(subordinates) subView as sub;

16.udf/generic udf

  add har /fullpath

  create temporary function xx as 'org.package'

  drop temporary function if exists xx


public class UDFZodiacSign extends UDF {
    private SimpleDateFormat df;
    public UDFZodiacSign() {
        df = new SimpleDateFormat("yyyy-MM-dd");
    }
    public String evaluate(Date bday) {
        return this.evaluate(bday.getMonth(), bday.getDay());
    }
    public String evaluate(int month, int day) {
        if (month == 1) {
            return "baiyang";
        }
        return null;
    }
}