복붙노트

[HADOOP] loadfunc 돼지 UDF를 사용하여 protobuf 형식 파일을 돼지 스크립트에로드

HADOOP

loadfunc 돼지 UDF를 사용하여 protobuf 형식 파일을 돼지 스크립트에로드

나는 돼지 지식이 거의 없다. protobuf 형식의 데이터 파일이 있습니다. 이 파일을 돼지 스크립트에로드해야합니다. 로드하려면 LoadFunc UDF를 작성해야합니다. 함수가 Protobufloader ()라고합니다.

내 돼지 스크립트는

A = LOAD 'abc_protobuf.dat' USING Protobufloader() as (name, phonenumber, email);

내가 알고 싶은 것은 어떻게 파일 입력 스트림을 얻는가입니다. 일단 파일 입력 스트림을 잡으면 protobuf 형식에서 PIG 튜플 형식으로 데이터를 구문 분석 할 수 있습니다.

추신 : 미리 감사드립니다.

해결법

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

    1.트위터의 오픈 소스 라이브러리 코끼리 새는 많은 그러한 로더를 가지고있다 : https://github.com/kevinweil/elephant-bird

    트위터의 오픈 소스 라이브러리 코끼리 새는 많은 그러한 로더를 가지고있다 : https://github.com/kevinweil/elephant-bird

    LzoProtobufB64LinePigLoader 및 LzoProtobufBlockPigLoader를 사용할 수 있습니다. https : / / / /

    이를 사용하려면 다음을 수행하면됩니다.

    define ProtoLoader com.twitter.elephantbird.pig.load.LzoProtobufB64LineLoader('your.proto.class.name');
    a = load '/your/file' using ProtoLoader;
    b = foreach a generate
      field1, field2;
    

    로드가 완료되면 적절한 스키마가있는 돼지 튜플로 자동 변환됩니다.

    그러나 그들은 직렬화 된 protobuffer에 데이터를 작성하고 lzo로 압축했다고 가정합니다.

    그들도 com.twitter.elephantbird.pig.store 패키지에 대응하는 작가가 있습니다. 데이터 형식이 조금 다르면 코드를 사용자 정의 로더에 적용 할 수 있습니다.

  2. from https://stackoverflow.com/questions/7031586/loading-protobuf-format-file-into-pig-script-using-loadfunc-pig-udf by cc-by-sa and MIT license