2016-07-27 1 views
0

테이블 이름이 EmpData이고 두 필드가 EmpID (INT)Details (nvarchar) 인 MySQL 서버에 있습니다. Details 필드 하이브 테이블에 JSON 필드 데이터를 가져올 수있는 방법이 있나요 내가sqoop을 사용하여 mySql 서버에서 하이브 테이블로 JSON 필드 데이터를 가져 오는 방법

SELECT name,address.street from EmpHiveStore; 

처럼 하이브 테이블에 하이브 테이블 EmpHiveStore 및 쿼리에 Details 필드 JSON 데이터를 가져올

{ "name": "Michel","address":{"house no":"12","street":"Johnson road","city":"New Delhi","country":"INDIA"}} 

{ "name": "John","address":{"house no":"99","street":"Johnson road","city":"London","country":"UK"}} 

같은 JSON 문자열을 포함 sqoop 사용?

감사합니다.

답변

0

Sqoop의 임무는 RDBMS (귀하의 경우 MySQL)에서 하이브로 데이터를 가져 오는 것입니다.

당신은하지가 존재하는 경우 하이브 테이블을 만드는 것이

sqoop import \ 
--connect jdbc:mysql://mysql.example.com/testdb \ 
--username root \ 
--password root \ 
--table EmpData \ 
--columns Details \ 
--hive-import \ 
--hive-table EmpHiveStore 

이에 대한 Sqoop을 가져 오기 명령을 사용해야합니다. Sqoop의 일은 여기서입니다. Hive는이 데이터를 String에 저장합니다. 하이브에 특수 JSON 유형이 없습니다. 따라서

SELECT name,address.street from EmpHiveStore; 

과 같은 검색어를 하이브를 통해 직접 수행 할 수 없습니다.

당신은 당신이 당신의 테이블에 단 1 열이하고 JSON 데이터가

show create table EmpHiveStore; 

사용하여 데이터의 위치를 ​​얻을 수 있습니다. 기본적으로 HDFS의 JSON 파일입니다.

중첩 된 JSON을 쿼리하려고합니다. 이와 같은 쿼리를 수행 할 수있는 다른 도구가 필요합니다. 이 경우 DrillSpark SQL과 같은 SQL 쿼리 엔진을 탐색 할 수 있습니다.

관련 문제