2016-02-07 7 views
1

У меня есть входной текстовый файл (имя multidelimiter) с Подписками записываетКак обрабатывать multidelimiter файла в свинью 0,8

1,Mical,2000;10 
2,Smith,3000;20 

Я написал код свиньи следующего

A =LOAD '/user/input/multidelimiter' AS line; 
B = FOREACH A GENERATE FLATTEN(REGEX_EXTRACT_ALL(line,'(.*)[,](.*)[,](.*)[;]')) AS (f1,f2,f3,f4); 

Но это код в нерабочей заданной приведенной ниже погрешности

ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1000: Error during parsing. Lexical error at line 1, column 78. Encountered: <EOF> after : "\'(.*)[,](.*)[,](.*)[;" 

I refe камыш следующие ссылки, но не в состоянии решить мою ошибку

how to load files with different delimiter each time in piglatin

Пожалуйста, помогите мне выйти из этой ошибки.

Спасибо.

+0

Синтаксис парсер Pig достигает точки с запятой, а затем думать о том, что линия закончена. Вам нужно ускользнуть от точки с запятой, но я боюсь, что не знаю, как это сделать. Может быть, может быть обратная косая черта? ' '(. *) [,] [,] (*.) [\]; (*.)' ' –

ответ

1

Наконец-то получил решение.

Вот мое решение:

A =LOAD '/user/input/multidelimiter' using PigStorage(',') as (empid,ename,line); 
B = FOREACH A GENERATE empid,ename, FLATTEN(REGEX_EXTRACT_ALL(line,'(.*)\\u003B(.*)')) AS (sal:int,deptno:int); 
1

Решение для вашего примера ввода: НАГРУЗКА как разделенная запятой, чем STRSPLIT by ';' и FLATTEN

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