+ All Categories
Home > Documents > 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. ·...

실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. ·...

Date post: 14-Aug-2021
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
54
실무사례 실무사례 구축 2016-09-30 CBU / MIS 1 1. DW 요구사항 분석 Sales 전략을 수립하고 실행을 담당하는 Sales Manager는 다양한 분석을 기반으로 의사 결정을 수행하기 위하여 회사의 자재 (materials), 고객(customers), 판매 조직(sales organizations)에 대한 정보와 판매기록에 관한 정보를 (1)~(4)의 sample data와 같이 관리한다. (1) Material Tables
Transcript
Page 1: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

실무사례

실무사례 구축

2016-09-30 CBU / MIS 1

1. DW 요구사항분석Sales 전략을수립하고실행을담당하는Sales Manager는다양한분석을기반으로의사결정을수행하기위하여회사의자재 (materials), 고객(customers), 판매조직(sales organizations)에대한정보와판매기록에관한정보를 (1)~(4)의 sample data와같이관리한다.

(1) Material Tables

Page 2: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

실무사례

2016-09-30 CBU / MIS 2

(2) Sale Organization data

Page 3: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

실무사례

2016-09-30 CBU / MIS 3

(3) Customer Tables

Page 4: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

실무사례

2016-09-30 CBU / MIS 4

(4) Sales Data

- 2010년 1월부터 2012년 12월까지 월별 5개씩의 레코드를 추가하여 총 36 *

5 = 180개 정도의 레코드를 입력하시오 (각 필드의 값은 랜덤하게).

- 각 material 별로 unit of measure 값이 선택될 수 있도록 Sales data에 대한

입력폼을 만들어 보시오 (form 만드는 방법 숙지).

Page 5: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

실무사례

2016-09-30 CBU / MIS 5

Page 6: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

실무사례

2016-09-30 CBU / MIS 6

이상의데이터를사용하여다음과같은스타스키마로구축한다.

Page 7: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

실무사례

2016-09-30 CBU / MIS 7

그림 1-1의 스타 스키마에 대하여 다음과 같은 분석을 실행한다 : SQL로 작성

• Customer Name별로 판매금액의 합계는 ?

• 고객이 거주하는 도시별로 판매금액의 합계는 ?

• 제품 카테고리별로 판매금액의 합계는 ?

• 제품 이름별로 판매금액의 합계는 ? \

• 매장이 위치한 도시별로 판매금액의 합계는 ?

• 매장별로 판매금액의 합계는 ?

• 년도별 Sales Revenue의 합계는 ?

• 년도별, 월별 Sales Revenue의 합계는 ?

• 년도별, 월별, 주별 Sales Revenue의 합계는 ? (주 : 1주 ~ 53주)

• 제품별, 년도별 Sales Revenue의 합계는 ?

• 비오는 날에 Sales Revenue의 합계는 ?

• 환율이 높은 시기/중간/낮은 시기에 제품별로 Sales Revenue의 합계는 ?

Page 8: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

실무사례

2016-09-30 CBU / MIS 8

그림 1-1에서 다음과 같은 분석이 불가능하다. 이러한 분석이 가능하도록 1-1의 스타 스키마를 확

장하고, 적절한 데이터베이스를 로딩한 다음에 분석을 하시오.

• 고객이 거주하는 도시별로 Sales Revenue의 합계는 ?

• 고객이 거주하는 도시를 EAST, MIDWEST, WEST로 구분한 지역으로 묶는다고 가정할

때 각 지역별로 Sales Revenue의 합계는 ?

• 고객의 성별로 Sales Revenue의 합계는 ?

• 고객의 연령대별 Sales Revenue의 합계는 ? (10대, 20대, ..., 60대)

• Material 테이블에서 각 항목을 4개의 categories인 Food, Furniture, Electronics,

Others 으로 묶은 다음에 각 category별로 Sales Revenue의 합계는 ?

• 앞에서 각 category별로 년도별 Sales Revenue의 합계는 ?

Page 9: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

Access DB

• Database – star schema

2016-09-30 CBU / MIS 9

Page 10: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

분석 예제

• Customer Name별로 Sales Revenue의 합계는 ?

2016-09-30 CBU / MIS 10

SELECT cust.이름, count(*) as 구매회수, sum(단가*판매량) as 구매금액FROM cust INNER JOIN sales ON cust.고객번호 = sales.CustGroup By cust.이름;

Page 11: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

분석 예제

• Customer의 고객거주 도시별로 Sales Revenue의합계는 ?

2016-09-30 CBU / MIS 11

SELECT cust.주소시, count(*) as 구매회수, sum(단가*판매량) as 구매금액FROM cust INNER JOIN sales ON cust.고객번호 = sales.CustGroup By cust.주소시;

Page 12: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

BI 구축 방안

• RDB-based approach

– DB 설계와 분석용 DB 구축 및 응용 프로그램 개발에 시간 소요

– 변화에 대한 유연성 부족(예: 대부분의 프로세스를 프로그램 로직으로 구현하므로 환경 변화를 반영하는데 노력이 필요)

– 분석과 리포팅을 위한 별도의 작업을 필요로 함

• Packaged (BI) solution

– 상기 방식의 단점은 대부분 해결되나 도구 자체의 내부적인 체계로 인해 그 방법론과 처리 절차에 맞추어야 함 (교육 필요)

– 초기 가격적인 부담 (SW, 컨설팅 비용)

– Tool에서 제공하지 않는 기능을 추가하는 것이 어려움

– Multi-dimensional data model (vs. Star Schema) 활용

2012-11-00 12

Page 13: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

Hive

2016.08

충북대학교 조 완섭

비즈니스 인텔리전스

Page 14: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

목차

• 개요

• Hive 배경

• Hive 장점과 특징

• Hive 설치

• Hive Data Type과 데이터 저장소

• HiveQL - 데이터 정의와 데이터 로딩

• HiveQL - 질의어

2012-11-00 14

Page 15: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

개요

• Cloud system– 다수의 컴퓨터 (PC)들을 연결하여 고성능의 컴퓨터를 실현하는 기술(제품)

– 저비용으로 대규모 데이터를 처리하는데 적합함 (빅데이터 처리)

2012-11-00 15

Page 16: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

개요

• Hadoop

– Cloud system 상에서 빅데이터의 분산 저장 및 처리를효율적으로, 안정적으로, 편리하게 제공하는 파일 시스템(cf. 유닉스 파일 시스템, 윈도우 파일 시스템)

– Map-Reduce는 큰 데이터를 다루는 job을 여러개의 sub-tasks로 나누어 다수의 서버들로 구성된 클러스터(cloud)에서 병렬처리하고, 각 서버가 처리한 로컬 결과를통합하여 최종 결과를 만드는 프로그래밍 방식

– Map-Reduce 예제

2012-11-00 16

Page 17: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

개요

2012-11-00 17

Map-Reduce 예제 : 단어의 빈도수를 세는 프로그램

Page 18: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

Hive 배경

• Yahoo 는 Hadoop 상에서 비정형 데이터를 다루는 응용을개발하고 운영하기 위해 Pig를 개발함

• Facebook 은 Hadoop 상에서 data warehouse 솔루션을 개발하기 위해 Hive를 개발함– 데이터 량의 급증으로 기존 warehousing solution을 활용하여 BI를실현하는데 한계에 직면함

2012-11-00 18

작은 데이터정형화된 데이터비실시간성

기존의Data warehousing

HiveHadoop/Cloud

HiveHadoop/Cloud

빅데이터빅데이터

BI BI

SQL-like Pig

Page 19: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

Hive 배경

• Hadoop과 Hive– Hadoop 생태계는 아주 큰 데이터를 적은 비용으로 처리하기 위해등장함 (Cloud 시스템에서 분산 저장 및 처리로 해결)

– Hadoop에서는 분산 파일 시스템(HDFS) 상에서 Map-Reduce라는특별한 프로그래밍 모델을 사용하여 큰 연산 작업을 다수의 값싼서버들로 구성된 클러스터에서 분산처리하는 프로그래밍 방식을사용함; 저비용으로 고성능 컴퓨팅 실현, 수평 확장성을 제공함

– 그러나 (cloud-hadoop 기반의) Map-Reduce 프로그래밍은 작성하기어렵다는 단점이 있음

– Hive는 Map-Reduce 프로그래밍 대신에 SQL을 사용하여 분산처리를실현함 : SQL => Map-Reduce 프로그램

2012-11-00 19

SQL Hive Map-Reduce Hadoop

node

node

node

nodeMetaStore

Page 20: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

Hive 배경

• Hive MetaStore– data explorations, query optimization, query compilation 등에 유용한 정보인 schemas, statistics 등이 저장되어 있음

• Facebook의 Hive warehouse– 수만개의 테이블과 700TB 크기의 방대한 데이터가 있으며, 하루 10억명의 사용자에게 데이터 서비스를 제공하고 있음

2012-11-00 20

Page 21: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

Hive 장점과 특징

• Hive의 장점– Hive는 SQL과 유사한 고급 질의어(HQL, HiveQL)를 제공하며, 사용자가 작성하는 HQL의 대부분을 Map-Reduce 프로그램으로 변환해서Hadoop 에서 처리함

– Map-Reduce 프로그래밍의 부담을 제거하면서 빅데이터를 감당함

2012-11-00 21

Page 22: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

Hive 장점과 특징

• Hive의 특징– 데이터 웨어하우스 응용(OLAP)을 작성하는데 적합함 : 대용량 정적(static)데이터, 빠른 응답시간 불필요, 의사결정에 사용

– 레코드 단위로 갱신, 삽입, 삭제를 할 수 없음

– 배치 처리 시스템으로 응답시간은 다소 지연되나 (맵리듀스 구동시간) 대규모 데이터에 대한 연산에서 성능 유지, 확장성이 뛰어남

– 트랜잭션을 제공하지 않음 (OLTP 보다는 OLAP 기능임)

– Hive를 NoSQL과 연동시켜 사용하는 것도 가능함

– Facebook에서 개발함 (Yahoo는 Pig를 개발함)

2012-11-00 22

Page 23: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

Hive 장점과 특징

• 관련 도구들

– Pig• Hadoop 상에서 query가 아닌 데이터 흐름 언어를 제공함 (cf.Oracle PL/SQL)

• 외부에 있는 데이터를 하둡으로 가져오면서 적절한 변환을 하여좀 더 사용하기 쉬운 형태로 만드는 ETL 작업에 주로 사용됨

– Hbase (NoSQL)• Hive에서 제공하지 못하는 행 단위 갱신, 빠른 응답시간, 트랜잭션기능 등이 필요하다면 DBMS가 필요함

• HBase는 분산 및 확장 가능한 데이터 저장소 (DBMS)로써 행 단위갱신, 빠른 응답시간, 트랜잭션 기능, 컬럼지향 저장소 등 DB기능을 제공함

• HBase는 SQL과 같은 고급 질의어를 제공하지 않지만 HBase는Hive와 통합되어 사용될 수 있음

2012-11-00 23

Page 24: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

Hive 장점과 특징

2012-11-00 24

Hive, Pig, and Hbase

Page 25: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

Hive 설치 및 시작하기

• 설치가이드 참고

– 별도자료

2012-11-00 25

Page 26: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

Hive Data Type과 데이터 저장소

2012-11-00 26

Primitive Types

Page 27: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

Hive Data Type과 데이터 저장소

2012-11-00 27

Page 28: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

Hive Data Type과 데이터 저장소

2012-11-00 28

Complex Types (or collection)• Hive는 struct, map, array 타입을 지원함

• 관계형 데이터베이스에서는 이들 타입들이 정규화를 위반하므로 별도의 테이블로모델링되었으나, Hive에서는 대용량 데이터 처리에서 조인 비용 절감 등을 기대할 수

있으므로 다소 질의가 복잡해지더라도 이를 지원함

Page 29: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

Hive Data Type과 데이터 저장소

• Data 저장소

– Hive data는 다음과 같이 구조화됨• Database

– Tables, views, partitions, columns 등에 대한 naming conflicts를 방지하고, 사용자 혹은 사용자 그룹에 대한 security 강화 방안임

• Tables

– 동일한 스키마를 데이터 집합

– 예 : page_views(timestamp, userid, pare_url, referrer_url, IP)

• Partitions

– 각 테이블은 데이터가 어떻게 저장되는지를 결정하는 하나 이상의partition Keys를 가질 수 있음

• Buckets (or clusters)

– 각 파티션의 데이터는 컬럼의 해쉬함수 값을 기반으로 buckets 단위로 나뉘어짐

2012-11-00 29

Page 30: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

HiveQL - 데이터 정의

2012-11-00 30

Hive Database

hive> CREATE DATABASE financialshive> CREATE DATABASE IF NOT EXISTS financialshive> SHOW DATABASESdefaultfinancialshive> CREATE DATABASE human_resourceshive> SHOW DATABASESdefaultfinancialshuman_resourceshive> SHOW DATABASES LIKE 'h.*'human_resourceshive> ...

- Hive는 각 데이터베이스에 대하여 하나의 디렉토리를 생성하고(: DB_directory),

그 데이터베이스에서 생성한 테이블들은 DB_directory의 서브 디렉토리에 저장함

- 다만, default database에 속하는 테이블들은 자신의 디렉토리를 가지지 않음

- Hive Database는 단지 테이블들의 카탈로그 혹은 name space (테이블 이름의 충돌을막는 방안)로 간주될 수 있음

Page 31: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

HiveQL - 데이터 정의

2012-11-00 31

Managed table (or internal table)

- Hive가 테이블 내의 데이터 대한 수명을 관리하는 테이블로써 internal table이라고도 함

- 지금까지 설명한 테이블은 모두 managed table 임

- Hive가 데이터 파일을 관리하며, 테이블 삭제시 메타 정보와 파일을 함께 삭제함

- hive.metastore.warehouse.dir 에 정의된 디렉토리 (e.g.,

/user/hive/warehouse,by default)의 서브 디렉토리로 이들 테이블 데이터를 저장함

- drop table 명령어로 테이블 내의 모든 데이터가 삭제됨

External table

- Hive가 데이터를 소유하지 않고 기존 파일을 테이블의 데이터로 사용하는 테이블로써 테이블

생성시 External 이라는 키워드를 사용함

- Hive는 그 테이블에 대한 메타 데이터만 가지고 있다가 drop table 명령어가 실행되면

데이터는 그대로 두고 Hive meta data 내에서 그 테이블에 대한 정보만 지움

Page 32: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

HiveQL - 데이터 정의

2012-11-00 32

- 예제 : 테이블 생성CREATE TABLE employees (

name STRING,salary FLOAT,subordinates ARRAY<STRING>,deductions MAP<STRING, FLOAT>,address STRUCT<street:STRING, city:STRING,

state:STRING, zip:INT>);

Page 33: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

HiveQL - 데이터 정의

2012-11-00 33

파티셔닝된 managed table (external table도 파티셔닝이 가능함)

- 특정한 속성값을 기준으로 데이터를 분할하여 저장하는 테이블로써그 속성에 대한 조건을 빠르게 처리할 수 있게 됨

- 데이터를 첫 번째 country, 두 번째 state의 값을 기준으로 파티션하는 예제CREATE TABLE employees (

name STRING,salary FLOAT,subordinates ARRAY<STRING>,deductions MAP<STRING, FLOAT>,address STRUCT<street:STRING, city:STRING, state:STRING, zip:INT>

)PARTITIONED BY (country STRING, state STRING);

Hive는 파티셔닝을 위해 다음과 같은 서브 디렉토리들을 생성하게 됨 (country, state 값의 조합)....../employees/country=CA/state=AB.../employees/country=CA/state=BC....../employees/country=US/state=AL.../employees/country=US/state=AK...

Cloud/hadoop의 분산파일 시스템과 연계

Page 34: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

HiveQL - 데이터 정의

2012-11-00 34

- 다음 질의는 실제로 하나의 디렉토리 (...country=US/state=IL)만 탐색하면 질의

결과를 구할 수 있게 되므로 성능이 매우 좋음 (필터링 효과가 큼)

SELECT * FROM employees

WHERE country = 'US' AND state = 'IL';

- 그러나 모든 파티션을 탐색해야 하는 질의에서 파티션의 개수가 많다면 (where 절의

조건에서 필터링 효과가 매우 적은 경우) 거대한 MR 작업을 수반하므로 속도가 저하가 우려됨;

- map/reduce 모드를 다음과 같이 “strict”로 설정함으로써 지나친 오버헤더를 유발하는

질의를 금지시킬 수 있음

hive> set hive.mapred.mode=strict;

hive> SELECT e.name, e.salary FROM employees e LIMIT 100;

FAILED: Error in semantic analysis: No partition predicate found for

Alias "e" Table "employees"

<== strict mode 인 경우 where 절에 파티션에 대한 필터링 조건을 주어야 함

Page 35: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

Hive Data Loading

2012-11-00 35

(1) create table statement :create table emp5(

name string,salary float)

partitioned by (country string, state string)row format delimited fields terminated by ',';

(2) data file 준비Cho, 40000Park, 5000Kim, 30000Lee, 25000

(3) Hive 데이터 로딩hive> load data local inpath 'data_emp5' into table emp5> partition (country = 'Korea', state = 'Chungbuk');

(4) 확인hive>> select * from emp5;

OKCho 40000.0 Korea ChungbukPark 5000.0 Korea ChungbukKim 30000.0 Korea ChungbukLee 25000.0 Korea ChungbukTime taken: 0.1 seconds, Fetched: 4 row(s)\

데이터 로딩의 예제

Page 36: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

Hive Data Loading

2012-11-00 36

데이터 값의 텍스트 파일 인코딩

• 데이터 파일에서 필드 구분자로 쉼표나 탭을 사용할 수 있지만 데이터 자체에 쉼표나 탭이 있을 경우 혼선

• Hive에서는 제어문자 (문자열로 잘 사용되지 않음)를 필드 구분자로 지정할 수 있음

• 다음 표는 Hive의 기본 구분기호

Page 37: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

Hive Data Loading

2012-11-00 37

데이터 파일의 예

Employee 테이블에 로딩된 모습

Page 38: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

Hive Data Loading

2012-11-00 38

테이블을 생성할 때 필드 구분자를 별도로 지정하는 예

필드가 콤마로 구분되어 있는 경우의 예

CREATE TABLE some_data (first FLOAT,second FLOAT,third FLOAT

)ROW FORMAT DELIMITEDFIELDS TERMINATED BY ',';

^A^B^C

Page 39: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

HiveQL - 질의어

2012-11-00 39

- 테이블 생성의 예CREATE TABLE employees (

name STRING,salary FLOAT,subordinates ARRAY<STRING>,deductions MAP<STRING, FLOAT>,address STRUCT<street:STRING, city:STRING,

state:STRING, zip:INT>)PARTITIONED BY (country STRING, state STRING);

- 간단한 질의의 예hive> SELECT name, salary FROM employees;John Doe 100000.0Mary Smith 80000.0Todd Jones 70000.0Bill King 60000.0

Page 40: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

HiveQL - 질의어

2012-11-00 40

- Collection type을 선택하는 질의 (subordinates : array) :JSON (Java Script Object Notation) 구문으로 결과를 표시함

hive> SELECT name, subordinates FROM employees;John Doe ["Mary Smith","Todd Jones"]Mary Smith ["Bill King"]Todd Jones []Bill King []

- Collection type을 선택하는 질의 (deduction : map)

hive> SELECT name, deductions FROM employees;

John Doe {"Federal Taxes":0.2, "State Taxes":0.05, "Insurance":0.1}Mary Smith {"Federal Taxes":0.2, "State Taxes":0.05, "Insurance":0.1}Todd Jones {"Federal Taxes":0.15, "State Taxes":0.03, "Insurance":0.1}Bill King {"Federal Taxes":0.15, "State Taxes":0.03, "Insurance":0.1}

Page 41: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

HiveQL - 질의어

2012-11-00 41

- Collection type을 선택하는 질의 (address : struct)hive> SELECT name, address FROM employees;

John Doe {"street":"1 Michigan Ave.","city":"Chicago","state":"IL","zip":60600}Mary Smith {"street":"100 Ontario St.","city":"Chicago","state":"IL","zip":60601}Todd Jones {"street":"200 Chicago Ave.", "city":"OakPark","state":"IL", "zip":60700}Bill King {"street":"300 ObscureDr.","city":"Obscuria","state":"IL","zip":60100}

- Collection type/array에서 특정 항목을 참조하는 방법(index는 0-based); 결과가 없으면 NULL로 displayhive> SELECT name, subordinates[0] FROM employees;

John Doe Mary SmithMary Smith Bill KingTodd Jones NULLBill King NULL

Page 42: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

HiveQL - 질의어

2012-11-00 42

- Collection type/map 타입의 컬럼에서 항목 참조하기: index 대신에 key values를 사용하여 특정 항목을 지정함

hive> SELECT name, deductions["State Taxes"] FROM employees;John Doe 0.05Mary Smith 0.05Todd Jones 0.03Bill King 0.03

- Collection type/struct 타입의 컬럼에서 항목 참조하기: "dot" 표기법 사용

hive> SELECT name, address.city FROM employees;John Doe ChicagoMary Smith ChicagoTodd Jones Oak ParkBill King Obscuria

Page 43: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

HiveQL - 질의어

2012-11-00 43

Nested SQL

Page 44: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

HiveQL - 질의어

2012-11-00 44

- 예제 : select list의 세 번째 항목을 case 문에서 조건으로 결정함hive> SELECT name, salary,

> CASE> WHEN salary < 50000.0 THEN 'low'> WHEN salary >= 50000.0 AND salary < 70000.0 THEN 'middle'> WHEN salary >= 70000.0 AND salary < 100000.0 THEN 'high'> ELSE 'very high'> END AS bracket FROM employees;

John Doe 100000.0 very highMary Smith 80000.0 highTodd Jones 70000.0 highBill King 60000.0 middleBoss Man 200000.0 very highFred Finance 150000.0 very highStacy Accountant 60000.0 middle...

Page 45: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

HiveQL - 질의어

2012-11-00 45

- stocks 테이블 구조

CREATE EXTERNAL TABLE IF NOT EXISTS stocks (exchange STRING,symbol STRING,ymd STRING,price_open FLOAT,price_high FLOAT,price_low FLOAT,price_close FLOAT,volume INT,price_adj_close FLOAT

)ROW FORMAT DELIMITED FIELDS TERMINATED BY ','LOCATION '/data/stocks';

실무예제- stocks (증시) 테이블과 dividend (배당) 테이블을 생성하고, 데이터를 로딩함

Page 46: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

HiveQL - 질의어

2012-11-00 46

- 배당금(dividends) 테이블을 생성하고, stocks 테이블과 조인

CREATE EXTERNAL TABLE IF NOT EXISTS dividends (

ymd STRING,

dividend FLOAT

)

PARTITIONED BY (exchange STRING, symbol STRING)

ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

Page 47: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

HiveQL - 질의어

2012-11-00 47

exchange stock_symbol date stock_price_open stock_price_high stock_price_low stock_price_close stock_volume stock_price_adj_closeNASDAQ KINS 2010-02-08 2.9 2.9 2.9 2.9 0 2.9NASDAQ KINS 2010-02-05 2.9 2.9 2.9 2.9 700 2.9NASDAQ KINS 2010-02-04 2.96 2.96 2.96 2.96 0 2.96NASDAQ KINS 2010-02-03 2.96 2.96 2.96 2.96 0 2.96NASDAQ KINS 2010-02-02 2.97 2.97 2.95 2.96 2600 2.96NASDAQ KINS 2010-02-01 2.95 2.95 2.95 2.95 100 2.95NASDAQ KINS 2010-01-29 2.97 2.97 2.9 2.95 1800 2.95NASDAQ KINS 2010-01-28 2.97 2.97 2.97 2.97 0 2.97NASDAQ KINS 2010-01-27 2.9 2.97 2.9 2.97 1400 2.97NASDAQ KINS 2010-01-26 2.97 2.97 2.97 2.97 4000 2.97NASDAQ KINS 2010-01-25 2.99 2.99 2.99 2.99 1200 2.99… … … … … … … … ……..

stocks data

exchange stock_symbol date dividendsNASDAQ KMGB 2009-12-17 0.02NASDAQ KMGB 2009-09-01 0.02NASDAQ KMGB 2009-06-08 0.02NASDAQ KMGB 2009-03-06 0.02NASDAQ KMGB 2008-12-12 0.02NASDAQ KMGB 2008-09-10 0.02NASDAQ KMGB 2008-06-11 0.02NASDAQ KMGB 2008-03-12 0.02NASDAQ KMGB 2007-11-30 0.02NASDAQ KMGB 2007-08-29 0.02NASDAQ KMGB 2007-02-27 0.038NASDAQ KMGB 2006-08-29 0.038NASDAQ KMGB 2006-02-27 0.038

dividends data

Page 48: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

HiveQL - 질의어

2012-11-00 48

GROUP BY 절- 하나 이상의 컬럼들에 대하여 그 값(들)을 기준으로 그룹을 만든 후 집계를 수행

hive> SELECT year(ymd), avg(price_close) FROM stocks> WHERE exchange = 'NASDAQ' AND symbol = 'AAPL'> GROUP BY year(ymd);

1984 25.5786254405975341985 20.1936762210408671986 32.461028080212741987 53.889683991081631988 41.5400792751387661989 41.659762125166641990 37.562687998232631991 52.495533833861821992 54.803386102511191993 41.026719564505721994 34.0813495847914...

Page 49: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

HiveQL - 질의어

2012-11-00 49

HAVING 절

- 예제 : NASDAQ 자료에서 AAPL사의 년도별로 종가 평균이 50달러 이상인년도와

종가평균을 displayhive> SELECT year(ymd), avg(price_close)

> FROM stocks> WHERE exchange = 'NASDAQ' AND symbol = 'AAPL'> GROUP BY year(ymd)> HAVING avg(price_close) > 50.0;

1987 53.889683991081631991 52.495533833861821992 54.803386102511191999 57.770714608449792000 71.748928762617572005 52.401745992993554...

Page 50: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

HiveQL - 질의어

2012-11-00 50

Inner Join

hive> SELECT a.ymd, a.price_close, b.price_close> FROM stocks a JOIN stocks b ON a.ymd = b.ymd> WHERE a.symbol = 'AAPL' AND b.symbol = 'IBM';

2010-01-04 214.01 132.452010-01-05 214.38 130.852010-01-06 210.97 130.02010-01-07 210.58 129.552010-01-08 211.98 130.852010-01-11 210.11 129.48...

- stocks 테이블의 구조; AAPL(애플)과 IBM의 날짜별 주식 종가 비교- 애플의 회사 설립일이 최근(2010년)이라 결과는 2010년 이후부터 나타남

a

b

Page 51: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

HiveQL - 질의어

2012-11-00 51

- stocks 테이블과 dividends 테이블의 조인 (애플사의 종가와 배당금 정보)

hive> SELECT s.ymd, s.symbol, s.price_close, d.dividend> FROM stocks s JOIN dividends d

ON s.ymd = d.ymd AND s.symbol = d.symbol> WHERE s.symbol = 'AAPL';

1987-05-11 AAPL 77.0 0.0151987-08-10 AAPL 48.25 0.0151987-11-17 AAPL 35.0 0.02...1995-02-13 AAPL 43.75 0.031995-05-26 AAPL 42.69 0.031995-08-16 AAPL 44.5 0.031995-11-21 AAPL 38.63 0.03

Page 52: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

HiveQL - 질의어

2012-11-00 52

- 예제 AAPL 사의 날짜별 종가와 배당금이 지급된 날짜의 경우 배당률까지 displayhive> SELECT s.ymd, s.symbol, s.price_close, d.dividend

> FROM stocks s LEFT OUTER JOIN dividends d ON s.ymd = d.ymdAND s.symbol = d.symbol

> WHERE s.symbol = 'AAPL';...

1987-05-01 AAPL 80.0 NULL1987-05-04 AAPL 79.75 NULL1987-05-05 AAPL 80.25 NULL1987-05-06 AAPL 80.0 NULL1987-05-07 AAPL 80.25 NULL1987-05-08 AAPL 79.0 NULL1987-05-11 AAPL 77.0 0.0151987-05-12 AAPL 75.5 NULL1987-05-13 AAPL 78.5 NULL1987-05-14 AAPL 79.25 NULL1987-05-15 AAPL 78.25 NULL1987-05-18 AAPL 75.75 NULL1987-05-19 AAPL 73.25 NULL1987-05-20 AAPL 74.5 NULL...

Page 53: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

HiveQL - 질의어

2012-11-00 53

Outer-Join 개념

Page 54: 실무사례 - KOCWelearning.kocw.net/KOCW/document/2016/chungbuk/chowanse... · 2017. 1. 23. · 효율적으로,안정적으로,편리하게제공하는파일시스템 (cf.유닉스파일시스템,윈도우파일시스템)

추가 학습자료

2012-11-00 54

http://www.tutorialspoint.com/hive/https://cwiki.apache.org/confluence/display/Hive/Tutorial


Recommended