복붙노트

[HADOOP] Apache Pig : hadoop fs -text를 사용하여 잘 보이는 파일로드

HADOOP

Apache Pig : hadoop fs -text를 사용하여 잘 보이는 파일로드

part-r-000 [0-9] [0-9]라는 이름의 탭이있는 필드가 들어있는 파일이 있습니다. hadoop fs -text part-r-00000을 사용하여 볼 수 있지만 돼지를 사용하여로드 할 수는 없습니다.

내가 시도한 것 :

x = load 'part-r-00000';
dump x;
x = load 'part-r-00000' using TextLoader();
dump x;

그러나 그것은 단지 나에게 쓰레기를 준다. 어떻게 돼지를 사용하여 파일을 볼 수 있습니까?

관련성이있는 것은 내 hdfs가 현재 CDH-2를 사용하고 있다는 것입니다. 또한 파일을 로컬에 다운로드하고 part-r-00000 파일을 실행하면 part-r-00000 : data라고 표시되어 로컬에서 압축을 해제하는 방법을 알 수 없습니다.

해결법

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

    1.HDFS 문서에 따르면 hadoop fs -text 은 "zip 및 TextRecordInputStream"데이터에 사용할 수 있으므로 데이터가 이러한 형식 중 하나 일 수 있습니다.

    HDFS 문서에 따르면 hadoop fs -text 은 "zip 및 TextRecordInputStream"데이터에 사용할 수 있으므로 데이터가 이러한 형식 중 하나 일 수 있습니다.

    파일이 압축 된 경우 Hadoop은 일반적으로 HDFS로 출력 할 때 확장자를 추가합니다. 그러나 이것이 없으면 로컬에서 / ungzipping / unbzip2ing / etc를 압축 해제하여 테스트해볼 수 있습니다. 돼지는 자동으로 압축 해제를해야하지만 파일 확장자 (예 : part-r-00000.zip)가 필요할 수 있습니다. - 자세한 정보.

    TextRecordInputStream에 너무 확신하지 못합니다. 단지 돼지의 기본 메서드 인 것처럼 들리지만 잘못된 것일 수 있습니다. 나는 빠른 구글을했을 때 돼지를 통해이 데이터를 LOAD하는 것에 대해서는 언급하지 않았다.

    최신 정보: 시퀀스 파일이라는 것을 알았으므로 PiggyBank를 사용하여 파일을로드하는 방법은 다음과 같습니다.

    -- using Cloudera directory structure:
    REGISTER /usr/lib/pig/contrib/piggybank/java/piggybank.jar
    --REGISTER /home/hadoop/lib/pig/piggybank.jar
    DEFINE SequenceFileLoader org.apache.pig.piggybank.storage.SequenceFileLoader();
    
    
    -- Sample job: grab counts of tweets by day
    A = LOAD 'mydir/part-r-000{00..99}' # not sure if pig likes the {00..99} syntax, but worth a shot 
        USING SequenceFileLoader AS (key:long, val:long, etc.);
    
  2. ==============================

    2.돼지와 함께 시퀀스 파일을 조작 (읽기 / 쓰기)하려면 Twitter의 Elephant-Bird에도 시도해 볼 수 있습니다.

    돼지와 함께 시퀀스 파일을 조작 (읽기 / 쓰기)하려면 Twitter의 Elephant-Bird에도 시도해 볼 수 있습니다.

    여기에서 읽기 / 쓰기 방법을 찾을 수 있습니다.

    사용자 지정 쓰기 가능 파일을 시퀀스 파일로 사용하는 경우 AbstractWritableConverter를 확장하여 사용자 지정 변환기를 구현할 수 있습니다.

    Elephant-Bird는 시스템에 Thrift가 설치되어 있어야합니다. 빌드하기 전에 올바른 Thrift 버전을 사용하고 있는지 확인하고 pom.xml에 Thrift 실행 파일의 올바른 경로를 제공하십시오.

    <plugin>
      <groupId>org.apache.thrift.tools</groupId>
      <artifactId>maven-thrift-plugin</artifactId>
      <version>0.1.10</version>
      <configuration>
        <thriftExecutable>/path_to_thrift/thrift</thriftExecutable>
      </configuration>
    </plugin>
    
  3. from https://stackoverflow.com/questions/12286845/apache-pig-load-a-file-that-shows-fine-using-hadoop-fs-text by cc-by-sa and MIT license