SlideShare a Scribd company logo
1 of 32
Download to read offline
Hive
아꿈사
Cecil
13년 10월 7일 월요일
Contents
• 하이브란?
• 하이브 설치하기
• 하이브의 컨포넌트
• 전통적인 데이터 베이스와의 비교
• HiveQL
• 테이블
• 데이터 쿼리하기
• References
13년 10월 7일 월요일
하이브란?
하둡에 저장된 데이터를 쉽게 처리할 수 있는
데이터웨어하우스 패키지
Facebook에서 매일 같이 생산되는 대량의
데이터를 관리하고 학습하기 위해 개발
What is the data warehouse?
In computing, a data warehouse or enterprise data warehouse (DW, DWH, or EDW) is a database used for
reporting and data analysis. It is a central repository of data which is created by integrating data from one or
more disparate sources. Data warehouses store current as well as historical data and are used for creating
trending reports for senior management reporting such as annual and quarterly comparisons
wikipidea(http://en.wikipedia.org/wiki/Data_warehouse)
13년 10월 7일 월요일
하이브 설치하기
• 요구사항
- Java 1.6 이상
- Hadoop 0.20.x (버전은 크게 상관 없음)
• 설치 및 실행
- http://mirror.apache-kr.org/hive/stable/hive-0.10.0.tar.gz 다운 로드 후 압축 해제
- 환경 변수 설정: $HADOOP_HOME
- 실행을 위한 기본 파일 생성 및 권한 설정
‣ hadoop fs -mkdir /tmp
‣ hadoop fs -chmod a+w /tmp
‣ hadoop fs -mkdir /user/hive/warehouse
‣ hadoop fs -chmod a+w /user/hive/warehouse
- 하이브 셸 실행: hive
13년 10월 7일 월요일
FAILED: Error in metadata: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask
Hive 실행시 아래와 같은 예외가 발생하는 경우
• 원인: hadoop을 직접 Build를 수행한 적이 있을 경우 classpath에
동일한 jar 파일이 여러번 참조되어 발생함
• 해결책: $HADOOP_HOME/build 디렉토리 삭제 or 이름 변경
13년 10월 7일 월요일
하이브의 컨포넌트
13년 10월 7일 월요일
하이브 설정
• config 파일 설정
- hive-site.xml 파일이 아닌 경로를 설정
- 하이브 셸 실행 시
‣ hive --config <디렉토리 경로>
• 속성 설정
- 하이브 셸 실행 시
‣ hive -hiveconf fs.default.name=localhost
- 셸 내에서
‣ hive> SET hive.enforce.bucketing=true
13년 10월 7일 월요일
속성 지정 우선 순위
1. 하이브 SET 명령어
2. 명령행 -hiveconf 옵션
3. hive-site.xml
4. hive-default.xml
5. hadoop-site.xml
6. hadoop-default.xml
13년 10월 7일 월요일
로깅
• 설정
- conf/hive-log4j.properties
• 기본 로그 파일 위치
- /tmp/$USER/hive.log
• 하이브 셸 실행시 옵션 변경
- hive -hiveconf hive.root.logger=DEBUG,console
13년 10월 7일 월요일
하이브 서비스
cli
하이브 셸에 대한 명령행 인터페이스
hiveserver
쓰리프트, JDBC, ODBC 연결자를 사용하는 응용 프로그램은 하이브와
통신하기 위하여 하이브 서버를 필요
hwi
하이브 웹 인터페이스
jar
classpath에 하둡과 하이브 클래스 모두를 사용하는 자바 응용 프로그
램을 실행하기 위한 방법. hadoop jar 와
metastore
하이브 실행시 메타 데이터가 저장되는 장소
13년 10월 7일 월요일
Hive clients
hive --service hiveserver
하이브 서비스 아키텍처
13년 10월 7일 월요일
메타 스토어
하이브 메타데이터에서 가장 중요한 저장소
• 서비스와 데이터 저장소로 이루어짐
• 기본 설정값
- 메타 데이터 서비스: 하이브 서비스와 동일 JVM에서 실행
- 데이터 저장소: 로컬 디스크 임베디드 더비 데이터 베이스
13년 10월 7일 월요일
메타 스토어 설정
주요 속성
• 하이브 기본 디렉토리
- hive.metastore.warehouse.dir
• 임베디드 메타 스토어 사용유무
- hive.metastore.local
- 0.10 버전에서 duplicate 됨
• 연결할 메타 스토어 서버
- hive.metastore.uris
• ETC
- javax.jdo.option.xxxx
13년 10월 7일 월요일
전통적인 데이터 베이스와의 비교
13년 10월 7일 월요일
테이블 스키마 검증 시점
전통적인 데이터 베이스
• 데이터를 적재하는 시점에 검증
• 만일 Insert중인 데이터가 스키마에 부합되지 않으면 데이터 거부
• 컬럼 단위로 색인이 가능하기 때문에 빠른 쿼리 성능을 제공
하이브
• 쿼리 실행시 데이터 검증
• 데이터의 매우 빠른 적재를 제공 (ex: 파일 복사 or 이동)
• 동일 데이터를 두 스키마로 다루어야 할때 훌륭한 유연성을 제공
13년 10월 7일 월요일
갱신, 트랜잭션, 색인
• 하이브는 갱신을 지원하지 않음
• 락 매카니즘
• 주키퍼를 사용하여 테이블과 파티션 수준의 락을 지원(0.7.0)
• 지원 색인
• 0.7.0부터 특별한 경우를 위한 색인 기능을 제공
• 컴팩트, 비트맵 타입 지원
13년 10월 7일 월요일
HiveQL
13년 10월 7일 월요일
표준 SQL과의 주요 차이
속성 SQL HiveQL
갱신 UPDATE, INSERT, DELETE INSERT OVERWRITE TABLE
데이터형
정수형, 부동 소수점, 고정소수점, 텍스트,
바이너리, 시간
추가적으로 배열, 맵, 구조체 지원
다중 테이블 삽입 지원하지 않음 지원
조인
FROM 절에서 테이블 조인
WHERE 절에서도 조건 지원 (SQL-92 지원)
내부조인, 외부조인, 세미조인, 맵조인지원
(WHERE절 조건 지원 X)
서브쿼리 어떠한 절에서도 사용가능 FROM 절에서만 사용 가능
뷰 업데이트 가능 읽기 전용
확장 가능성 사용자 정의 함수, 저장 프로시저 사용자 정의 함수, 맵-리듀스 스크립트
13년 10월 7일 월요일
데이터형
Feature SQL HiveQL References
Joins SQL-92 or variants (join
tables in the FROM clause,
join condition in the
WHERE clause)
Innerjoins,outerjoins,semi
joins, map joins. SQL-92
syntax, with hinting.
“Joins” on page 443
Subqueries In any clause. Correlated or
noncorrelated.
Only in the FROM clause.
Correlated subqueries not
supported
“Subqueries” on page 446
Views Updatable. Materialized or
nonmaterialized.
Read-only. Materialized
views not supported
“Views” on page 447
Extension points User-defined functions.
Stored procedures.
User-defined functions.
MapReduce scripts.
“User-Defined Functions” on page 448,
“MapReduce Scripts” on page 442
Data Types
Category Type Description Literal examples
Primitive TINYINT 1-byte(8-bit)signedinteger,from-128to
127
1
SMALLINT 2-byte (16-bit) signed integer, from
-32,768 to 32,767
1
INT 4-byte (32-bit) signed integer, from
-2,147,483,648 to 2,147,483,647
1
BIGINT 8-byte (64-bit) signed integer, from
-9,223,372,036,854,775,808 to
9,223,372,036,854,775,807
1
FLOAT 4-byte (32-bit) single-precision floating-
point number
1.0
DOUBLE 8-byte (64-bit) double-precision floating-
point number
1.0
BOOLEAN true/false value TRUE
STRING Character string 'a', "a"
BINARY Byte array Not supported
TIMESTAMP Timestamp with nanosecond precision 1325502245000, '2012-01-02
03:04:05.123456789'
424 | Chapter 12: Hive
Category Type Description Literal examples
Complex ARRAY An ordered collection of fields. The fields
must all be of the same type.
array(1, 2) a
MAP Anunorderedcollectionofkey-valuepairs.
Keysmustbeprimitives;valuesmaybeany
type. For a particular map, the keys must
be the same type, and the values must be
the same type.
map('a', 1, 'b', 2)
STRUCT Acollectionofnamedfields.Thefieldsmay
be of different types.
struct('a', 1, 1.0) b
a Theliteralformsforarrays,maps,andstructsareprovidedasfunctions.Thatis,array(),map(),andstruct()arebuilt-inHivefunctions.
b The columns are named col1, col2, col3, etc.
Primitive types
TINYINT SMALLINT INT BIGINT
byte short int long
기본형과 복합형 모두 지원
13년 10월 7일 월요일
연산자와 함수
• 관계형, 산술, 논리 연산자와 같은 일반적인 SQL 연산자 제공
-“||”는 문자열 연결이 아니라 논리 OR
• 여러가지 내장 함수가 포함되어 있음
- hive> SHOW FUNCTIONS
• 형 변환
- 암묵적 형변환을 수행하기 위해 기본형에 대한 계층 구조를 가짐
- 암묵적 원칙
- 정수형, FLOAT, STRING => DOUBLE
-TINY INT, SMALL INT, INT => FLOAT
- Boolean은 어떠한 형으로 변환 안됨
- 명시적 형변환: CAST 사용
13년 10월 7일 월요일
테이블
13년 10월 7일 월요일
하이브 테이블은 논리적으로 저장된 데이터와
테이블에서 데이터의 배치를 기술하는 메타데이터로 구성
13년 10월 7일 월요일
관리 테이블과 외부 테이블
• 하이브는 기본적으로 테이블을 직접 관리
- 데이터를 데이터웨어하우스로 이동한다는 의미
• 외부 테이블
- 웨어하우스 디렉토리 외부에서 데이터를 참조
• 차이점
- 삭제시 외부 테이블은 데이터를 삭제하지 않음
13년 10월 7일 월요일
파티션
컬럼의 값을 기반으로 크게 나눠놓는 방식
관련된 파티션의 파일만 스캔하면 되기 때문에 효율적
CREATE TABLE logs (ts BIGINT, line STRING)
PARTITIONED BY (dt STRING, country STRING);
LOAD DATA LOCAL INPATH 'input/hive/partitions/file1'
INTO TABLE logs PARTITION (dt='2001-01-01', country='GB');
/user/hive/warehouse/logs/dt=2010-01-01/country=GB/file1
/file2
/country=US/file3
/dt=2010-01-02/country=GB/file4
/country=US/file5 /file6
EX) 날짜와 국가 코드로
파티셔닝할 경우
저장 디렉토리
13년 10월 7일 월요일
버킷
• 테이블이나 파티션에서 더 효율적 쿼리를 위해 사용
• 사용 이유
- 추가 구조를 부여하여 효율적인 쿼리가 가능(조인, 정렬 등)
- 샘플링을 효율적으로 할수 있음
• 버킷은 테이블 디렉토리 안에 파일 하나로 표현
CREATE TABLE bucketed_users (id INT, name STRING)
CLUSTERED BY (id) INTO 4 BUCKETS;
CREATE TABLE bucketed_users (id INT, name STRING)
CLUSTERED BY (id) SORTED BY (id ASC) INTO 4 BUCKETS;
// 정렬, 외부에서 생성된 데이터를 버킷팅된 테이블로 적재가 가능하지만
일반적으로는 존재하는 테이블에서 버킷팅 수행
hive> SELECT * FROM users;
0 Nat
2 Joe
3 Kay
4 Ann
INSERT OVERWRITE TABLE bucketed_users
SELECT * FROM users;
13년 10월 7일 월요일
기타 테이블 연산
• 데이터 임포트하기
- INSERT or CATS(CREATE TABLE ..AS .. SELECT)
- ex) INSERT OVERWRITE TABLE target SELECT col1, col2 FROM source;
• 테이블 변경하기
-ALTER TABLE
- ex) ALTER TABLE target ADD COLUMNS (col3 STRING);
• 테이블 삭제하기
- DROP TABLE
- 데이터만 지울 경우 warehouse 디렉토리 내의 파일 제거
13년 10월 7일 월요일
데이터 쿼리하기
13년 10월 7일 월요일
ORDER BY
- 전체적으로 정렬된 결과를 생성, 이를 위해 리듀서를 하나로 설정해야 함
- 대규모 데이터셋에서 매우 비효율적
SORT BY
- 리듀서당 정렬된 파일을 생성
DISTRIBUTE BY
- 특정 로우가 특정 리듀서로 가도록 보장
정렬과 집계
FROM records2
SELECT year, temperature
DISTRIBUTE BY year
SORT BY year ASC, temperature DESC;
13년 10월 7일 월요일
하둡 스트리밍과 같은 방식을 사용하여
TRANSFORM, MAP, REDUCE 절을
통해 외부 스크립트나 프로그램을 호출 가능
맵 리듀스 스크립트
#!/usr/bin/env python
import re import sys
for line in sys.stdin:
(year, temp, q) = line.strip().split()
if (temp != "9999" and re.match("[01459]", q)):
print "%st%s" % (year, temp)
ADD FILE /path/to/is_good_quality.py;
FROM records2
SELECT TRANSFORM(year, temperature, quality)
USING 'is_good_quality.py'
AS year, temperature;
13년 10월 7일 월요일
하이브는 내부조인, 외부조인, 세미조인, 맵 조인을 지원
- 맵조인: 테이블 하나가 메모리에 적재될 만큼 충분히 작다면 하이브는
매퍼 단위로 조인을 수행할 수 있도록 지원
조인
hive> SELECT * FROM sales;
Joe 2
Hank 4
Ali 0
Eve 3
Hank 2
hive> SELECT * FROM things;
2 Tie
4 Coat
3 Hat
1 Scarf
hive> SELECT sales.*, things.*
> FROM sales JOIN things ON (sales.id = things.id);
Joe 2 2 Tie
Hank 2 2 Tie
Eve 3 3 Hat
Hank 4 4 Coat
EX) 내부 조인 EX
13년 10월 7일 월요일
서브 쿼리 & 뷰
SELECT station, year,AVG(max_temperature)
FROM (
SELECT station, year, MAX(temperature) AS
max_temperature FROM records2
WHERE temperature != 9999
AND (quality = 0 OR quality = 1 OR quality = 4
OR quality = 5 OR quality = 9) GROUP BY
station, year
) mt
GROUP BY station, year;
CREATEVIEW valid_records AS
SELECT *
FROM records2
WHERE temperature != 9999
AND (quality = 0 OR quality = 1 OR quality = 4
OR quality = 5 OR quality = 9);
13년 10월 7일 월요일
References
1. Tom White (2013). 하둡 완벽가이드. (심탁
길, 김현우, 옮김). 서울: 한빛미디어. (원서출판
2012)
13년 10월 7일 월요일

More Related Content

What's hot

SW1차 프로젝트 Hive 최종발표
SW1차 프로젝트 Hive 최종발표SW1차 프로젝트 Hive 최종발표
SW1차 프로젝트 Hive 최종발표Sinhyub Kim
 
Hive 입문 발표 자료
Hive 입문 발표 자료Hive 입문 발표 자료
Hive 입문 발표 자료beom kyun choi
 
하둡 타입과 포맷
하둡 타입과 포맷하둡 타입과 포맷
하둡 타입과 포맷진호 박
 
20141029 하둡2.5와 hive설치 및 예제
20141029 하둡2.5와 hive설치 및 예제20141029 하둡2.5와 hive설치 및 예제
20141029 하둡2.5와 hive설치 및 예제Tae Young Lee
 
하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다민철 정민철
 
하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기beom kyun choi
 
Hadoop 제주대
Hadoop 제주대Hadoop 제주대
Hadoop 제주대DaeHeon Oh
 
하둡 HDFS 훑어보기
하둡 HDFS 훑어보기하둡 HDFS 훑어보기
하둡 HDFS 훑어보기beom kyun choi
 
하둡 설치(의사분산모드)
하둡 설치(의사분산모드)하둡 설치(의사분산모드)
하둡 설치(의사분산모드)Kwangyoung Jeon
 
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)Matthew (정재화)
 
Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013Gruter
 
An introduction to hadoop
An introduction to hadoopAn introduction to hadoop
An introduction to hadoopMinJae Kang
 
서울 하둡 사용자 모임 발표자료
서울 하둡 사용자 모임 발표자료서울 하둡 사용자 모임 발표자료
서울 하둡 사용자 모임 발표자료Teddy Choi
 
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for HadoopSeungYong Baek
 

What's hot (20)

SW1차 프로젝트 Hive 최종발표
SW1차 프로젝트 Hive 최종발표SW1차 프로젝트 Hive 최종발표
SW1차 프로젝트 Hive 최종발표
 
Hive 입문 발표 자료
Hive 입문 발표 자료Hive 입문 발표 자료
Hive 입문 발표 자료
 
하둡 타입과 포맷
하둡 타입과 포맷하둡 타입과 포맷
하둡 타입과 포맷
 
Hadoop administration
Hadoop administrationHadoop administration
Hadoop administration
 
20141029 하둡2.5와 hive설치 및 예제
20141029 하둡2.5와 hive설치 및 예제20141029 하둡2.5와 hive설치 및 예제
20141029 하둡2.5와 hive설치 및 예제
 
하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다
 
하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기
 
Hadoop 제주대
Hadoop 제주대Hadoop 제주대
Hadoop 제주대
 
하둡 HDFS 훑어보기
하둡 HDFS 훑어보기하둡 HDFS 훑어보기
하둡 HDFS 훑어보기
 
하둡 설치(의사분산모드)
하둡 설치(의사분산모드)하둡 설치(의사분산모드)
하둡 설치(의사분산모드)
 
HBase 훑어보기
HBase 훑어보기HBase 훑어보기
HBase 훑어보기
 
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)
 
Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013
 
Hdfs
HdfsHdfs
Hdfs
 
An introduction to hadoop
An introduction to hadoopAn introduction to hadoop
An introduction to hadoop
 
HDFS Overview
HDFS OverviewHDFS Overview
HDFS Overview
 
hadoop ch1
hadoop ch1hadoop ch1
hadoop ch1
 
Hadoop발표자료
Hadoop발표자료Hadoop발표자료
Hadoop발표자료
 
서울 하둡 사용자 모임 발표자료
서울 하둡 사용자 모임 발표자료서울 하둡 사용자 모임 발표자료
서울 하둡 사용자 모임 발표자료
 
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
 

Viewers also liked

Logstash, ElasticSearch, Kibana
Logstash, ElasticSearch, KibanaLogstash, ElasticSearch, Kibana
Logstash, ElasticSearch, KibanaHyeonSeok Choi
 
Hadoop Overview 1
Hadoop Overview 1Hadoop Overview 1
Hadoop Overview 1Kay Kim
 
Apache Hive: for business intelligence use and real-time I/O use (Korean)
Apache Hive: for business intelligence use and real-time I/O use (Korean)Apache Hive: for business intelligence use and real-time I/O use (Korean)
Apache Hive: for business intelligence use and real-time I/O use (Korean)Teddy Choi
 
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
SQL-on-Hadoop with Apache Tajo,  and application case of SK TelecomSQL-on-Hadoop with Apache Tajo,  and application case of SK Telecom
SQL-on-Hadoop with Apache Tajo, and application case of SK TelecomGruter
 
introduce of Hadoop map reduce
introduce of Hadoop map reduceintroduce of Hadoop map reduce
introduce of Hadoop map reduceDaeyong Shin
 
혼자 있고 싶은 순간 코쿵! (Cocoong)
혼자 있고 싶은 순간 코쿵! (Cocoong)혼자 있고 싶은 순간 코쿵! (Cocoong)
혼자 있고 싶은 순간 코쿵! (Cocoong)ksyeah
 
하이브 최적화 방안
하이브 최적화 방안하이브 최적화 방안
하이브 최적화 방안Teddy Choi
 
Introduction to Apache Hive(Big Data, Final Seminar)
Introduction to Apache Hive(Big Data, Final Seminar)Introduction to Apache Hive(Big Data, Final Seminar)
Introduction to Apache Hive(Big Data, Final Seminar)Takrim Ul Islam Laskar
 
Anomy chat platform
Anomy chat platformAnomy chat platform
Anomy chat platform동철 박
 
Apache Hive Hook
Apache Hive HookApache Hive Hook
Apache Hive HookMinwoo Kim
 
프로그래머로 사는 법 Ch14
프로그래머로 사는 법 Ch14프로그래머로 사는 법 Ch14
프로그래머로 사는 법 Ch14HyeonSeok Choi
 
자바 병렬 프로그래밍 ch9
자바 병렬 프로그래밍 ch9자바 병렬 프로그래밍 ch9
자바 병렬 프로그래밍 ch9HyeonSeok Choi
 
SICP_2.5 일반화된 연산시스템
SICP_2.5 일반화된 연산시스템SICP_2.5 일반화된 연산시스템
SICP_2.5 일반화된 연산시스템HyeonSeok Choi
 
서버인프라를지탱하는기술3_2_3
서버인프라를지탱하는기술3_2_3서버인프라를지탱하는기술3_2_3
서버인프라를지탱하는기술3_2_3HyeonSeok Choi
 

Viewers also liked (20)

Erlang
ErlangErlang
Erlang
 
Logstash, ElasticSearch, Kibana
Logstash, ElasticSearch, KibanaLogstash, ElasticSearch, Kibana
Logstash, ElasticSearch, Kibana
 
최종발표
최종발표최종발표
최종발표
 
Hadoop Overview 1
Hadoop Overview 1Hadoop Overview 1
Hadoop Overview 1
 
Apache Hive: for business intelligence use and real-time I/O use (Korean)
Apache Hive: for business intelligence use and real-time I/O use (Korean)Apache Hive: for business intelligence use and real-time I/O use (Korean)
Apache Hive: for business intelligence use and real-time I/O use (Korean)
 
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
SQL-on-Hadoop with Apache Tajo,  and application case of SK TelecomSQL-on-Hadoop with Apache Tajo,  and application case of SK Telecom
SQL-on-Hadoop with Apache Tajo, and application case of SK Telecom
 
introduce of Hadoop map reduce
introduce of Hadoop map reduceintroduce of Hadoop map reduce
introduce of Hadoop map reduce
 
혼자 있고 싶은 순간 코쿵! (Cocoong)
혼자 있고 싶은 순간 코쿵! (Cocoong)혼자 있고 싶은 순간 코쿵! (Cocoong)
혼자 있고 싶은 순간 코쿵! (Cocoong)
 
Apache Hive
Apache HiveApache Hive
Apache Hive
 
하이브 최적화 방안
하이브 최적화 방안하이브 최적화 방안
하이브 최적화 방안
 
Introduction to Apache Hive(Big Data, Final Seminar)
Introduction to Apache Hive(Big Data, Final Seminar)Introduction to Apache Hive(Big Data, Final Seminar)
Introduction to Apache Hive(Big Data, Final Seminar)
 
Anomy chat platform
Anomy chat platformAnomy chat platform
Anomy chat platform
 
Apache Hive Hook
Apache Hive HookApache Hive Hook
Apache Hive Hook
 
Apache Hive - Introduction
Apache Hive - IntroductionApache Hive - Introduction
Apache Hive - Introduction
 
프로그래머로 사는 법 Ch14
프로그래머로 사는 법 Ch14프로그래머로 사는 법 Ch14
프로그래머로 사는 법 Ch14
 
C++ api design 품질
C++ api design 품질C++ api design 품질
C++ api design 품질
 
자바 병렬 프로그래밍 ch9
자바 병렬 프로그래밍 ch9자바 병렬 프로그래밍 ch9
자바 병렬 프로그래밍 ch9
 
SICP_2.5 일반화된 연산시스템
SICP_2.5 일반화된 연산시스템SICP_2.5 일반화된 연산시스템
SICP_2.5 일반화된 연산시스템
 
Code1_2
Code1_2Code1_2
Code1_2
 
서버인프라를지탱하는기술3_2_3
서버인프라를지탱하는기술3_2_3서버인프라를지탱하는기술3_2_3
서버인프라를지탱하는기술3_2_3
 

Similar to Apache hive

Expanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with TajoExpanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with TajoGruter
 
Expanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with TajoExpanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with TajoMatthew (정재화)
 
log-monitoring-architecture.pdf
log-monitoring-architecture.pdflog-monitoring-architecture.pdf
log-monitoring-architecture.pdfSungkyun Kim
 
Apache hbase overview (20160427)
Apache hbase overview (20160427)Apache hbase overview (20160427)
Apache hbase overview (20160427)Steve Min
 
Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)Gruter
 
빅데이터, big data
빅데이터, big data빅데이터, big data
빅데이터, big dataH K Yoon
 
Node.js DBMS short summary
Node.js DBMS short summaryNode.js DBMS short summary
Node.js DBMS short summaryHoChul Shin
 
about hadoop yes
about hadoop yesabout hadoop yes
about hadoop yesEunsil Yoon
 
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4Seok-joon Yun
 
하둡-rhive
하둡-rhive하둡-rhive
하둡-rhiveYunsu Lee
 
Jco 소셜 빅데이터_20120218
Jco 소셜 빅데이터_20120218Jco 소셜 빅데이터_20120218
Jco 소셜 빅데이터_20120218Hyoungjun Kim
 
Hadoop Installation Tutorial for KT ucloud biz
Hadoop Installation Tutorial for KT ucloud bizHadoop Installation Tutorial for KT ucloud biz
Hadoop Installation Tutorial for KT ucloud biz치완 박
 
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)SANG WON PARK
 
Big data application architecture 요약2
Big data application architecture 요약2Big data application architecture 요약2
Big data application architecture 요약2Seong-Bok Lee
 
2013.02.02 지앤선 테크니컬 세미나 - 하둡으로 배우는 대용량 데이터 분산처리 기술(이현남)
2013.02.02 지앤선 테크니컬 세미나 - 하둡으로 배우는 대용량 데이터 분산처리 기술(이현남)2013.02.02 지앤선 테크니컬 세미나 - 하둡으로 배우는 대용량 데이터 분산처리 기술(이현남)
2013.02.02 지앤선 테크니컬 세미나 - 하둡으로 배우는 대용량 데이터 분산처리 기술(이현남)JiandSon
 
SteelEye 표준 제안서
SteelEye 표준 제안서SteelEye 표준 제안서
SteelEye 표준 제안서Yong-uk Choe
 
Gpdb best practices v a01 20150313
Gpdb best practices v a01 20150313Gpdb best practices v a01 20150313
Gpdb best practices v a01 20150313Sanghee Lee
 
Vertica New Features - 8.1에서 9.2까지
Vertica New Features - 8.1에서 9.2까지Vertica New Features - 8.1에서 9.2까지
Vertica New Features - 8.1에서 9.2까지Kee Hoon Lee
 

Similar to Apache hive (20)

Expanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with TajoExpanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with Tajo
 
Expanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with TajoExpanding Your Data Warehouse with Tajo
Expanding Your Data Warehouse with Tajo
 
log-monitoring-architecture.pdf
log-monitoring-architecture.pdflog-monitoring-architecture.pdf
log-monitoring-architecture.pdf
 
Apache hbase overview (20160427)
Apache hbase overview (20160427)Apache hbase overview (20160427)
Apache hbase overview (20160427)
 
Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)Big data analysis with R and Apache Tajo (in Korean)
Big data analysis with R and Apache Tajo (in Korean)
 
빅데이터, big data
빅데이터, big data빅데이터, big data
빅데이터, big data
 
Node.js DBMS short summary
Node.js DBMS short summaryNode.js DBMS short summary
Node.js DBMS short summary
 
about hadoop yes
about hadoop yesabout hadoop yes
about hadoop yes
 
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
[2015 07-06-윤석준] Oracle 성능 최적화 및 품질 고도화 4
 
하둡-rhive
하둡-rhive하둡-rhive
하둡-rhive
 
Jco 소셜 빅데이터_20120218
Jco 소셜 빅데이터_20120218Jco 소셜 빅데이터_20120218
Jco 소셜 빅데이터_20120218
 
Hadoop Installation Tutorial for KT ucloud biz
Hadoop Installation Tutorial for KT ucloud bizHadoop Installation Tutorial for KT ucloud biz
Hadoop Installation Tutorial for KT ucloud biz
 
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
OLAP for Big Data (Druid vs Apache Kylin vs Apache Lens)
 
Big data application architecture 요약2
Big data application architecture 요약2Big data application architecture 요약2
Big data application architecture 요약2
 
2013.02.02 지앤선 테크니컬 세미나 - 하둡으로 배우는 대용량 데이터 분산처리 기술(이현남)
2013.02.02 지앤선 테크니컬 세미나 - 하둡으로 배우는 대용량 데이터 분산처리 기술(이현남)2013.02.02 지앤선 테크니컬 세미나 - 하둡으로 배우는 대용량 데이터 분산처리 기술(이현남)
2013.02.02 지앤선 테크니컬 세미나 - 하둡으로 배우는 대용량 데이터 분산처리 기술(이현남)
 
CouchDB - Introduction - Korean
CouchDB - Introduction - KoreanCouchDB - Introduction - Korean
CouchDB - Introduction - Korean
 
SteelEye 표준 제안서
SteelEye 표준 제안서SteelEye 표준 제안서
SteelEye 표준 제안서
 
Gpdb best practices v a01 20150313
Gpdb best practices v a01 20150313Gpdb best practices v a01 20150313
Gpdb best practices v a01 20150313
 
Vertica New Features - 8.1에서 9.2까지
Vertica New Features - 8.1에서 9.2까지Vertica New Features - 8.1에서 9.2까지
Vertica New Features - 8.1에서 9.2까지
 
03.Ansible 소개
03.Ansible 소개03.Ansible 소개
03.Ansible 소개
 

More from HyeonSeok Choi

밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05HyeonSeok Choi
 
밑바닥부터시작하는딥러닝 Ch2
밑바닥부터시작하는딥러닝 Ch2밑바닥부터시작하는딥러닝 Ch2
밑바닥부터시작하는딥러닝 Ch2HyeonSeok Choi
 
프로그래머를위한선형대수학1.2
프로그래머를위한선형대수학1.2프로그래머를위한선형대수학1.2
프로그래머를위한선형대수학1.2HyeonSeok Choi
 
알고리즘 중심의 머신러닝 가이드 Ch04
알고리즘 중심의 머신러닝 가이드 Ch04알고리즘 중심의 머신러닝 가이드 Ch04
알고리즘 중심의 머신러닝 가이드 Ch04HyeonSeok Choi
 
딥러닝 제대로시작하기 Ch04
딥러닝 제대로시작하기 Ch04딥러닝 제대로시작하기 Ch04
딥러닝 제대로시작하기 Ch04HyeonSeok Choi
 
밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05HyeonSeok Choi
 
7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성HyeonSeok Choi
 
7가지 동시성 모델 4장
7가지 동시성 모델 4장7가지 동시성 모델 4장
7가지 동시성 모델 4장HyeonSeok Choi
 
실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8HyeonSeok Choi
 
실무로 배우는 시스템 성능 최적화 Ch7
실무로 배우는 시스템 성능 최적화 Ch7실무로 배우는 시스템 성능 최적화 Ch7
실무로 배우는 시스템 성능 최적화 Ch7HyeonSeok Choi
 
실무로 배우는 시스템 성능 최적화 Ch6
실무로 배우는 시스템 성능 최적화 Ch6실무로 배우는 시스템 성능 최적화 Ch6
실무로 배우는 시스템 성능 최적화 Ch6HyeonSeok Choi
 
실무로배우는시스템성능최적화 Ch1
실무로배우는시스템성능최적화 Ch1실무로배우는시스템성능최적화 Ch1
실무로배우는시스템성능최적화 Ch1HyeonSeok Choi
 
HTTP 완벽가이드 21장
HTTP 완벽가이드 21장HTTP 완벽가이드 21장
HTTP 완벽가이드 21장HyeonSeok Choi
 
HTTP 완벽가이드 16장
HTTP 완벽가이드 16장HTTP 완벽가이드 16장
HTTP 완벽가이드 16장HyeonSeok Choi
 
HTTP 완벽가이드 6장.
HTTP 완벽가이드 6장.HTTP 완벽가이드 6장.
HTTP 완벽가이드 6장.HyeonSeok Choi
 

More from HyeonSeok Choi (20)

밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05
 
밑바닥부터시작하는딥러닝 Ch2
밑바닥부터시작하는딥러닝 Ch2밑바닥부터시작하는딥러닝 Ch2
밑바닥부터시작하는딥러닝 Ch2
 
프로그래머를위한선형대수학1.2
프로그래머를위한선형대수학1.2프로그래머를위한선형대수학1.2
프로그래머를위한선형대수학1.2
 
알고리즘 중심의 머신러닝 가이드 Ch04
알고리즘 중심의 머신러닝 가이드 Ch04알고리즘 중심의 머신러닝 가이드 Ch04
알고리즘 중심의 머신러닝 가이드 Ch04
 
딥러닝 제대로시작하기 Ch04
딥러닝 제대로시작하기 Ch04딥러닝 제대로시작하기 Ch04
딥러닝 제대로시작하기 Ch04
 
밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05밑바닥부터시작하는딥러닝 Ch05
밑바닥부터시작하는딥러닝 Ch05
 
함수적 사고 2장
함수적 사고 2장함수적 사고 2장
함수적 사고 2장
 
7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성7가지 동시성 모델 - 데이터 병렬성
7가지 동시성 모델 - 데이터 병렬성
 
7가지 동시성 모델 4장
7가지 동시성 모델 4장7가지 동시성 모델 4장
7가지 동시성 모델 4장
 
Bounded Context
Bounded ContextBounded Context
Bounded Context
 
DDD Repository
DDD RepositoryDDD Repository
DDD Repository
 
DDD Start Ch#3
DDD Start Ch#3DDD Start Ch#3
DDD Start Ch#3
 
실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8실무로 배우는 시스템 성능 최적화 Ch8
실무로 배우는 시스템 성능 최적화 Ch8
 
실무로 배우는 시스템 성능 최적화 Ch7
실무로 배우는 시스템 성능 최적화 Ch7실무로 배우는 시스템 성능 최적화 Ch7
실무로 배우는 시스템 성능 최적화 Ch7
 
실무로 배우는 시스템 성능 최적화 Ch6
실무로 배우는 시스템 성능 최적화 Ch6실무로 배우는 시스템 성능 최적화 Ch6
실무로 배우는 시스템 성능 최적화 Ch6
 
실무로배우는시스템성능최적화 Ch1
실무로배우는시스템성능최적화 Ch1실무로배우는시스템성능최적화 Ch1
실무로배우는시스템성능최적화 Ch1
 
HTTP 완벽가이드 21장
HTTP 완벽가이드 21장HTTP 완벽가이드 21장
HTTP 완벽가이드 21장
 
HTTP 완벽가이드 16장
HTTP 완벽가이드 16장HTTP 완벽가이드 16장
HTTP 완벽가이드 16장
 
HTTPS
HTTPSHTTPS
HTTPS
 
HTTP 완벽가이드 6장.
HTTP 완벽가이드 6장.HTTP 완벽가이드 6장.
HTTP 완벽가이드 6장.
 

Apache hive

  • 2. Contents • 하이브란? • 하이브 설치하기 • 하이브의 컨포넌트 • 전통적인 데이터 베이스와의 비교 • HiveQL • 테이블 • 데이터 쿼리하기 • References 13년 10월 7일 월요일
  • 3. 하이브란? 하둡에 저장된 데이터를 쉽게 처리할 수 있는 데이터웨어하우스 패키지 Facebook에서 매일 같이 생산되는 대량의 데이터를 관리하고 학습하기 위해 개발 What is the data warehouse? In computing, a data warehouse or enterprise data warehouse (DW, DWH, or EDW) is a database used for reporting and data analysis. It is a central repository of data which is created by integrating data from one or more disparate sources. Data warehouses store current as well as historical data and are used for creating trending reports for senior management reporting such as annual and quarterly comparisons wikipidea(http://en.wikipedia.org/wiki/Data_warehouse) 13년 10월 7일 월요일
  • 4. 하이브 설치하기 • 요구사항 - Java 1.6 이상 - Hadoop 0.20.x (버전은 크게 상관 없음) • 설치 및 실행 - http://mirror.apache-kr.org/hive/stable/hive-0.10.0.tar.gz 다운 로드 후 압축 해제 - 환경 변수 설정: $HADOOP_HOME - 실행을 위한 기본 파일 생성 및 권한 설정 ‣ hadoop fs -mkdir /tmp ‣ hadoop fs -chmod a+w /tmp ‣ hadoop fs -mkdir /user/hive/warehouse ‣ hadoop fs -chmod a+w /user/hive/warehouse - 하이브 셸 실행: hive 13년 10월 7일 월요일
  • 5. FAILED: Error in metadata: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.metastore.HiveMetaStoreClient FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask Hive 실행시 아래와 같은 예외가 발생하는 경우 • 원인: hadoop을 직접 Build를 수행한 적이 있을 경우 classpath에 동일한 jar 파일이 여러번 참조되어 발생함 • 해결책: $HADOOP_HOME/build 디렉토리 삭제 or 이름 변경 13년 10월 7일 월요일
  • 7. 하이브 설정 • config 파일 설정 - hive-site.xml 파일이 아닌 경로를 설정 - 하이브 셸 실행 시 ‣ hive --config <디렉토리 경로> • 속성 설정 - 하이브 셸 실행 시 ‣ hive -hiveconf fs.default.name=localhost - 셸 내에서 ‣ hive> SET hive.enforce.bucketing=true 13년 10월 7일 월요일
  • 8. 속성 지정 우선 순위 1. 하이브 SET 명령어 2. 명령행 -hiveconf 옵션 3. hive-site.xml 4. hive-default.xml 5. hadoop-site.xml 6. hadoop-default.xml 13년 10월 7일 월요일
  • 9. 로깅 • 설정 - conf/hive-log4j.properties • 기본 로그 파일 위치 - /tmp/$USER/hive.log • 하이브 셸 실행시 옵션 변경 - hive -hiveconf hive.root.logger=DEBUG,console 13년 10월 7일 월요일
  • 10. 하이브 서비스 cli 하이브 셸에 대한 명령행 인터페이스 hiveserver 쓰리프트, JDBC, ODBC 연결자를 사용하는 응용 프로그램은 하이브와 통신하기 위하여 하이브 서버를 필요 hwi 하이브 웹 인터페이스 jar classpath에 하둡과 하이브 클래스 모두를 사용하는 자바 응용 프로그 램을 실행하기 위한 방법. hadoop jar 와 metastore 하이브 실행시 메타 데이터가 저장되는 장소 13년 10월 7일 월요일
  • 11. Hive clients hive --service hiveserver 하이브 서비스 아키텍처 13년 10월 7일 월요일
  • 12. 메타 스토어 하이브 메타데이터에서 가장 중요한 저장소 • 서비스와 데이터 저장소로 이루어짐 • 기본 설정값 - 메타 데이터 서비스: 하이브 서비스와 동일 JVM에서 실행 - 데이터 저장소: 로컬 디스크 임베디드 더비 데이터 베이스 13년 10월 7일 월요일
  • 13. 메타 스토어 설정 주요 속성 • 하이브 기본 디렉토리 - hive.metastore.warehouse.dir • 임베디드 메타 스토어 사용유무 - hive.metastore.local - 0.10 버전에서 duplicate 됨 • 연결할 메타 스토어 서버 - hive.metastore.uris • ETC - javax.jdo.option.xxxx 13년 10월 7일 월요일
  • 14. 전통적인 데이터 베이스와의 비교 13년 10월 7일 월요일
  • 15. 테이블 스키마 검증 시점 전통적인 데이터 베이스 • 데이터를 적재하는 시점에 검증 • 만일 Insert중인 데이터가 스키마에 부합되지 않으면 데이터 거부 • 컬럼 단위로 색인이 가능하기 때문에 빠른 쿼리 성능을 제공 하이브 • 쿼리 실행시 데이터 검증 • 데이터의 매우 빠른 적재를 제공 (ex: 파일 복사 or 이동) • 동일 데이터를 두 스키마로 다루어야 할때 훌륭한 유연성을 제공 13년 10월 7일 월요일
  • 16. 갱신, 트랜잭션, 색인 • 하이브는 갱신을 지원하지 않음 • 락 매카니즘 • 주키퍼를 사용하여 테이블과 파티션 수준의 락을 지원(0.7.0) • 지원 색인 • 0.7.0부터 특별한 경우를 위한 색인 기능을 제공 • 컴팩트, 비트맵 타입 지원 13년 10월 7일 월요일
  • 18. 표준 SQL과의 주요 차이 속성 SQL HiveQL 갱신 UPDATE, INSERT, DELETE INSERT OVERWRITE TABLE 데이터형 정수형, 부동 소수점, 고정소수점, 텍스트, 바이너리, 시간 추가적으로 배열, 맵, 구조체 지원 다중 테이블 삽입 지원하지 않음 지원 조인 FROM 절에서 테이블 조인 WHERE 절에서도 조건 지원 (SQL-92 지원) 내부조인, 외부조인, 세미조인, 맵조인지원 (WHERE절 조건 지원 X) 서브쿼리 어떠한 절에서도 사용가능 FROM 절에서만 사용 가능 뷰 업데이트 가능 읽기 전용 확장 가능성 사용자 정의 함수, 저장 프로시저 사용자 정의 함수, 맵-리듀스 스크립트 13년 10월 7일 월요일
  • 19. 데이터형 Feature SQL HiveQL References Joins SQL-92 or variants (join tables in the FROM clause, join condition in the WHERE clause) Innerjoins,outerjoins,semi joins, map joins. SQL-92 syntax, with hinting. “Joins” on page 443 Subqueries In any clause. Correlated or noncorrelated. Only in the FROM clause. Correlated subqueries not supported “Subqueries” on page 446 Views Updatable. Materialized or nonmaterialized. Read-only. Materialized views not supported “Views” on page 447 Extension points User-defined functions. Stored procedures. User-defined functions. MapReduce scripts. “User-Defined Functions” on page 448, “MapReduce Scripts” on page 442 Data Types Category Type Description Literal examples Primitive TINYINT 1-byte(8-bit)signedinteger,from-128to 127 1 SMALLINT 2-byte (16-bit) signed integer, from -32,768 to 32,767 1 INT 4-byte (32-bit) signed integer, from -2,147,483,648 to 2,147,483,647 1 BIGINT 8-byte (64-bit) signed integer, from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 1 FLOAT 4-byte (32-bit) single-precision floating- point number 1.0 DOUBLE 8-byte (64-bit) double-precision floating- point number 1.0 BOOLEAN true/false value TRUE STRING Character string 'a', "a" BINARY Byte array Not supported TIMESTAMP Timestamp with nanosecond precision 1325502245000, '2012-01-02 03:04:05.123456789' 424 | Chapter 12: Hive Category Type Description Literal examples Complex ARRAY An ordered collection of fields. The fields must all be of the same type. array(1, 2) a MAP Anunorderedcollectionofkey-valuepairs. Keysmustbeprimitives;valuesmaybeany type. For a particular map, the keys must be the same type, and the values must be the same type. map('a', 1, 'b', 2) STRUCT Acollectionofnamedfields.Thefieldsmay be of different types. struct('a', 1, 1.0) b a Theliteralformsforarrays,maps,andstructsareprovidedasfunctions.Thatis,array(),map(),andstruct()arebuilt-inHivefunctions. b The columns are named col1, col2, col3, etc. Primitive types TINYINT SMALLINT INT BIGINT byte short int long 기본형과 복합형 모두 지원 13년 10월 7일 월요일
  • 20. 연산자와 함수 • 관계형, 산술, 논리 연산자와 같은 일반적인 SQL 연산자 제공 -“||”는 문자열 연결이 아니라 논리 OR • 여러가지 내장 함수가 포함되어 있음 - hive> SHOW FUNCTIONS • 형 변환 - 암묵적 형변환을 수행하기 위해 기본형에 대한 계층 구조를 가짐 - 암묵적 원칙 - 정수형, FLOAT, STRING => DOUBLE -TINY INT, SMALL INT, INT => FLOAT - Boolean은 어떠한 형으로 변환 안됨 - 명시적 형변환: CAST 사용 13년 10월 7일 월요일
  • 22. 하이브 테이블은 논리적으로 저장된 데이터와 테이블에서 데이터의 배치를 기술하는 메타데이터로 구성 13년 10월 7일 월요일
  • 23. 관리 테이블과 외부 테이블 • 하이브는 기본적으로 테이블을 직접 관리 - 데이터를 데이터웨어하우스로 이동한다는 의미 • 외부 테이블 - 웨어하우스 디렉토리 외부에서 데이터를 참조 • 차이점 - 삭제시 외부 테이블은 데이터를 삭제하지 않음 13년 10월 7일 월요일
  • 24. 파티션 컬럼의 값을 기반으로 크게 나눠놓는 방식 관련된 파티션의 파일만 스캔하면 되기 때문에 효율적 CREATE TABLE logs (ts BIGINT, line STRING) PARTITIONED BY (dt STRING, country STRING); LOAD DATA LOCAL INPATH 'input/hive/partitions/file1' INTO TABLE logs PARTITION (dt='2001-01-01', country='GB'); /user/hive/warehouse/logs/dt=2010-01-01/country=GB/file1 /file2 /country=US/file3 /dt=2010-01-02/country=GB/file4 /country=US/file5 /file6 EX) 날짜와 국가 코드로 파티셔닝할 경우 저장 디렉토리 13년 10월 7일 월요일
  • 25. 버킷 • 테이블이나 파티션에서 더 효율적 쿼리를 위해 사용 • 사용 이유 - 추가 구조를 부여하여 효율적인 쿼리가 가능(조인, 정렬 등) - 샘플링을 효율적으로 할수 있음 • 버킷은 테이블 디렉토리 안에 파일 하나로 표현 CREATE TABLE bucketed_users (id INT, name STRING) CLUSTERED BY (id) INTO 4 BUCKETS; CREATE TABLE bucketed_users (id INT, name STRING) CLUSTERED BY (id) SORTED BY (id ASC) INTO 4 BUCKETS; // 정렬, 외부에서 생성된 데이터를 버킷팅된 테이블로 적재가 가능하지만 일반적으로는 존재하는 테이블에서 버킷팅 수행 hive> SELECT * FROM users; 0 Nat 2 Joe 3 Kay 4 Ann INSERT OVERWRITE TABLE bucketed_users SELECT * FROM users; 13년 10월 7일 월요일
  • 26. 기타 테이블 연산 • 데이터 임포트하기 - INSERT or CATS(CREATE TABLE ..AS .. SELECT) - ex) INSERT OVERWRITE TABLE target SELECT col1, col2 FROM source; • 테이블 변경하기 -ALTER TABLE - ex) ALTER TABLE target ADD COLUMNS (col3 STRING); • 테이블 삭제하기 - DROP TABLE - 데이터만 지울 경우 warehouse 디렉토리 내의 파일 제거 13년 10월 7일 월요일
  • 28. ORDER BY - 전체적으로 정렬된 결과를 생성, 이를 위해 리듀서를 하나로 설정해야 함 - 대규모 데이터셋에서 매우 비효율적 SORT BY - 리듀서당 정렬된 파일을 생성 DISTRIBUTE BY - 특정 로우가 특정 리듀서로 가도록 보장 정렬과 집계 FROM records2 SELECT year, temperature DISTRIBUTE BY year SORT BY year ASC, temperature DESC; 13년 10월 7일 월요일
  • 29. 하둡 스트리밍과 같은 방식을 사용하여 TRANSFORM, MAP, REDUCE 절을 통해 외부 스크립트나 프로그램을 호출 가능 맵 리듀스 스크립트 #!/usr/bin/env python import re import sys for line in sys.stdin: (year, temp, q) = line.strip().split() if (temp != "9999" and re.match("[01459]", q)): print "%st%s" % (year, temp) ADD FILE /path/to/is_good_quality.py; FROM records2 SELECT TRANSFORM(year, temperature, quality) USING 'is_good_quality.py' AS year, temperature; 13년 10월 7일 월요일
  • 30. 하이브는 내부조인, 외부조인, 세미조인, 맵 조인을 지원 - 맵조인: 테이블 하나가 메모리에 적재될 만큼 충분히 작다면 하이브는 매퍼 단위로 조인을 수행할 수 있도록 지원 조인 hive> SELECT * FROM sales; Joe 2 Hank 4 Ali 0 Eve 3 Hank 2 hive> SELECT * FROM things; 2 Tie 4 Coat 3 Hat 1 Scarf hive> SELECT sales.*, things.* > FROM sales JOIN things ON (sales.id = things.id); Joe 2 2 Tie Hank 2 2 Tie Eve 3 3 Hat Hank 4 4 Coat EX) 내부 조인 EX 13년 10월 7일 월요일
  • 31. 서브 쿼리 & 뷰 SELECT station, year,AVG(max_temperature) FROM ( SELECT station, year, MAX(temperature) AS max_temperature FROM records2 WHERE temperature != 9999 AND (quality = 0 OR quality = 1 OR quality = 4 OR quality = 5 OR quality = 9) GROUP BY station, year ) mt GROUP BY station, year; CREATEVIEW valid_records AS SELECT * FROM records2 WHERE temperature != 9999 AND (quality = 0 OR quality = 1 OR quality = 4 OR quality = 5 OR quality = 9); 13년 10월 7일 월요일
  • 32. References 1. Tom White (2013). 하둡 완벽가이드. (심탁 길, 김현우, 옮김). 서울: 한빛미디어. (원서출판 2012) 13년 10월 7일 월요일