복붙노트

[HADOOP] 코끼리 - 새를 하이브와 함께 사용하여 프로토프 데이터 읽기

HADOOP

코끼리 - 새를 하이브와 함께 사용하여 프로토프 데이터 읽기

나는 이와 비슷한 문제가있다.

다음은 내가 사용했던 것들이다.

그리고 프로토콜 버퍼 자바 튜토리얼 내 데이터 "testbook"을 작성 흐름.

그리고 나

hdfs dfs -mkdir / protobuf_data를 사용하여 HDFS 폴더를 만듭니다.

hdfs dfs -put testbook / protobuf_data를 사용하여 "testbook"을 HDFS에 저장하십시오.

그런 다음 코끼리 - 새 웹 페이지를 따라 테이블을 만들고 구문은 다음과 같습니다.

create table addressbook
  row format serde "com.twitter.elephantbird.hive.serde.ProtobufDeserializer"
  with serdeproperties (
    "serialization.class"="com.example.tutorial.AddressBookProtos$AddressBook")
  stored as
    inputformat "com.twitter.elephantbird.mapred.input.DeprecatedRawMultiInputFormat"
    OUTPUTFORMAT "org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat"
  LOCATION '/protobuf_data/';

모두 일했습니다.

하지만 쿼리 select *를 주소록에서 제출하면; 결과가 나오지 않았다.

디버깅 할 오류가있는 로그를 찾을 수 없습니다.

누군가 나를 도울 수 있을까요?

많은 감사

해결법

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

    1.문제는 해결되었습니다.

    문제는 해결되었습니다.

    먼저 protobuf 바이너리 데이터를 HDFS에 직접 저장했습니다. 결과는 나타나지 않았습니다.

    그렇게 작동하지 않기 때문에.

    몇몇 고위 동료에게 물어 보면, 바이너리 데이터의 프로토 타입은 hadoop SequenceFile과 같은 어떤 종류의 컨테이너, 일부 파일 형식으로 작성되어야한다고 말했다.

    코끼리 새장 페이지도 정보를 작성했지만 처음에는 완전히 이해할 수 없었습니다.

    sequenceFile에 protobuf 바이너리 데이터를 작성한 후 하이브로 protobuf 데이터를 읽을 수 있습니다.

    그리고 sequenceFile 형식을 사용하기 때문에 create table 구문을 사용합니다.

    inputformat 'org.apache.hadoop.mapred.SequenceFileInputFormat'
    outputformat 'org.apache.hadoop.mapred.SequenceFileOutputFormat'
    

    희망, 그것이 하이브, 코끼리도 새로운 사람을 도울 수 있기를 바랍니다.

  2. from https://stackoverflow.com/questions/27791961/use-elephant-bird-with-hive-to-read-protobuf-data by cc-by-sa and MIT license