【发布时间】:2018-07-26 20:51:12
【问题描述】:
我正在使用 Hive 和 get_json_object() 函数来查询存储为 JSON 的数据。 JSON 有一个 coordinate 键和两个字段(纬度和经度),如下所示:
"coordinate":{
"center":{
"lat":36.123413127558536,
"lng":-115.17381648045654
},
"precision":10
}
我正在运行我的 Hive 查询以检索某个地理坐标框中的数据,如下所示:
INSERT OVERWRITE LOCAL DIRECTORY '/home/user.name/sample/sample1.txt'
SELECT * FROM mytable
WHERE
get_json_object(mytable.`value`, '$.coordinate.center.lat') > 36.115767
AND get_json_object(mytable.`value`, '$.coordinate.center.lng') > -115.314051
AND get_json_object(mytable.`value`, '$.coordinate.center.lat') < 36.285595
AND get_json_object(mytable.`value`, '$.coordinate.center.lng') < -115.085399
DISTRIBUTE BY rand()
SORT by rand()
LIMIT 10000;
但是,问题在于,对于某些行,缺少 coordinate 字段,或者缺少 center 字段,或者缺少 lat 和/或 lng 字段。如何修改我的 Hive SELECT 查询以仅获取具有完整有效 coordinate 条目以及现有 lat 和 lng 的行?
【问题讨论】: