2016-12-15 3 views
-1

У меня есть файл с двумя наборами данных, как показано ниже:Как конвертировать сумку в несколько пакетов с помощью апачей?

1,abc,10,dss 
2,efgh,as 
1,abc,10,1234 
2,efgh,as 
1,abc,10,7899 
2,efgh,as 

записи, начиная с № 1 являются один набор и запись, начинающаяся с # 2 имеет различный набор. Таким образом, обе имеют разные структуры. как отделить эти два набора записей?

ответ

0

Вот способ ...

A = LOAD '/user/data/split.txt' as line:chararray; 
B = FOREACH A GENERATE Flatten(TOKENIZE(line,' ')) ; 
B1 = filter B by $0 matches '1.*'; 
B2 = filter B by $0 matches '2.*'; 
DUMP B1 
DUMP B2 
or 
SPLIT B INTO B1 IF ($0 matches '1.*'), B2 IF ($0 matches '2.*'); 
+0

Привет, Я получаю ошибку ниже: – Ram

+0

Привет, я получаю ошибка ниже: 2016-12-16 10: 32: 17,936 [главная] ERROR org.apache.pig.tools.grunt.Grunt - ОШИБКА 1025: <строка 3, столбец 46> Недопустимая проекция поля. Проецируемое поле [строка] не существует. Я запустил следующий код: grunt> file2 = LOAD '/hls/hls_wi/training/twofile.csv' ИСПОЛЬЗОВАНИЕ PigStorage (','); grunt> B = FOREACH file2 GENERATE Flatten (TOKENIZE (строка, '')); – Ram

+0

вы используете «ИСПОЛЬЗОВАНИЕ PigStorage (','); использовать «как строку: chararray»; и TOKENIZE, а также подтвердите свой формат ввода. –

0

С новой обновленной версии ввода, здесь другое решение

A = LOAD '/user/data/split.txt' as line:chararray; 
B1 = filter A by $0 matches '1.*'; 
B2 = filter A by $0 matches '2.*'; 
or 
SPLIT A INTO B1 IF ($0 matches '1.*'), B2 IF ($0 matches '2.*'); 
Смежные вопросы