我正试图找到一个解决方法来检查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集群上运行。
有人能给我一些见解吗?
1条答案
按热度按时间2lpgd9681#
我已经找到了一个解决方法,通过使用大小自定义项。当计算空值时,它似乎返回-1(https://github.com/apache/hive/blob/master/ql/src/java/org/apache/hadoop/hive/ql/udf/generic/genericudfsize.java#l74)
下面是一个查询运行: