복붙노트

[HADOOP] PigLatin (Hadoop)으로 여러 파일로드

HADOOP

PigLatin (Hadoop)으로 여러 파일로드

나는 같은 형식의 csv 파일의 hdfs 파일 목록을 가지고있다. 나는 그들을 함께 돼지와 함께로드 할 수 있어야합니다. 예 :

/path/to/files/2013/01-01/qwe123.csv
/path/to/files/2013/01-01/asd123.csv
/path/to/files/2013/01-01/zxc321.csv
/path/to/files/2013/01-02/ert435.csv
/path/to/files/2013/01-02/fgh987.csv
/path/to/files/2013/01-03/vbn764.csv

그들의 이름이 "무작위"해시이고 디렉토리에 더 많은 CSV 파일이 포함될 수 있기 때문에 이들을 글로블 할 수 없습니다.

해결법

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

    1.다른 주석에서 제안 된 것처럼 파일을 사전 처리하여이 작업을 수행 할 수 있습니다. HDFS 파일이 file_list.txt라고 가정하면 다음을 수행 할 수 있습니다.

    다른 주석에서 제안 된 것처럼 파일을 사전 처리하여이 작업을 수행 할 수 있습니다. HDFS 파일이 file_list.txt라고 가정하면 다음을 수행 할 수 있습니다.

    pig -param flist=`hdfs dfs -cat file_list.txt | awk 'BEGIN{ORS="";}{if (NR == 1) print; else print ","$0;}'` script.pig
    

    awk 코드는 개행 문자를 없애고 쉼표를 사용하여 파일 이름을 분리합니다.

    스크립트 (예제에서는 script.pig)에서 매개 변수 대체를 사용하여 데이터를로드해야합니다.

    data = LOAD '$flist';
    
  2. ==============================

    2.당신은 그물에 국한되지 않습니다. 이것을 사용하십시오 :

    당신은 그물에 국한되지 않습니다. 이것을 사용하십시오 :

    LOAD '/path/to/files/2013/01-{01/qwe123,01/asd123,01/zxc321,02/ert435,02/fgh987,03/vbn764}.csv';

  3. from https://stackoverflow.com/questions/18277533/load-multiple-files-with-piglatin-hadoop by cc-by-sa and MIT license