Hive 2.1 无法正确评估 NULL 映射

Hive 2.1 cannot doesn't evaluate properly NULL map

我正在尝试寻找一种解决方法来检查 Hive 2.1 中的 NULL 映射。当我检查地图中的键时,我得到了正确的结果。这是我要评估的内容以及结果:

hive> select request_params, request_params is null, request_params['id'], request_params['id'] is null  from dcs_log_pday_s3 where pday='2016-11-24' and hour='00' and pid=1124 limit 10;
OK
{"id":"EAED7055-7003-4A11-8494-CF1079EF24","et%3Aivs%7Cdata%3Ad":"1966"}    false   EAED7055-7003-4A11-8494-CF1079EF24  false
NULL    false   NULL    true
NULL    false   NULL    true
NULL    false   NULL    true
NULL    false   NULL    true
NULL    false   NULL    true
NULL    false   NULL    true
NULL    false   NULL    true
NULL    false   NULL    true
{"id":"97EBD924-C45C-4A93-AAEF-57595005","et%3Aibs%7Cdata%3Ad":"1966"}  false   97EBD924-C45C-4A93-AAEF-57595005    false
Time taken: 0.095 seconds, Fetched: 10 row(s)

但是,我在旧版本的 Hive 上没有同样的问题(例如在 Hive 1.1 上):

hive> select request_params, request_params is null  from dcs_log_pday_s3 where 
pday='2016-11-24' and hour='00' and pid=1124 limit 10;
Query ID = keystone_20161126000606_0a8caadd-ec27-4a92-96a9-5e7b0b95f318
...
Total MapReduce CPU Time Spent: 1 minutes 2 seconds 750 msec
OK
{"id":"3AFCDA87-BAE5-4EEA-9B47-61BA2B4D0BC8","et%3Aibs%7Cdata%3Ad":"1966"}  false
NULL    true
NULL    true
NULL    true
NULL    true
NULL    true
NULL    true
NULL    true
{"id":"8D0F1D5F-57E7-4127-94C0-C1FD4F98D6E8","et%3Aibs%7Cdata%3Ad":"1966"}  false

我可以补充一点,我在 AWS EMR 5.2 上的第一个查询是 运行,第二个查询是在本地 CDH5.4 集群上的 运行。

有人可以给我一些见解吗?

我已经通过使用大小 UDF 找到了解决此问题的方法。似乎在评估 NULL 时 returns -1。 (https://github.com/apache/hive/blob/master/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/GenericUDFSize.java#L74)

这是一个查询 运行:

hive> select size(null) from emr_output limit1;
OK
-1