Hive创建表忽略protobuf中的'bytes'类型

时间:2012-10-22 17:41:10

标签: hive protocol-buffers

我遇到了一个用于创建表格的protobuf的问题。

我有一个.proto文件,结构中有2个字段。 Hive似乎只使用1个字段(EMetaData)并忽略表中的'bytes'类型字段。

message EE {
 required EMetaData header = 1;
 optional bytes cl = 2;
}

message EMetaData {
 required uint32 version = 1;
 optional string root_pid = 2;
}

该表在Hive中以这样的方式创建。

Hive>desc pbtest2;

OK
key     struct<header:struct<rootpid:string,version:int>>  from deserializer
value   struct<header:struct<rootpid:string,version:int>>  from deserializer

下面是我的创建表语句。

create table pbtest2 row format serde 'MyProtobufDeserializer' with serdeproperties ('KEY_SERIALIZE_CLASS'='CEMessages$EE','VALUE_SERIALIZE_CLASS'='CEMessages$EE') stored as inputformat 'MyInputFormat' outputformat 'org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat'

表中不存在字节类型cl字段。不确定是什么问题。 有没有人遇到过这个问题?如果您有任何建议,请告诉我。

1 个答案:

答案 0 :(得分:0)

想出我的SerDe需要一些改变。它没有处理.proto文件中的'bytes'类型。在处理之后,我能够看到为表创建的“二进制”类型字段。