2012-02-03 5 views
1

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

ответ

2

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

+0

Thanx я пытался и его работу .. –

+0

что, если я хочу, чтобы сохранить файл как CSV..i получил CSVExcelStorage, но его не было в piggybank.jar и я не в состоянии построить это ... любое предложение? –

2

Как правило, невозможно отличить запятую в данных от запятой как разделитель. Вам нужно будет избежать этой запятой, которая находится в вашей функции «данных» и пользовательской загрузки (для 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

-1

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

Пример Вашего груза может быть то что-то вроде этого:

TABLE = НАГРУЗКИ 'input.csv' ИСПОЛЬЗОВАНИЕ PigStorage (';') AS (Site_ID: INT, имя: chararray, ...);

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

МАГАЗИНА таблицы в '' clean.csv с использованием PigStorage (''); < - разделитель, который подходит вам лучше всего