配置单元协议缓冲区-在配置单元中创建表时发生nullpointerexception

wmtdaxz3  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(447)

提前谢谢。
目前,我们正在尝试使用协议缓冲区字节数据创建配置单元表。我们已经遵循了所有可能的步骤,通过使用协议缓冲区创建配置单元表,但是 NullPointerException 创建配置单元表时。以下是所有必需的详细信息。
版本-
1协议3.0.0
2象鸟-4.14
三。hortornworks沙盒配置单元版本-1.2.1
4java 3.0.0协议
使用的原型文件是

package tutorial; 
option java_package = "com.mycom.hive.protobuf.serialized";
option java_outer_classname = "BankProtoTest";
message BankClass{
    required string bankAmount= 1;
    required string bankLocation= 2;
    optional string bankName= 3;
}
message BankInfo {
   repeated BankClass bankClass = 1;
}

我们使用下面的命令创建java类

protoc.exe -I=input-proto --java_out=java-output input-proto\BankProto.proto

上面的命令为输入协议缓冲文件生成java类。
之后,我们将这个协议缓冲区java文件复制到maven java项目中,然后创建jar文件。我们将jar文件复制到hivelib路径,即“/usr/hdp/current/hiveclient/lib”。
下面是create table命令

create external table bankproto 
   row format serde "com.twitter.elephantbird.hive.serde.ProtobufDeserializer"     
with serdeproperties 
   ("serialization.class"="com.mycom.hive.protobuf.serialized.BankProtoTest$BankInfo")
stored as  
   inputformat "org.apache.hadoop.mapred.SequenceFileInputFormat" 
   outputformat "org.apache.hadoop.mapred.SequenceFileOutputFormat" 
location '/user/root/protobuf-input/';

该位置中的输入文件作为序列文件存储在hdfs中。
执行此命令后,出现以下异常。

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.RuntimeException: MetaException(message:org.apache.hadoop.hive.serde2.SerDeException java.lang.NullPointerException)

任何与此相关的帮助都将不胜感激。
再次感谢。
阿维纳什·德什穆克

y4ekin9u

y4ekin9u1#

我们能够解决这个问题。问题是protobuf版本的正确兼容版本。我们发现当前版本的 elephant-bird (4.14)依赖于protobuf版本2.6.0

相关问题