Свинья не может загрузить мешок

Я пытаюсь загрузить тип данных сумки в таблицу свиньи и вместо этого получаю нулевые значения.

Пример ввода:

A000,B000,C000,1.0,1-1-14,3-31-14,{(A101,1-Jan-2014,0.03,0.04)}
A001,B001,C001,10.0,1-1-14,3-31-14,{(A101,1-Jan-2014,0.03,0.045)}
A002,B002,C002,100.0,1-1-14,3-31-14,{(A101,1-Jan-2014,0.03,0.04)}

Сценарий свинки:

raw = LOAD 'input/meh.log' USING PigStorage(',') AS (PID, FUNDID, GICID, balance, startDate, endDate, rates:bag{t:tuple(t1,t2,t3,t4)});
DUMP raw;

Выход:

(A000,B000,C000,1.0,1-1-14,3-31-14,)
(A001,B001,C001,10.0,1-1-14,3-31-14,)
(A002,B002,C002,100.0,1-1-14,3-31-14,)
                                    ^Bag values should be here

Что я делаю неправильно? Я попытался удалить объявления пакетов/кортежей из функции LOAD, и все равно ничего. Я использовал тот же подход при работе над учебником по сумкам, который был в комплекте с Pig, и, похоже, он работал очень хорошо.

ОБНОВЛЕНИЕ: если я настрою ввод сумки так, чтобы каждый кортеж имел одно значение, тогда этот скрипт работает. Я начинаю думать, что это может быть проблема с моей версией Pig (0.12.2). Мне пришлось собрать Pig с помощью Ant, чтобы он мог работать на Hadoop 2.3. Мысли?


person Phreakradio    schedule 23.07.2014    source источник


Ответы (1)


Переформатировал данные

A000    B000    C000    1   1-1-14  3-31-14 {(101,1-Jan-2014,0.03,0.04)}
A001    B001    C001    10  1-1-14  3-31-14 {(101,1-Jan-2014,0.03,0.04)}
A002    B002    C002    100 1-1-14  3-31-14 {(101,1-Jan-2014,0.03,0.04)}

Разделите значения вкладками. Как ни странно, это работает. У меня был установлен разделитель на ',' что могло смутить свинью, когда она пыталась прочитать сумку. Я предполагаю, что если у вас есть пакеты с многовариантными кортежами, либо установите разделитель на что-нибудь, кроме ',', либо просто не устанавливайте его вообще.

person Phreakradio    schedule 24.07.2014