[HADOOP] JSON 데이터에서 HIVE 테이블을 어떻게 만들 수 있습니까?
HADOOPJSON 데이터에서 HIVE 테이블을 어떻게 만들 수 있습니까?
일부 JSON 데이터 (중첩)에서 하이브 테이블을 만들고 쿼리를 실행하고 싶습니다. 이것은 가능한가?
지금까지 JSON 파일을 S3에 업로드하고 EMR 인스턴스를 시작했지만 JSON 파일을 하이브 테이블로 가져 오려면 하이브 콘솔에 입력 할 내용을 모르겠습니다.
누구든지 나를 시작하게하는 몇 가지 예제 명령이 있습니까, 나는 Google에서 유용한 것을 찾을 수 없습니다 ...
해결법
-
==============================
1.Hive가 JSON을 테이블의 열에 매핑하려면 JSON serde를 사용해야합니다.
Hive가 JSON을 테이블의 열에 매핑하려면 JSON serde를 사용해야합니다.
어떻게 좋은지 보여주는 좋은 예가 여기에 있습니다.
http://aws.amazon.com/articles/2855
불행히도 제공된 JSON serde는 중첩 된 JSON을 잘 처리하지 않으므로 사용하기 위해 JSON을 병합해야 할 수도 있습니다.
다음은이 기사의 올바른 구문 예입니다.
create external table impressions ( requestBeginTime string, requestEndTime string, hostname string ) partitioned by ( dt string ) row format serde 'com.amazon.elasticmapreduce.JsonSerde' with serdeproperties ( 'paths'='requestBeginTime, requestEndTime, hostname' ) location 's3://my.bucket/' ;
-
==============================
2.실제로 JSON SerDe를 사용할 필요는 없습니다. 훌륭한 블로그 게시물이 있습니다. (나는 어떤 식 으로든 저자와 제휴하지 않았습니다.)
실제로 JSON SerDe를 사용할 필요는 없습니다. 훌륭한 블로그 게시물이 있습니다. (나는 어떤 식 으로든 저자와 제휴하지 않았습니다.)
http://pkghosh.wordpress.com/2012/05/06/hive-plays-well-with-json/
쿼리의 시간에 json을 파싱하기 위해 내장 함수 json_tuple을 사용하는 전략의 개요 (테이블 정의 당시가 아님) :
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF#LanguageManualUDF-json_tuple
기본적으로 테이블 스키마는 각 행을 단일 '문자열'열로로드 한 다음 필요에 따라 쿼리별로 관련 json 필드를 추출하기 만하면됩니다. 예 : 그 블로그 게시물의이 쿼리 :
SELECT b.blogID, c.email FROM comments a LATERAL VIEW json_tuple(a.value, 'blogID', 'contact') b AS blogID, contact LATERAL VIEW json_tuple(b.contact, 'email', 'website') c AS email, website WHERE b.blogID='64FY4D0B28';
저의 겸손한 경험에 비추어 볼 때 이것은 더욱 안정적입니다 (특히 중첩 된 객체를 사용하여 JSON serdes를 처리하는 다양한 비밀스러운 문제가 발생했습니다).
-
==============================
3.난 그냥 똑같은 문제를 해결해야했고, 아직 JSON SerDes에 연결된 것 중 아무 것도 충분하지 않게 보였다. 아마존은 좋을지 모르지만 어디서나 소스를 찾을 수는 없습니다 (링크가있는 사람이 있습니까?).
난 그냥 똑같은 문제를 해결해야했고, 아직 JSON SerDes에 연결된 것 중 아무 것도 충분하지 않게 보였다. 아마존은 좋을지 모르지만 어디서나 소스를 찾을 수는 없습니다 (링크가있는 사람이 있습니까?).
HCatalog는 JsonSerDe에 내장되어 있습니다. 실제로 다른 곳에서는 HCatalog를 사용하지는 않지만 저에게 도움이됩니다.
https://github.com/apache/hcatalog/blob/branch-0.5/core/src/main/java/org/apache/hcatalog/data/JsonSerDe.java
HCatalog의 JsonSerDe를 사용하려면 Hiberal-core .jar를 Hive의 auxpath에 추가하고 하이브 테이블을 생성하십시오 :
$ hive --auxpath /path/to/hcatalog-core.jar hive (default)> create table my_table(...) ROW FORMAT SERDE 'org.apache.hcatalog.data.JsonSerDe' ... ;
나는 여기에 자세한 내용과 함께 게시물을 썼다.
http://ottomata.org/tech/too-many-hive-json-serdes/
-
==============================
4.hcatalog-core의 Hive 0.12 이상에는 JSON 데이터를 직렬화 및 비 직렬화하는 JsonSerDe가 있습니다. 따라서 다음 예제와 같이 외부 테이블을 작성하면됩니다.
hcatalog-core의 Hive 0.12 이상에는 JSON 데이터를 직렬화 및 비 직렬화하는 JsonSerDe가 있습니다. 따라서 다음 예제와 같이 외부 테이블을 작성하면됩니다.
CREATE EXTERNAL TABLE json_table ( username string, tweet string, timestamp long) ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe' STORED AS TEXTFILE LOCATION 'hdfs://data/some-folder-in-hdfs'
해당 json 데이터 파일은 다음 예제와 같아야합니다.
{"username":"miguno","tweet":"Rock: Nerf paper, scissors is fine.","timestamp": 1366150681 } {"username":"BlizzardCS","tweet":"Works as intended. Terran is IMBA.","timestamp": 1366154481 }
-
==============================
5..json 파일이 큰 경우 손으로 스키마를 작성하는 것이 지루할 수 있습니다. 그렇다면이 편리한 도구를 사용하여 자동으로 생성 할 수 있습니다.
.json 파일이 큰 경우 손으로 스키마를 작성하는 것이 지루할 수 있습니다. 그렇다면이 편리한 도구를 사용하여 자동으로 생성 할 수 있습니다.
https://github.com/strelec/hive-serde-schema-gen
-
==============================
6.JSON 프로세싱 기능은 이제 Hive에서 즉시 사용할 수 있습니다.
JSON 프로세싱 기능은 이제 Hive에서 즉시 사용할 수 있습니다.
CREATE TABLE ... STORED AS JSONFILE
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-StorageFormatsStorageFormatsRowFormat,StorageFormat,andSerDe
각 JSON 객체는 한 행에 맞게 병합되어야합니다 (개행 문자는 지원되지 않음). 이 객체는 정식 JSON 배열의 일부가 아닙니다.
{"firstName":"John","lastName":"Smith","Age":21} {"firstName":"Jane","lastName":"Harding","Age":18}
from https://stackoverflow.com/questions/11479247/how-do-you-make-a-hive-table-out-of-json-data by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 종료 코드와 종료 상태가 스파크에 무엇을 의미합니까? (0) | 2019.06.13 |
---|---|
[HADOOP] 하이브는 쉼표로 인용 된 필드에 CSV를로드합니다. (0) | 2019.06.13 |
[HADOOP] ZooKeeper가 명령 프롬프트에서 실행 중인지 확인하려면 어떻게합니까? (0) | 2019.06.13 |
[HADOOP] Hive에서 쿼리를 실행하는 동안 출력과 함께 열 이름을 가져 오는 방법이 있습니까? (0) | 2019.06.13 |
[HADOOP] hadoop 작업을 죽이는 법 (0) | 2019.06.12 |