Hive "из коробки" анализатор JSON - PullRequest
0 голосов
/ 08 августа 2011

У меня есть текстовый файл, содержащий записи json, которые я хотел бы загрузить в Hive.Мой json выглядит так:

{"vr":1,"tm":1312816191516,"tms":"08-08-2011 15:09:51.516 GMT","as":1002,"pb":1102,"cts":[1204,1205],"ctgs":[1304,1305],"op":1400,"ev":2,"dv":1503,"dvgs":[1605,1606],"cnt":"cnt5","usr":"usr8","atts":[{"id":8002,"val":"ccc"},{"id":8003,"val":"ddd"}],"sel":{"cm":2102,"ty":"PRE","ag":3002,"ad":4002,"fl":5002,"fla":6002,"hg":7002,"mc":"WAP","pr":0.1}}

Как видите, у меня есть вложенный json с массивами примитивов и массивом объектов.

Можно ли загрузить его как есть в Hive, используя любойвстроенная функция?

Йоси

Ответы [ 3 ]

1 голос
/ 27 июня 2012

Вы можете использовать пользовательский serde для чтения файлов json в таблицы кустов. Смотрите следующий serde на github - https://github.com/rcongiu/Hive-JSON-Serde

1 голос
/ 14 февраля 2014

Также обратите внимание на Brickhouse - https://github.com/klout/brickhouse. У них вполне приличные UDF для json (например, json_split и json_map).С brickhouse и get_json_object / json_tuple (также упомянутым здесь Nija) вы даже можете избежать использования пользовательских SerDe, таких как Hive-JSON-Serde.

1 голос
/ 08 августа 2011

Вы должны быть в состоянии загрузить его в Hive как есть.Возможно, вам может понадобиться убежать " с.Я не загружал JSON в улей, поэтому не требуется 100%, если необходимо выполнить какое-либо экранирование.

Чтобы получить доступ к элементам JSON, когда он находится в улье;Улей имеет встроенную функцию для doinh так.get_json_object, что можно увидеть в деталях на https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-getjsonobject

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...