빅데이터 하둡 프로그래밍 교육과정] Event

 

빅데이터 하둡 프로그래밍 교육과정] Event

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.



Event

 - Flume을 통해 전달되어지는 데이터의 기본 payload를 event라 부른다.

 - Event는 O이상의 Header와 body영역으로 나뉜다. (Byte  payload + set of string headers)

 - Header는 key/value 형태이며, 라우팅을 결정하거나, 구조  화된 정보(예를 들어, 이벤트가 발생된 서버의 호스트명,  timestamp 등 추가 가능)를 운반할 때 활용된다

 

빅데이터 하둡 프로그래밍 교육과정] UDF 예제

 

빅데이터 하둡 프로그래밍 교육과정] UDF 예제

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.



UDF 예제

– ‘APPL’을 ‘APPLE’로 변환하는 예제.
package hive.udf.sample;
import java.text.SimpleDateFormat;
import org.apache.hadoop.hive.ql.exec.Description;  import org.apache.hadoop.hive.ql.exec.UDF;
@Description(name="fullname",
value = "_FUNC_(name)- from the input string"+" returns Fullname ",  extended = "Example _Func_('aaple') from src;\n")
public class Fullname extends UDF{  public Fullname (){
SimpleDateFormat df = new SimpleDateFormat("MM-dd-yyyy");
  }
  public String evaluate(String shortname)
  {
    if( "aapl".equals(shortname) || "AAPL".equals(shortname))
   {
        return "AAPLE";
   }
   else
      return shortname;
   }
}


– UDF 등록
0: jdbc:hive2://hadoop01:10000> ADD JAR
/home/hadoop/share/Fullname.jar;
0: jdbc:hive2://hadoop01:10000> CREATE TEMPORARY FUNCTION
fullname AS 'hive.udf.sample.Fullname';


– UDF 사용
0: jdbc:hive2://hadoop01:10000>describe function fullname;
0: jdbc:hive2://hadoop01:10000>DESCRIBE FUNCTION EXTENDED
fullname;
0: jdbc:hive2://hadoop01:10000>SELECT ymd,fullname(symbol) FROM  Stocks where symbol='AAPL';


빅데이터 하둡 프로그래밍 교육과정] UDF 종류

 

빅데이터 하둡 프로그래밍 교육과정] UDF 종류

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

UDF 종류

 * standard function (표준함수)
  - 하나의 로우 (row) 나 다수의 컬럼으로 부터 데이터를 받아서 처리
  - floor(), ucase(), concat() 과 같은 간단한 함수

 * UDAF(User Defined Aggregation Function)
  - 사용자 집계(aggregation)함수
  - 하나이상의 raw와 column으로 부터 데이터를 받아와서 계산을 수  행하는 함수
  - SELECT year(ymd), avg(price_close) FROM stocks WHERE  exchange = 'NASDAQ' AND symbol = 'AAPL'GROUP BY  year(ymd);

 * UDTF(User Defined TablegenerationFunction)
  - 하나의 변수나 컬럼을 입력받아 다수개의 테이블로(row)를 만드는  모든 함수
  - SELECT explode(array(1,2,3)) AS element FROM src; 

 

빅데이터 하둡 프로그래밍 교육과정] UDF 종류

 

빅데이터 하둡 프로그래밍 교육과정] UDF 종류

 

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

UDF 종류

 

빅데이터 하둡 프로그래밍 교육과정] UDF

 

빅데이터 하둡 프로그래밍 교육과정] UDF

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

UDF
 = Before Writing UDF, internal Function is also UDF
0: jdbc:hive2://hadoop01:10000> show functions;

 - 함수의 정의를 보려면 describe 사용
0: jdbc:hive2://hadoop01:10000> describe function abs;

 

빅데이터 하둡 프로그래밍 교육과정] 색인

 

빅데이터 하둡 프로그래밍 교육과정] 색인

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

색인
 - 데이터 베이스의 특정 컬럼에 대해 검색가능한 형태인 자료구조를 만드는것

 - I/O의 범위를 전체적으로 줄여주는 역할을 한다

 - 색인 자체가 기본적인 정렬이 되어 있기 때문에 검색 시간도 줄어든다

 - table에 색인 생성

 - symbol컬럼에 색인 생성
0: jdbc:hive2://hadoop01:10000>CREATE INDEX simple_index ON TABLE  stocks (symbol) AS  'org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler' WITH  DEFERRED REBUILD;

 - index 확인
0: jdbc:hive2://hadoop01:10000>SHOW FORMATTED INDEX ON stocks;

 - query수행
0: jdbc:hive2://hadoop01:10000>SELECT s2.year, s2.avg FROM (SELECT  year(ymd) AS year, avg(price_close) AS avg FROM stocks WHERE symbol
= 'AAPL' GROUP BY year(ymd)) s2 WHERE s2.avg > 50.0;

 - 인덱스 생성
0: jdbc:hive2://hadoop01:10000>alter index simple_index on stocks rebuild;

 - 필요한 파일만 다시 로드
0: jdbc:hive2://hadoop01:10000>INSERT OVERWRITE DIRECTORY
"/tmp/index_result" SELECT `_bucketname` , `_offsets` FROM
default  stocks_simple_index  where symbol='AAPL';

 - 기존 테이블과 연결
0: jdbc:hive2://hadoop01:10000>SET hive.index.compact.file=/tmp/index_result;
0: jdbc:hive2://hadoop01:10000>SET  hive.input.format=org.apache.hadoop.hive.ql.index.compact.HiveCompactIndexInputFor  mat;

 - query수행
0: jdbc:hive2://hadoop01:10000>SELECT s2.year, s2.avg FROM (SELECT  year(ymd) AS year, avg(price_close) AS avg FROM stocks WHERE symbol =  'AAPL' GROUP BY year(ymd)) s2 WHERE s2.avg > 50.0; 

 

빅데이터 하둡 프로그래밍 교육과정] 다이니믹 Partition

 

빅데이터 하둡 프로그래밍 교육과정] 다이니믹 Partition

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

 

 

다이니믹 Partition
 - 설정(기본값) 

hive.exec.dynamic.partition.mode=strict;  hive.exec.dynamic.partition = false;  hive.exec.max.dynamic.partitions.pernode=100;  hive.exec.max.dynamic.partitions=1000;  hive.exec.max.created.files=100000;

 - partition 테이블에 데이터 로드
0: jdbc:hive2://hadoop01:10000>INSERT OVERWRITE TABLE stocks_part  PARTITION(`exchange`, symbol) SELECT  ymd,price_open,price_high,price_low,price_close,volume  int,price_adj_close,`exchange`,symbol
FROM stocks;

 

빅데이터 하둡 프로그래밍 교육과정] Partition

 

빅데이터 하둡 프로그래밍 교육과정] Partition

 

 

실무개발자를위한 실무교육 전문교육센터학원
www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.

 

Partition

– partition 테이블 만들기
0: jdbc:hive2://hadoop01:10000>CREATE TABLE IF NOT EXISTS  stocks_part (
ymd STRING,
price_open FLOAT,
price_high FLOAT,  price_low FLOAT,  price_close FLOAT,  volume INT,  price_adj_close FLOAT)
PARTITIONED by ( exchange STRING, symbol STRING)  ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

– partition 테이블에 데이터 로드
0: jdbc:hive2://hadoop01:10000>INSERT OVERWRITE TABLE  stocks_part PARTITION(`exchange`='NASDAQ', symbol
='AAPL') SELECT
ymd,price_open,price_high,price_low,price_close,volume  int,price_adj_close
FROM stocks WHERE `exchange` = 'NASDAQ' and
symbol='AAPL';

– 확인
0: jdbc:hive2://hadoop01:10000>show partitions
stocks_part;

 

+ Recent posts