2017-02-09 10 views
0

У меня есть json, как в hadfs.Как разобрать в Jive структуру 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'; 

Но это не работает. Может ли кто-нибудь помочь разобраться в проблеме?

ответ

1

Есть несколько несоответствующих < и недостающую : в CREATE заявления.

Try,

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

Это неудача, потому что атрибуты JSON не отображается правильно, попробуйте это:

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 секунд –

 Смежные вопросы

  • Нет связанных вопросов^_^