Используйте слоновую птицу с ульем, чтобы прочитать данные протобуфа
У меня похожая проблема, как эта
Вот что я использовал:
- CDH4.4 (улей 0.10)
- Protobuf-ява-.2.4.1.jar
- слон-птица-улей-4,6-SNAPSHOT.jar
- слон-птица-ядро-4,6-SNAPSHOT.jar
- слон-птица-Hadoop-Compat-4,6-SNAPSHOT.jar
- Файл 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, улей, слон тоже.