2016-07-13 8 views
0

avroスキーマを使用する1つのハイブテーブルを作成しようとしています。以下は、DDLはそのavroスキーマに裏打ちされたハイブテーブルでバケットを使用できますか?

CREATE TABLE avro_table 
ROW FORMAT 
    SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'  
CLUSTERED BY (col_name) INTO N BUCKETS  
STORED AS 
    INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat' 
    OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat' 
TBLPROPERTIES ('avro.schema.url' = 'hdfs://sandbox.hortonworks.com:8020/avroschema/test_schema.avsc') 

ためである。しかし、それは、下記のエラー

FAILED投げている:はParseExceptionライン3:org.apache.hadoop.hive.serde2 '' の近くに 'クラスタ化された' での3欠落しているEOFを。 avro.AvroSerDe「」

私たちはAVROか

ハイブバージョンに裏打ちされたハイブにバケット化を使用することができますwheatherを確認していない - いずれかが私かの提供しを助けることができる1.2

これを達成するためのアイデア.....

答えて

0

構文の順序が間違っていて、内容が不足しています。 ROW FORMATは、CLUSTERED BYの後に定義され、CLUSTERED BYは、おそらくCREATE TABLEコマンドの一部として定義する必要がある列名を必要とします。

N BUCKETSNは本当に実際のバケット数で置き換えられますが、そうでない場合は別のエラーです。

私はそれを読むことができるように質問を書式化しました。d comparing to syntax hereは、パーサーが好きでなかった点を見つけやすくなりました。

+0

thanks tom ....それはうまくいきました。 –

+0

AVROとして記憶500のバケット INTO(ユニークID)でCLUSTERED(VCD列) によって区画表s.TEST_OD_V( ユニークIDのINT、 dtCd列、 SysSK int型、 インディアナストリング)を作成します。 上記のHQLを使用してテーブルを作成する場合、スキーマファイルの場所は何ですか...スキーマを変更する必要がある場合、スキーマファイルを編集する方法 –

関連する問題