Как загрузить набор данных с обеими вкладками и запятой в свинье - PullRequest
0 голосов
/ 31 октября 2018

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

Мой набор данных

QTM 2009,0.53,0.47,1365900
QTM 2009,0.56,0.54,1246100
QTM 2009,0.6,0.54,1023600

Если я попытаюсь загрузить это с помощью TextLoader, он будет читать строку как одно поле.

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

A = Load 'NYSEB.txt' AS(Symbol:chararray, Detail:chararray);
B = Foreach A GENERATE (STRSPLIT(Symbol, ',',1)), (STRSPLIT(Detail, ',', 
4));
B = Foreach A GENERATE
flatten(STRSPLIT (Symbol, ',',1)),
flatten(STRSPLIT(Detail, ',', 4));

Может кто-нибудь, пожалуйста, помогите мне: я хочу, чтобы мои поля были (символ: строка, год: строка, оператор: double, cp: double, vol: int)

1 Ответ

0 голосов
/ 31 октября 2018

Загрузите файл в 4 поля с запятой в качестве разделителя, а затем используйте strsplit в первом поле, чтобы получить нужные 5 полей.

 A = LOAD 'NYSEB.txt' USING PigStorage(',') AS (symbol_year:chararray, op:double, cp:double, vol:int);
 B = FOREACH A GENERATE FLATTEN(STRSPLIT(symbol_year,'\\t',2)) as (symbol:chararray,year:chararray),op,cp,vol; 
 C = FOREACH B GENERATE symbol, year, op, cp, vol;
 DUMP C;
...