Hive2.1无法正确计算空Map

mefy6pfw  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(362)

我正试图找到一个解决方法来检查hive2.1中的空Map。当我检查Map上的钥匙时,我得到了正确的结果。以下是我试图评估的内容和结果:

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的旧版本(例如Hive1.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集群上运行。
有人能给我一些见解吗?

2lpgd968

2lpgd9681#

我已经找到了一个解决方法,通过使用大小自定义项。当计算空值时,它似乎返回-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

相关问题