Hive 1.1.0 tez hadoop oracle NULL sort

     最近发现hive 0.14 运行在tez的时候有不少bug,决定升级hive为hive 1.1.0,因为集群hadoop版本是2.3.0,一不小心踩到坑:

    1、hive 1.1.0 需要jdk1.7以上 

    2、设置这个环境变量 HADOOP_USER_CLASSPATH_FIRST="true"

    3、https://issues.apache.org/jira/browse/HIVE-9957  打上这个patch,此patch将在hive1.2.0中集成。编译hive 1.1.0源码后把 hive-shims-0.23-1.1.0.jar 替换了。最后记得还要替换hive-exec-1.1.0.jar中的Hadoop23Shims.class

    

    另外提一点对于NULL的排序,hive与oracle有所不同,对于如下SQL:

SELECT

t.chanl_id,

t.date_id,

t.pltfm_id,

t.prov_id,

t.old_mbr_num,

ROW_NUMBER () OVER (partition by t.date_id ORDER BY t.old_mbr_num) ROW_NUMBER

FROM

data t;


Oracle 执行结果如下:

56859 2015-02-15 1 1 449 1

56859 2015-02-15 1 1 6869 2

56859 2015-02-15 1 1 7047 3

56859 2015-02-15 1 1 8628 4

56859 2015-02-15 1 1 11804 5

56859 2015-02-15 1 1 12089 6

56859 2015-02-15 1 1 18778 7

56859 2015-02-15 1 1 25906 8

。。。。

56859 2015-02-15 1 1 191046115 939

56859 2015-02-15 1 1 NULL 940

56859 2015-02-15 1 1 NULL 941

56859 2015-02-15 1 1 NULL 942

56859 2015-02-15 1 1 NULL 943


Hive 执行结果如下:


0 56859 2015-02-15 1 1 NULL 1

1 56859 2015-02-15 1 1 NULL 2

2 56859 2015-02-15 1 1 NULL 3

3 56859 2015-02-15 1 1 NULL 4

4 56859 2015-02-15 1 1 449 5

5 56859 2015-02-15 1 1 6869 6

6 56859 2015-02-15 1 1 7047 7

7 56859 2015-02-15 1 1 8628 8

8 56859 2015-02-15 1 1 11804 9



可见两者对于NULL的排序不一样。