Чтение файлов в PIG, где данные приходят в данные - PullRequest
2 голосов
/ 03 февраля 2012

Я хочу прочитать файл CSV, используя PIG, что мне делать ?.Я использовал load n pigstorage (','), но он не может правильно прочитать CSV-файл, потому что, где он встречает запятую (,) в данных, он разбивает его. Как мне теперь дать разделитель, если у меня тоже есть запятая?

Ответы [ 3 ]

3 голосов
/ 03 февраля 2012

Обычно невозможно отличить запятую в данных от запятой в качестве разделителя. Вам нужно будет экранировать запятую, которая есть в ваших «данных» и пользовательской функции загрузки (для Pig), которая может распознавать экранированные запятые.

Взгляните сюда:
http://ofps.oreilly.com/titles/9781449302641/load_and_store_funcs.html
http://pig.apache.org/docs/r0.7.0/udf.html#Load%2FStore+Functions

2 голосов
/ 03 февраля 2012

Вы смотрели загрузчик CSVLoader в PiggyBank , если хотите прочитать файл CSV? (конечно, формат файла должен быть действительным)

0 голосов
/ 11 февраля 2014

Сначала убедитесь, что у вас есть действительный файл CSV.В случае, если вы не пытались изменить исходный файл с помощью Excel (если файл небольшого размера) или другого инструмента и экспортировали новый CSV с хорошим разделителем для ваших данных (например, вкладка \ t,; и т. Д.).Еще лучше можно сделать другое извлечение с «хорошим» разделителем.

Пример вашей загрузки может быть примерно таким:

TABLE = LOAD 'input.csv' USING PigStorage(';') AS (site_id: int, name: chararray, ...);

Пример вашего DUMP:

STORE TABLE INTO 'clean.csv'using PigStorage (', ');<- разделитель, который подходит вам лучше всего </p>

...