Загрузка данных с несколькими разделителями (только в некоторых случаях) в конкретный файл данных с помощью apache-pig - PullRequest
0 голосов
/ 12 мая 2018
150060275,NON-CRIMINAL,LOST PROPERTY,Monday,01/19/2015,14:00,MISSION,NONE,18TH ST / VALENCIA ST,-122.42158168137,37.7617007179518,"(37.7617007179518, -122.42158168137)",15006027571000
150098210,ROBBERY,"ROBBERY, BODILY FORCE",Sunday,02/01/2015,15:45,TENDERLOIN,NONE,300 Block of LEAVENWORTH ST,-122.414406029855,37.7841907151119,"(37.7841907151119, -122.414406029855)",15009821003074

Во втором ряду в третьем поле есть символ ',', который не следует рассматривать как разделитель. Как мне решить эту проблему?

если я использую STRPLIT (), то это работает для 2-й строки, но выдает неверный результат для 1-й строки.

1 Ответ

0 голосов
/ 13 мая 2018

Загрузите его в одно поле, замените запятую и пробел на | и затем используйте strsplit в каждой строке.

A = LOAD 'data.txt' USING TextLoader() AS (line:chararray);
B = FOREACH A GENERATE REPLACE(line,', ','|');
C = FOREACH B GENERATE STRSPLIT(B.$0,',',13);-- Assuming there are 13 fields.

Кроме того, вы можете использовать CSVExcelStorage и PiggyBank .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...