[HADOOP] 곧 unnest JSON
HADOOP곧 unnest JSON
이 질문에 다음과 교차하는 방법 프레스토에서 JSON 배열 unnest 가입
내가 제공하는 예제를 실행하려하지만, 그렇게하는 동안 얻을 오류
SQL 명령 :
select x.n
from
unnest(cast(json_extract('{"payload":[{"type":"b","value":"9"},
{"type":"a","value":"8"}]}','$.payload') as array<varchar>)) as x(n)
내가 가진 오류 :
값이 배열에 캐스트 할 수없는
해결법
-
==============================
1.SELECT JSON_EXTRACT ( "{"페이로드 ": [{"입력 ","B ","값 ":"9 "}, {"타입 ":"A ","값 ":"8 "}]} ',' $의 .payload ')
SELECT JSON_EXTRACT ( "{"페이로드 ": [{"입력 ","B ","값 ":"9 "}, {"타입 ":"A ","값 ":"8 "}]} ',' $의 .payload ')
제공 :
[{ "입력", "B", "값": "9"}, { "타입": "A", "값": "8"}]
ARRAY 인
-
==============================
2.반환 데이터 형의 한 가지 가능한 해석은 다음과 같다 :
반환 데이터 형의 한 가지 가능한 해석은 다음과 같다 :
ARRAY<MAP<VARCHAR,VARCHAR>>
하지만지도에 값을 액세스하는 점 표기법을 사용하여 수행 할 수없는 단점이있다.
가정에 대한 대안 데이터 형식이 될 것입니다 :
ARRAY (ROW (VARCHAR 유형, 값 VARCHAR))
어느 ARRAY
대규모 여담은 여기 >> JSON은 약간 모호합니다.
어느 쪽이 맞습니까? JSON은 (당신의 언어를 호출 어떤 이름 속성의 가방을 객체 클래스) (당신의 언어를 호출 어떤 해시 맵, 사전, 키 - 값 쌍) 또는 더 구조체처럼지도의 표현을 반대인가? 그것은 자바 스크립트 (개체 표기법) 배열, 객체, 기본 유형에 대한 수용하도록에서 유래하지만, 더 광범위한 사용은 다른 언어 모호한 매핑 (HA)을 의미합니다. 아마도 기능적으로 동일하지만 무작위 / 읽고 쓰고 ROW 아마 몇 가지 추가 객체 지향 오버 헤드를 가지고 있지만,이 모든 나는 아무 대답이 없다, 그래서 모든 것을 어쨌든 객체를 자바로 구현하기위한 이론적으로 MAP은 빨리해야한다. 당신이 원하는대로 사용합니다. << I 빗나가.
당신은 자세한이 조금 발견 :
SELECT x.n['type'] as "type", x.n['value'] as "value" FROM UNNEST ( CAST( JSON_EXTRACT('{"payload":[{"type":"b","value":"9"},{"type":"a","value":"8"}]}' ,'$.payload') AS ARRAY<MAP<VARCHAR, VARCHAR>> ) ) AS x(n)
여기에 대안이다
SELECT n.type, n.value FROM UNNEST( CAST( JSON_EXTRACT( '{"payload":[{"type":"b","value":"9"},{"type":"a","value":"8"}]}' ,'$.payload' ) as ARRAY(ROW(type VARCHAR, value VARCHAR)) ) ) as x(n)
그것은 자세한으로 단지; 컬럼의 이름은 바로 CAST 표현식으로 이동하고 있지만, 아마도 (주관적!) 쉽게 볼 수 있습니다.
-
==============================
3.당신은 각각의 컬럼에 JSON_EXTRACT, CAST 마지막 UNNEST을 사용할 수 있습니다
당신은 각각의 컬럼에 JSON_EXTRACT, CAST 마지막 UNNEST을 사용할 수 있습니다
SELECT type,value FROM UNNEST(CAST(JSON_EXTRACT('{"payload":[{"type":"b","value":"9"}, {"type":"a","value":"8"}]}' ,'$.payload' ) as ARRAY(ROW(type VARCHAR, value VARCHAR) ) ) ) as x(type,value)
아래와 같은 출력을 제공
type | value ------+------- b | 9 a | 8
from https://stackoverflow.com/questions/34496811/presto-unnest-json by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 키 탭을 사용하여 oozie 작업을 제출 (0) | 2019.09.26 |
---|---|
[HADOOP] 두싯 IntDoubleProcedure NoClassDefFoundError를 (0) | 2019.09.26 |
[HADOOP] 하이브 테이블에 덮어 쓰기 파티션을 삽입 - 값은 복제하기 (0) | 2019.09.26 |
[HADOOP] 노드 / HBase를-비보안는 사육사가 아닙니다. 'zookeeper.znode.parent'구성 값을 확인하십시오. (0) | 2019.09.26 |
[HADOOP] 하둡지도에서 엑셀 파일을 읽기 감소 (0) | 2019.09.26 |