我正在尝试使用本机函数在Hive中使用单个JSON数组文件,以某种方式将其加载到Hive中时,第一行被转换为null,而丢失了第一行数据。请告知我做什么不正确?
数据:
[{"id":1,"first_name":"Alexandrina","email":"abalding0@goo.ne.jp","date":"9/11/2016","country":"Nigeria"},
{"id":2,"first_name":"Craggie","email":"ctremain1@photobucket.com","date":"12/7/2016","country":"China"},
{"id":3,"first_name":"Allie","email":"adearan2@ycombinator.com","date":"10/31/2016","country":"Russia"},
{"id":30,"first_name":"Vinson","email":"vplumbleyt@hubpages.com","date":"5/16/2016","country":"Saint Kitts and Nevis"}]
HIVE功能:
CREATE TABLE format.json_table (json string);
LOAD DATA INPATH '/user/cloudera/JSON/MOCK_DATA.json' INTO TABLE json_table;
当我查询时:
select get_json_object(json_table.json, '$.id') as id,
get_json_object(json_table.json, '$.first_name') as name,
get_json_object(json_table.json, '$.email') as email,
get_json_object(json_table.json, '$.date') as date,
get_json_object(json_table.json, '$.country') as country from json_table;
它返回
OK
id name email date country
NULL NULL NULL NULL NULL
2 Craggie ctremain1@photobucket.com 12/7/2016 China
3 Allie adearan2@ycombinator.com 10/31/2016 Russia
4 Poul psondland3@mlb.com 9/11/2016 Nigeria
5 Vinson vplumbleyt@hubpages.com 5/16/2016 Saint Kitts and Nevis
JSON SERDE与单行文档一起使用。
鉴于您的数据,适当地读取了有效的JSON文档本身的每一行,并且不会失败JSON解析器,从而导致零值返回。