2015-03-29 2 views
6

Мои файлы csv имеют заголовок в первой строке. Загрузка их в свиньи создает беспорядок на любых последующих функциях (например, SUM). На сегодняшний день я первый применить фильтр на загруженных данных, чтобы удалить строки, содержащие заголовки:Hadoop Pig - Удаление CSV-заголовка

affaires = load 'affaires.csv' using PigStorage(',') as (NU_AFFA:chararray, date:chararray) ; 
affaires = filter affaires by date matches '../../..'; 

Я думаю, это немного глупо, как метод, и мне интересно, как есть способ сказать свинью не загружать первую строку csv, как логический параметр «as_header» в функцию загрузки. Я не вижу его на доке. Что было бы лучше? Как вы обычно справляетесь с этим?

ответ

11

CSVExcelStorage поддержка загрузчика для пропуска строки заголовка, поэтому вместо PigStorage использовать CSVExcelStorage. Загрузите piggybank.jar и попробуйте эту опцию.

Пример Пример

input.csv

Name,Age,Location 
a,10,chennai 
b,20,banglore 

PigScript: (С SKIP_INPUT_HEADER опция)

REGISTER '/tmp/piggybank.jar'; 
A = LOAD 'input.csv' USING org.apache.pig.piggybank.storage.CSVExcelStorage(',', 'NO_MULTILINE', 'UNIX', 'SKIP_INPUT_HEADER'); 
DUMP A; 

Выход:

(a,10,chennai) 
(b,20,banglore) 

Ссылка:
http://pig.apache.org/docs/r0.13.0/api/org/apache/pig/piggybank/storage/CSVExcelStorage.html

0

Еще один простой вариант для свиней 0,9, без использования опции SKIP_INPUT_HEADER может быть сделано следующим образом:

входного файла (input.txt)

input.txt

Name,Age,Location 
a,10,chennai 
b,20,banglore 

PigScript: (Без использования опции SKIP_INPUT_HEADER, так как этот параметр не доступен на рис 0.9)

register '<Your location>/piggybank.jar'; 
d_with_headers = LOAD 'input.csv' using org.apache.pig.piggybank.storage.CSVExcelStorage() AS (name:chararray, age:long, location:chararray); 

d = FILTER places_with_headers BY name!='Name'; 

dump d; 

Выход:

(a,10,chennai) 
(b,20,banglore)