복붙노트

[HADOOP] Hadoop 돼지 - csv 헤더 제거

HADOOP

Hadoop 돼지 - csv 헤더 제거

내 CSV 파일에는 첫 줄에 헤더가 있습니다. 돼지에로드하면 SUM과 같은 후속 함수에 혼란이 생깁니다. 오늘부터는 먼저로드 된 데이터에 필터를 적용하여 헤더가 포함 된 행을 제거합니다.

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

난 방법으로 약간 바보 같아요, 나는 거기에로드 함수에 "as_header"불리언 매개 변수와 같은 CSV의 첫 번째 라인을로드하지 않도록 돼지를 말하는 방법이 궁금합니다. 나는 의사에게 보지 않는다. 가장 좋은 방법은 무엇입니까? 어떻게 그걸로 대처하니? "

해결법

  1. ==============================

    1.CSVExcelStorage 로더가 헤더 행을 건너 뛰도록 지원하므로 PigStorage 대신 CSVExcelStorage를 사용하십시오. piggybank.jar를 다운로드하고이 옵션을 사용해보십시오.

    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

  2. ==============================

    2.SKIP_INPUT_HEADER 옵션을 사용하지 않고 Pig 0.9에 대한 또 다른 간단한 옵션은 다음과 같이 수행 할 수 있습니다.

    SKIP_INPUT_HEADER 옵션을 사용하지 않고 Pig 0.9에 대한 또 다른 간단한 옵션은 다음과 같이 수행 할 수 있습니다.

    입력 파일 (input.txt)

    input.txt

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

    PigScript : (SKIP_INPUT_HEADER 옵션을 사용하지 않으면,이 옵션은 Pig 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)
    
  3. from https://stackoverflow.com/questions/29335656/hadoop-pig-removing-csv-header by cc-by-sa and MIT license