2016-10-14 27 views
0

ありがとうございます。ハイブプロトコルバッファ - ハイブでテーブルを作成中にNullPointerExceptionが発生する

現在、私たちはプロトコルバッファバイトデータを使用してHiveテーブルを作成しようとしています。プロトコルバッファを使用してHiveテーブルを作成する可能性のあるすべての手順に従いましたが、Hiveテーブルを作成するときにはNullPointerExceptionになります。以下は必要なすべての詳細です。

バージョン -
1. protoc 3.0.0
2.象鳥 - 4.14
3. Hortornworksサンドボックスハイブのバージョン - 1.2.1
4.いるProtobuf-javaの3.0.0

使用プロトファイル我々は、コマンド

の下に使用してJavaクラスを作成している

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; 
} 

です

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

上記のコマンドは、入力プロトコルバッファファイルのJavaクラスを生成します。

この後、このプロトコルバッファjavaファイルをmaven javaプロジェクトにコピーし、JARファイルを作成しました。 JARファイルをハイブリーブパス、つまり '/ usr/hdp/current/hive-client/lib'にコピーしました。以下

テーブルコマンドを作成

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) 

これに関するお手伝いがあります。

もう一度おねがいします。

Avinash Deshmukh

答えて

0

この問題は解決できます。この問題は、protobufバージョンの正しい互換バージョンに関するものでした。我々は、現在の象の鳥(4.14)のバージョンがプロトタイプのバージョン2.6.0に依存していることを発見した。

関連する問題