Разбор строки в формате JSON в Pig - PullRequest
1 голос
/ 29 марта 2012

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

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

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

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

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

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

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

PS Я использую свинью 0,93

1 Ответ

1 голос
/ 29 марта 2012

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

...