2016-11-27 3 views
0

У меня есть отношение в лайнере свиньи. Существует тонна столбцов, поэтому я не хочу указывать тип данных при загрузке отношения. Есть ли способ изменить его после факта?Изменить тип данных столбца в piglatin

batters = LOAD 'hdfs:/home/ubuntu/pigtest/Batting.csv' using PigStorage(','); 
filtered_batters = FOREACH batters2 GENERATE $0 as id, $5 as bats; 
describe filtered_batters; 
filtered_batters: {id: bytearray, bats: bytearray} 

Причина, почему я спрашиваю, потому что я пытаюсь группы по идентификатору и суммировать столбец летучих мышей, и я получаю сообщение об ошибке. Я считаю, что тип данных не подходит для суммирования. Прямо сейчас это bytearray, и я думаю, что это должно быть int для меня, чтобы суммировать его. Пожалуйста, дайте мне знать, если это правильно, и если да, как это сделать.

Благодаря

ответ

2

См CAST Operators.If вы не указали тип данных в свинье НАГРУЗКИ оператор использует ByteArray по умолчанию в качестве типа данных для полей.

filtered_batters = FOREACH batters2 GENERATE (int)$0 as id, (int)$5 as bats; 

ИЛИ

filtered_batters = FOREACH batters2 GENERATE $0 as id:int, $5 as bats:int; 
+0

Спасибо, это работает! – mangodreamz

Смежные вопросы