빅데이터 처리

Apache Hive

BUST 2018. 7. 15. 11:46

Apache Hive

Apache Hive란? 하둡에서 작동되는 데이터 웨어하우스, Apache HDFS이나 Apache Hbase의 데이터가 저장 시스템에 저장되어있는 대용량 데이터를 분석한다. 

- HiveQL이라는 부르는 SQL를 통해 손쉽게 데이터를 분석할수 있다. 

- HDFS 대신 AWS S3를 저장소를 하여 사용을 할수가 있다.

-  Metadata를 통해 테이블의 데이터 위치, 데이터 스키마등을 관리한다.

- OLTP보다는 OLAP 적합하다.


Haddop

HDFS - Hadoop DistrubutedFile Systemd

MapReduce - Parrell Programming model for processing large amount data


Architecture



Hive Architecture

Working Progress

How Hive Works

- HiveQL문을 Hadoop Job으로 컴파일이후 Hadoop Cluster에서 작동괴 하는 형태이다.


create table

CREATE TABLE `inventory`(
  `inv_item_sk` int,
  `inv_warehouse_sk` int,
  `inv_quantity_on_hand` int)
PARTITIONED BY (
  `dt` int)
STORED AS ORC 
LOCATION
  's3a://BUCKET_NAME/tpcds_bin_partitioned_orc_200.db/inventory';


create external table

CREATE EXTERNAL TABLE `inventory`(
  `inv_item_sk` int,
  `inv_warehouse_sk` int,
  `inv_quantity_on_hand` int)
PARTITIONED BY (
 `dt` int)
 STORED AS ORC 
LOCATION
  's3a://BUCKET_NAME/tpcds_bin_partitioned_orc_200.db/inventory';


json 일경우

CREATE EXTERNAL TABLE `inventory`(
  `inv_item_sk` int,
  `inv_warehouse_sk` int,
  `inv_quantity_on_hand` int)
PARTITIONED BY (
  `dt` int) 
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
STORED AS TEXTFILE
LOCATION
  's3a://BUCKET_NAME/tpcds_bin_partitioned_orc_200.db/inventory';

select table

SELECT * FROM inverntory
WHERE dt >= '20190101'
AND dt <= '20190101'
LIMIT 10

Table Partitioning

데이터의 크기가 커지면 데이터의 처리속도가 느려지기때문에 데이터를 파티셔닝해서 저장을 한다. 보통 로그인경우에는 날짜로 데이터를 파티션을 나눈다.
- PARTITIONED BY 키워드를 사용한다.
- 예를 들어 dt 기준으로 파티션을 나눈다고 한다면 fie의 path는 /db-path/dt=XXXXXXXX/.... 이런식으로 path가 결정이 된다.

alter table table_name add if not exists add partition(dt=20180101) location 's3://db-path/dt=2018/'

Reference

- https://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%ED%95%98%EC%9D%B4%EB%B8%8C
- https://cwiki.apache.org/confluence/display/Hive/GettingStarted
- https://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.6.5/bk_data-access/content/moving_data_from_hdfs_to_hive_external_table_method.html
- https://www.tutorialspoint.com/hive/hive_introduction.htm


'빅데이터 처리' 카테고리의 다른 글

Hive Data Type  (0) 2019.01.30
Hive with 구문 Example  (0) 2019.01.15
Hadoop  (0) 2018.12.20