2017-02-09 13 views
0

私はhadfsで次のようなjsonを持っています。Hiveで入れ子になったJson構造を解析するには?

{"result": [{"sys_tags": {"display_value": "d1", "value": "v1"}, "user_input": {"display_value": "d2", "value": "v2"}}, {"sys_tags": {"display_value": "d1", "value": "v1"}, "user_input": {"display_value": "d2", "value": "v2"}}]} 

私は、データを分析するハイブに外部表を作成したいです。

json-serde-1.3.7-jar-with-dependencies.jarをダウンロードし、ハイブシェルに追加しました。ここでは私が実行したクエリです

CREATE EXTERNAL TABLE t2(result array<STRUCT<sys_tags STRUCT<display_value :STRING, value:STRING>>, STRUCT<user_input STRUCT<display_value :STRING, value:STRING>>>) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' location 'hdfs://localhost:9000/t2'; 

しかし、それは動作していません。誰かが問題を理解するのに役立つことができますか? JSONアトリビュートが正しくマッピングされていないので、それが失敗しています

答えて

1

てみてください、

CREATE EXTERNAL TABLE t2(
     result array<STRUCT<sys_tags:STRUCT<display_value:STRING, value:STRING>,user_input:STRUCT<display_value:STRING, value:STRING>>>) 
     ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' 
     location 'hdfs://localhost:9000/t2'; 
+1

それは働いた!どうもありがとう。 –

0

、これを試してみる:CREATE文の中で、いくつかの不一致<と行方不明:がある

CREATE EXTERNAL TABLE t2(result MAP<STRING, ARRAY<MAP<STRING,STRUCT<display_value :STRING, value:STRING>>>>) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' location 'hdfs://localhost:9000/t2'; 
+0

は迅速な対応ラーフルのためにありがとうございました。私は上記のクエリを使用してみました。テーブルはエラーなしで作成されていますが、テーブルからデータを選択する際にエラーが発生しています。エラーは次のようなものです:OK java.io.IOExceptionを例外として失敗しました:org.apache.hadoop.hive.ql.metadata.HiveException:java.lang.ClassCastException:org.openx.data.jsonserde.json.JSONArrayをキャストできませんorg.openx.data.jsonserde.json.JSONObject 撮影時間:0.101秒 –

関連する問題