[HADOOP] 어떻게 JSON의 serde를 사용하여 하이브 테이블의 JSON 열을 구문 분석 할 수 있습니까?
HADOOP어떻게 JSON의 serde를 사용하여 하이브 테이블의 JSON 열을 구문 분석 할 수 있습니까?
나는 이벤트의 이름에 따라 서로 다른 테이블에 드 직렬화 된 JSON 이벤트를로드하려합니다.
지금 내가 같은 테이블에있는 모든 이벤트가, 테이블은 두 개의 열이 EventName을하고 페이로드 (페이로드 이벤트의 JSON 표현을 저장)
CREATE TABLE event( EventName STRING, Payload STRING)
그래서 기본적으로 내가 원하는 다음 표에 데이터를로드하는 것입니다 :
CREATE TABLE TempEvent ( Column1 STRING, Column2 STRING, Column3 STRING )
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
STORED AS TEXTFILE;
그리고 같은과 이벤트를로드 :
INSERT INTO TempEvent select Payload from event where EventName='TempEvent';
그러나 하이브는 대상 테이블은 3 열이 없다는 제외하고 select 문 단지 1을 던지고있다.
내가 뭔가 잘못하고있는 중이거나 이러한 목표를 달성하기 위해 다른 방법이 있나요?
해결법
-
==============================
1.json으로 serde 그것을 사용하기 위해 한 줄에 하나의 JSON있는 테이블을 필요로한다. 그래서 라인 때문에 사용자의 입력 테이블에서 작동하지 않습니다
json으로 serde 그것을 사용하기 위해 한 줄에 하나의 JSON있는 테이블을 필요로한다. 그래서 라인 때문에 사용자의 입력 테이블에서 작동하지 않습니다
TempEvent, {"Column1":"value1","Column2":"value2","Column3":"value3"}
유효한 JSON 없습니다. 그래서 일단 당신은 유효한 JSON을 포함하는 새로운 중간 테이블로 이동 한 다음이 데이터를로드를 사용에서 JSON의 serde 테이블을 채울 필요가 :
create table event_json (Payload string) stored as textfile; insert into table event_json select Payload from event where EventName='TempEvent'; create table TempEvent (Column1 string, Column2 string, Column3 string) ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'; load data inpath '/user/hive/warehouse/event_json' overwrite into table TempEvent;
그럼 당신은이 같은 열을 추출 할 수 있습니다 :
select Column1, Column2, Column3 from TempEvent;
소스 테이블은 원래, 당신은 단지 외부 테이블로로 TempEvent 테이블을 만들고 직접 데이터를 당겨 수있는 유효한 JSON 있다면 물론이 모든 처리가 필요하지 않을 것입니다.
from https://stackoverflow.com/questions/30603403/how-can-i-parse-a-json-column-of-a-hive-table-using-a-json-serde by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 색조 --workflow에서 Oozie 워크 플로우 종속성을 만드는 방법 - 편집기 (0) | 2019.10.19 |
---|---|
[HADOOP] HDFS 쓰는 동안 소켓 시간 초과 문제를 스파크 (0) | 2019.10.19 |
[HADOOP] 어떻게 혼자 HIVE에 대한 HDFS 복제 요인을 변경하려면 (0) | 2019.10.19 |
[HADOOP] HDFS에 디렉토리를 업로드 할 수 없습니다. `/ usr / 지방 / tmp를 / ': 해당 파일이나 디렉토리 (0) | 2019.10.19 |
[HADOOP] 하둡 MapReduce의 자바 프로그램 예외 : java.lang.NoSuchMethodError [중복] (0) | 2019.10.19 |