У меня есть файл JSON и вы хотите читать с помощью Apache Pig.Многострочный JSON читает с использованием Apache PIG
Я попытался использовать обычный JSONLOADER
, но выглядит как JSONLOADER
работает только с одной строкой JSON. Затем я попытался с Elephant-Bird
. Но я все еще не в состоянии правильно видеть результаты. Может ли кто-нибудь предложить решение?
Вход:
{"employees":[
{"firstName":"John", "lastName":"Doe"},
{"firstName":"Anna", "lastName":"Smith"},
{"firstName":"Peter", "lastName":"Jones"}
]}
Примечание: Я не хочу, чтобы преобразовать входной сигнал в одной строкой.
Сценарий:
A = LOAD 'input' USING com.twitter.elephantbird.pig.load.JsonLoader('-nestedLoad');
B = FOREACH A GENERATE FLATTEN($0#'employees');
Dump B;
Ожидаемый результат должен быть:
([firstName#John,lastName#Doe])
([firstName#Anna,lastName#Smith])
([firstName#Peter,lastName#Jones])
Hi Siva ... можете ли вы ответить на мой вопрос @Sivasakthi Jayaraman – jk7
Загрузчик JsonLoader или elephantbird всегда будет работать только с одной линией. Он не будет работать с многострочным. Вам нужно преобразовать свой вход в одну строку, прежде чем перейти к свинью. Одним из способов было бы написать сценарий оболочки и вызвать логику для замены многострочной одиночной строки с помощью команды «SED», а затем вызвать скрипт свиньи в сценарии оболочки. Эта ссылка поможет вам вызвать сценарий свиньи через оболочку. http://stackoverflow.com/questions/26239338/loading-files-into-pig-and-decompressing-them/26264641#26264641 –