2017-10-10 1 views
1

하이브와 함께 작업 중이므로 json 형식으로 데이터를 추가해야합니다. 라이브러리 https://github.com/rcongiu/Hive-JSON-Serde을 사용합니다. 파일에서 하이브의 데이터를로드합니다.Hive-JSON-SerDe로 데이터 쿼리 추가

~$ cat test.json 

{"text":"foo","number":123} 
{"text":"bar","number":345} 

$ hadoop fs -put -f test.json /user/data/test.json 

$ hive 

hive> CREATE DATABASE test; 

hive> CREATE EXTERNAL TABLE test (text string) 
     ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe' 
     LOCATION '/user/data'; 

hive> SELECT * FROM test; 
OK 

foo 123 
bar 345 

하지만, 내가 좋아하는, 쿼리에서 데이터를로드 필요가 :

insert into table test values {"text": "abc", number: 666} 

누가 어떻게 이렇게 알고?

답변

0

SerDe는 실제로 데이터가 들어있는 파일에서 데이터를 읽는 외부 테이블과 함께 사용하기위한 것입니다. 따라서 예를 들어 json 데이터와 삽입 쿼리를 직접 삽입하는 데 도움이되지는 않습니다. hdfs의 파일에 데이터를 쓰고 파일이 들어있는 폴더에 외부 테이블을 만들거나 들어오는 데이터를 파싱하여 열로 삽입 할 수있는 방법을 제안합니다.