Используйте слоновую птицу с ульем, чтобы прочитать данные протобуфа

У меня похожая проблема, как эта

Вот что я использовал:

  1. CDH4.4 (улей 0.10)
  2. Protobuf-ява-.2.4.1.jar
  3. слон-птица-улей-4,6-SNAPSHOT.jar
  4. слон-птица-ядро-4,6-SNAPSHOT.jar
  5. слон-птица-Hadoop-Compat-4,6-SNAPSHOT.jar
  6. Файл jar, в который входит скомпилированный протокол.class.

И я передаю Java-учебник по протоколу буфера и создаю мои данные "testbook".

И я

использование hdfs dfs -mkdir /protobuf_data создать папку HDFS.

использование hdfs dfs -put testbook /protobuf_data поставить "тестбук" в 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 * from addressbook; никакого результата не вышло.

И я не мог найти журналы с ошибками для отладки.

Может ли кто-нибудь помочь мне?

Большое спасибо

1 ответ

Проблема была решена.

Сначала я поместил двоичные данные protobuf непосредственно в HDFS, но результата не было.

Потому что так не работает.

После того, как они спросили некоторых старших коллег, они сказали, что двоичные данные protobuf должны быть записаны в какой-то контейнер, в некоторый формат файла, такой как hadoop SequenceFile и т. Д.

Страница со слоновой птицей тоже написала информацию, но сначала я не мог ее полностью понять.

После записи двоичных данных protobuf в sequenceFile, я могу читать данные protobuf с помощью hive.

И поскольку я использую формат sequenceFile, я использую синтаксис создания таблицы:

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

Надеюсь, что это может помочь другим, кто плохо знаком с Hadoop, улей, слон тоже.

Другие вопросы по тегам