gpt4 book ai didi

hadoop - 使用 elephant-bird 配合 hive 读取 protobuf 数据

转载 作者:可可西里 更新时间:2023-11-01 14:45:40 31 4
gpt4 key购买 nike

我有类似的问题 this one

以下是我使用的:

  1. CDH4.4(配置单元 0.10)
  2. protobuf-java-.2.4.1.jar
  3. elephant-bird-hive-4.6-SNAPSHOT.jar
  4. elephant-bird-core-4.6-SNAPSHOT.jar
  5. elephant-bird-hadoop-compat-4.6-SNAPSHOT.jar
  6. 包含protoc编译的.class文件的jar文件。

而我流Protocol Buffer java tutorial创建我的数据“测试簿”。

还有我

使用 hdfs dfs -mkdir/protobuf_data 创建 HDFS 文件夹。

使用hdfs dfs -put testbook/protobuf_data将“testbook”放入HDFS。

那我就关注elephant-bird web page创建表,语法如下:

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; 没有结果出来。

而且我找不到任何有错误的日志来调试。

有人可以帮我吗?

非常感谢

最佳答案

问题已经解决

我先把protobuf二进制数据直接放到HDFS里面,没有显示结果。

因为它不是那样工作的。

问了一些资深同事,他们说protobuf二进制数据应该写入某种容器,某种文件格式,比如hadoop SequenceFile等。

elephant-bird page也写了信息,但是一开始我完全看不懂。

将protobuf二进制数据写入sequenceFile后,我可以用hive读取protobuf数据。

而且因为我使用的是sequenceFile格式,所以我使用的是create table语法:

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

希望对刚接触hadoop、hive、elephant的人也有帮助。

关于hadoop - 使用 elephant-bird 配合 hive 读取 protobuf 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27791961/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com