最近发现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 执行结果如下:

568592015-02-15114491

568592015-02-151168692

568592015-02-151170473

568592015-02-151186284

568592015-02-1511118045

568592015-02-1511120896

568592015-02-1511187787

568592015-02-1511259068

。。。。

568592015-02-1511191046115939

568592015-02-1511NULL940

568592015-02-1511NULL941

568592015-02-1511NULL942

568592015-02-1511NULL943


Hive 执行结果如下:


0568592015-02-1511NULL1

1568592015-02-1511NULL2

2568592015-02-1511NULL3

3568592015-02-1511NULL4

4568592015-02-15114495

5568592015-02-151168696

6568592015-02-151170477

7568592015-02-151186288

8568592015-02-1511118049



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