Разобрать строку в формате JSON в Pig

Я использую свинью для анализа данных, загруженных из Cassandra. Один из столбцов, которые я получаю, представляет собой строку с идентификаторами продуктов и информацией о продукте в формате JSON:

row | ... |                              items                                       | ...  
 1  | ... | "[{"id":"1", "useless_info":"blah"}, {"id":"2", "useless_info":"bleh"}]" | ...          
 2  | ... | "[{"id":"3"}]"                                                           | ...  
 .  |  .  |                                   .                                      |  .    

Обратите внимание, что в некоторых строках будут дополнительные данные внутри строки, а в других будет только идентификатор.

В любом случае, мне нужно проанализировать каждую строку «элементов» и сгенерировать идентификационные номера:

row | id | ... |  
 1  | 1  | ... |  
 1  | 2  | ... |  
 2  | 3  | ... |  
etc

Насколько я понимаю, парсеров JSON для Pig не существует, только функции загрузки и хранения (например, слоновая птица). Можно ли делать то, что я хочу, с чем-то вроде REGEX_EXTRACT, или мне придется написать свою собственную UDF (или есть лучший, красивый и умный способ)?

Заранее спасибо за вашу помощь!

PS Я использую Pig 0.93


person hriundel    schedule 29.03.2012    source источник
comment
Возможный дубликат Как анализировать JSON в Pig?   -  person outis    schedule 29.03.2012
comment
Да, я просмотрел этот пост в блоге — они используют elephantbird для загрузки данных в формате JSON. Мои данные на самом деле все строки (и уже загружены в Pig), и только одна часть имеет формат, подобный JSON (который нужно проанализировать)   -  person hriundel    schedule 29.03.2012


Ответы (1)


У Elephant Bird есть JsonStringToMap, который анализирует строку JSON и выводит карту в Pig. Это отличается от их JsonLoader, который анализирует JSON при загрузке файла.

person msponer    schedule 29.03.2012
comment
Спасибо за указание на это. Хотя нам нужно было что-то другое, было относительно просто написать UDF на основе JsonStringToMap, несмотря на базовые знания java. - person hriundel; 05.04.2012