Как загрузить JSON и значение из JSON в Pig? - PullRequest
0 голосов
/ 11 мая 2018

У меня есть JSON и значение из JSON

000000, { "000": { "PHONENUMBER": нулевой, "Имя": "А", "LastName": "PQR", "электронная почта": "email@xyz.com", "alternatePickup": правда "sendTextNotification" ложь "isSendTextNotification" ложь "isAlternatePickup": истинно}}

Я пытаюсь загрузить этот JSON в свинью с помощью загрузчика JSON, но не могу этого сделать.
Я могу загрузить следующий JSON

{ "000": { "PHONENUMBER": нулевой, "Имя": "А", "LastName": "PQR", "электронная почта": "email@xyz.com", "alternatePickup": правда,» sendTextNotification "ложь" isSendTextNotification "ложь" isAlternatePickup ": истинно}}

Используя следующий скрипт -

REGISTER json-simple-1.1.1.jar;
REGISTER elephant-bird-pig-4.3.jar;
REGISTER elephant-bird-hadoop-compat-4.3.jar;

json_data = load 'ek.json' using com.twitter.elephantbird.pig.load.JsonLoader() AS (json_key: [(phoneNumber:chararray,firstName:chararray,lastName:chararray,email:chararray,alternatePickup:boolean,sendTextNotification:boolean,isSendTextNotification:boolean,isAlternatePickup:boolean)]);

dump json_data;

Но когда я включаю значение из JSON

json_data = load 'ek.json' using com.twitter.elephantbird.pig.load.JsonLoader() AS (id:int,json_key: [(phoneNumber:chararray,firstName:chararray,lastName:chararray,email:chararray,alternatePickup:boolean,sendTextNotification:boolean,isSendTextNotification:boolean,isAlternatePickup:boolean)]);

это не работает !! Заранее признателен за помощь.

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Вы можете использовать встроенные JsonStorage и JsonLoader ()

a = load 'a.json' using JsonLoader('a0:int,a1:{(a10:int,a11:chararray)},a2:(a20:double,a21:bytearray),a3:[chararray]');  

В этом примере данные загружаются без схемы; предполагается, что во входном каталоге есть .pig_schema (созданная JsonStorage).

a = load 'a.json' using JsonLoader(); 
0 голосов
/ 16 мая 2018

JsonLoader позволяет загружать только правильный json, в то время как ваш формат на самом деле CSV.Существует три варианта, которые вы можете упорядочить по возрастанию сложности:

  1. Настройте формат ввода и сделайте его частью id
  2. Загрузите данные в формате CSV (в виде 2 полей: id и json, затемиспользуйте пользовательский UDF для разбора поля json в кортеж)
  3. Напишите пользовательский загрузчик, который позволит вам ваш оригинальный формат.
...