Hive ETL: JSON, XML, 텍스트 데이터 예제 로드
ETL 및 데이터 웨어하우징 도구인 Hive 하둡 생태계는 데이터 모델링, 데이터 조작, 데이터 처리 및 데이터 쿼리와 같은 기능을 제공합니다. 하이브에서 데이터 추출은 하이브에서 테이블을 만들고 구조화되고 반구조화된 데이터를 로드하고 요구 사항에 따라 데이터를 쿼리하는 것을 의미합니다.
일괄 처리를 위해 사용자 정의 맵을 사용하여 사용자 정의 스크립트를 작성하고 스크립팅 언어를 사용하여 스크립트를 줄일 예정입니다. 그것은 제공한다 SQL 쉬운 쿼리를 위한 환경 및 지원과 같습니다.
Hive를 사용하여 구조화된 데이터 작업
구조화된 데이터란 데이터가 행과 열의 올바른 형식으로 되어 있음을 의미합니다. 이게 더 비슷해요 RDBMS 적절한 행과 열이 있는 데이터.
여기서는 Hive의 텍스트 파일에 있는 구조화된 데이터를 로드하겠습니다.
단계 1) 이 단계에서는 데이터 유형이 있는 직원의 ID, 이름, 나이, 주소, 급여 및 부서와 같은 열 이름을 사용하여 "employees_guru" 테이블을 생성합니다.
위의 스크린샷에서 우리는 다음을 관찰할 수 있습니다.
- "employees_guru" 테이블 생성
- Employees.txt의 데이터를 "employees_guru" 테이블로 로드
단계 2) 이 단계에서는 "선택" 명령을 사용하여 이 테이블에 저장된 내용을 표시합니다. 다음 화면 샷에서 테이블 내용을 관찰할 수 있습니다.
– 샘플 코드 조각
수행할 쿼리
1) Create table employees_guru(Id INT, Name STRING, Age INT, Address STRING, Salary FLOAT, Department STRING) > Row format delimited > Fields terminated by ','; 2) load data local inpath '/home/hduser/Employees.txt' into TABLE employees_guru; 3) select * from employees_guru;
Hive(XML, JSON)를 사용하여 반구조화된 데이터 작업
Hive는 Hadoop 생태계에서 ETL 기능을 수행합니다. ETL 도구. 일부 유형의 애플리케이션에서는 맵 리듀스를 수행하는 것이 어려울 수 있습니다. Hive는 복잡성을 줄이고 데이터 웨어하우징 부문의 IT 애플리케이션에 대한 최상의 솔루션을 제공할 수 있습니다.
XML 및 JSON과 같은 반구조화된 데이터는 Hive를 사용하면 덜 복잡하게 처리할 수 있습니다. 먼저 Hive를 사용하여 어떻게 처리할 수 있는지 살펴보겠습니다. XML.
XML에서 하이브 테이블로
여기서는 XML 데이터를 Hive 테이블에 로드하고 XML 태그 내에 저장된 값을 가져오겠습니다.
단계 1) 문자열 데이터 유형의 str 열이 있는 "xmlsample_guru" 테이블 생성.
위의 스크린샷에서 우리는 다음을 관찰할 수 있습니다.
- "xmlsample_guru" 테이블 생성
- test.xml의 데이터를 "xmlsample_guru" 테이블로 로드
단계 2) 사용 xpath () 메서드를 사용하면 XML 태그 안에 저장된 데이터를 가져올 수 있습니다.
위의 스크린샷에서 우리는 다음을 관찰할 수 있습니다.
- XPATH() 메소드를 사용하여 /emp/esal/ 및 /emp/ename/에 저장된 값을 가져옵니다.
- XML 태그 내부에 값이 있습니다. 이 단계에서는 "xmlsample_guru" 테이블의 XML 태그에 저장된 실제 값을 표시합니다.
단계 3) 이 단계에서는 "xmlsample_guru" 테이블의 원시 XML을 가져와 표시합니다.
위의 스크린샷에서 우리는 다음을 관찰할 수 있습니다.
- 태그와 함께 표시되는 실제 XML 데이터
- 단일 태그를 관찰하면 상위 태그로 "emp"가 있고 하위 태그로 "ename" 및 "esal"이 있습니다.
코드 스 니펫 :
수행할 쿼리
1) create table xmlsample_guru(str string); 2) load data local inpath '/home/hduser/test.xml' overwrite into table xmlsample_guru; 3) select xpath(str,'emp/ename/text()'), xpath(str,'emp/esal/text()') from xmlsample_guru;
JSON(Java스크립트 객체 표기법)
트위터와 웹사이트 데이터는 JSON 형식으로 저장됩니다. 온라인 서버에서 데이터를 가져오려고 할 때마다 JSON 파일이 반환됩니다. Hive를 데이터 저장소로 사용하면 스키마를 생성하여 JSON 데이터를 Hive 테이블에 로드할 수 있습니다.
JSON을 하이브 테이블로
여기서는 JSON 데이터를 Hive 테이블에 로드하고 JSON 스키마에 저장된 값을 가져오겠습니다.
단계 1) 이 단계에서는 JSON 테이블 이름 "json_guru"를 생성하겠습니다. 일단 생성되면 실제 스키마의 내용을 로드하고 표시합니다.
위의 스크린샷에서 우리는 다음을 관찰할 수 있습니다.
- "json_guru" 테이블 생성
- test.json의 데이터를 "json_guru" 테이블로 로드
- json_guru 테이블에 저장된 JSON 파일의 실제 스키마 표시
단계 2) get_json_object() 메소드를 사용하면 JSON 계층 구조에 저장된 데이터 값을 가져올 수 있습니다.
위의 화면 샷에서 우리는 다음을 관찰할 수 있습니다.
- get_json_object (str,'$.ecode)를 사용하면 json_guru 테이블에서 ecode 값을 가져올 수 있습니다. 마찬가지로 get_json_object (str,'$.ename) ,get_json_object (str,'$.Sali) 를 사용하면 json_guru 테이블에서 ename sal 값을 가져옵니다.
- json_guru의 JSON 계층 내부에 저장된 값
코드 스 니펫
수행할 쿼리
1) create table json_guru(str string); 2) load data inpath 'home/hduser/test.json' into table json_guru; 3) select * from json1; 4) select get_json_object(str,'$.ecode') as ecode, get_json_object(str,'$.ename') as ename ,get_json_object(str,'$.sal') as salary from json_guru;
복잡한 JSON을 HIVE 테이블로 변환
여기에서는 복잡한 JSON 데이터를 Hive 테이블에 로드하고 JSON 스키마에 저장된 값을 가져올 것입니다.
단계 1) 단일 열 필드로 complexjson_guru 만들기
위의 스크린샷에서 우리는 다음을 관찰할 수 있습니다.
- 단일 열 필드를 문자열 데이터 유형으로 갖는 complexjson_guru 테이블에 생성
- emp.json 복합 JSON 파일에서 complexjson_guru로 데이터 로드
단계 2) get_json_object를 사용하면 JSON 파일 계층 구조 내에 저장된 실제 콘텐츠를 검색할 수 있습니다.
다음 스크린샷에서는 complexjson_guru에 저장된 데이터의 출력을 볼 수 있습니다.
단계 3) 이 단계에서는 “선택” 명령을 사용하여 실제로 “complexjson_guru” 테이블에 저장된 복잡한 JSON 데이터를 볼 수 있습니다.
-샘플 코드 조각,
수행할 쿼리
1) create table complexjson_guru(json string); 2) load data inpath 'home/hduser/emp.json' into table complexjson_guru; 3) select get_json_object(json,'$.ecode') as ecode ,get_json_object(json,'$.b') as code, get_json_object(json,'$.c') from complexjson_guru; 4) select * from complexjson_guru;
실시간 프로젝트의 Hive - 사용 시기 및 장소
Hadoop 생태계에서 Hive를 사용하는 시기와 장소:
인셀덤 공식 판매점인
- Hadoop 생태계에서 강력하고 효과적인 통계 기능을 사용할 때
- 정형 및 반정형 데이터 처리 작업 시
- Hadoop을 사용한 데이터 웨어하우스 도구
- HBASE, Hive를 통한 실시간 데이터 수집 가능
어디에
- ETL 및 데이터 웨어하우징 도구를 쉽게 사용하기 위해
- SQL 형태의 환경을 제공하고, HIVEQL을 이용하여 SQL과 같은 쿼리를 하기 위해
- 특정 클라이언트 요구 사항에 맞게 사용자 지정 맵 및 축소 스크립트를 사용하고 배포하려면