2017-02-09 1 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 초 –

관련 문제