2016-04-26 15 views
0

rcongiuのhive-json-serdeを使用して、オープンスタンダードに準拠したJSON文書を保存します。私は、マイケル・ピーターソンの便利なhive-json-schemaジェネレータを使用して、そのサイズを除き動作するCREATE TABLE文を生成しました。ハイブ - カラムタイプの名前が長すぎます

私がエンコードしているJSONドキュメントは、明確に定義されたスキーマに従いますが、スキーマにはおそらく100レベルのフィールドがあり、最大4レベルまでネストされています。標準に合致するハイブの列の型は(3700文字前後)非常に、非常に長いです、と私はtable文を作成し、私の生成を実行すると、私は文は次のようになりますエラーに

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. 
InvalidObjectException(message:Invalid column type name is too long: <the 
really long type name>) 

を得る:

CREATE TABLE foobar_requests (
    `event_id` int, 
    `client_id` int, 
    `request` struct<very long and deeply nested struct definition>, 
    `timestamp` timestamp) 
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'; 

これらの文書を保存するためのパスはありますか?

+0

構造型が正しく構成されていません。 –

答えて

2

ハイブは非常に長い列定義に問題があります。デフォルトではサポートされている最大文字数は4000です。したがって、実際にこれ以上必要な場合は、COLUMNS_V2.TYPE_NAMEの長さを延長してメタストアデータベースを変更する必要があります。

このリンクに行く問題の詳細を読むのが好きならば:

https://issues.apache.org/jira/browse/HIVE-12274

1

はAmbari>ハイブ> Configsに]> [詳細]> [カスタムハイブサイトを通じて、次のプロパティを追加します。
hive.metastoreを.max.typename.length = 14000