我也有类似的问题,比如这一个
以下是我所用的:
并且我流协议缓冲区java教程创建我的数据“测试簿”。
而我
使用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;时,没有结果出来。
我找不到任何有错误需要调试的日志。
有人能帮我吗?
非常感谢
发布于 2015-01-10 04:22:51
问题已经解决了。
首先,我将protobuf二进制数据直接放入HDFS中,没有结果显示。
因为它不是那样工作的。
在询问了一些资深的同事之后,他们说原型二进制数据应该被写入某种容器,一些文件格式,比如hadoop SequenceFile等等。
象鸟页面也写了这些信息,但首先我无法完全理解它。
在将protobuf二进制数据写入sequenceFile之后,我可以用hive读取protobuf数据。
因为我使用sequenceFile格式,所以我使用了create语法:
inputformat 'org.apache.hadoop.mapred.SequenceFileInputFormat'
outputformat 'org.apache.hadoop.mapred.SequenceFileOutputFormat'希望它能帮助那些刚接触过hadoop,蜂箱,大象的人。
https://stackoverflow.com/questions/27791961
复制相似问题