SDEC2011 Replacing legacy Telco DB/DW to Hadoop and Hive

Preview:

DESCRIPTION

Currently telecom companies store their data in database or data warehouse, treating them through ETL process and working on statistics and analysis by using OLAP tools or data mining engines. However, due to the data explosion along with the spread of Smart Phones traditional data storages like DB and DW aren’t sufficient to cope with these “Big Data”. As an alternative the method of storing data in Hadoop and performing ETL process and Ad-hoc Query with Hive is being introduced, and China Mobile is being mentioned as the most representative example. But, they are adopted mainly by new projects, which have low barriers in applying the new Hive data model and HQL. On the other hand, it is extremely difficult to replace the existing database with the combination of Hadoop and Hive if there are already a number of tables and SQL queries. NexR is migrating the telecom company’s data from Oracle DB to Hadoop, and converting a lot of existing Oracle SQL queries to Hive HQL queries. Though HQL supports a similar syntax to ANSI-SQL, it lacks a large portion of basic functions and hardly supports Oracle analytic functions like rank() which are utilized mainly in statistical analysis. Furthermore, the difference of data types like null value is also blocking the application of it. In this presentation, we will share the experience converting Oracle SQL to Hive HQL and developing additional functions with MapReduce. Also, we will introduce several ideas and trials to improve Hive performance.http://sdec.kr/

Citation preview

Seoul Data Engineering CampSDEC 2011

Seoul, South KoreaJune 27-28

2011년 6월 30일 목요일

Replacing Legacy Telco DB/DW to Hadoop and Hive

JunHo ChoNexR

2011년 6월 30일 목요일

Agenda

2011년 6월 30일 목요일

Agenda

• Motivation for Hive and Hadoop

2011년 6월 30일 목요일

Agenda

• Motivation for Hive and Hadoop

• Hive Internal

2011년 6월 30일 목요일

Agenda

• Motivation for Hive and Hadoop

• Hive Internal

• Oracle Migration UseCase

2011년 6월 30일 목요일

Agenda

• Motivation for Hive and Hadoop

• Hive Internal

• Oracle Migration UseCase

• Hive Optimization

2011년 6월 30일 목요일

Agenda

• Motivation for Hive and Hadoop

• Hive Internal

• Oracle Migration UseCase

• Hive Optimization

• Future Work

2011년 6월 30일 목요일

Telco Data

2011년 6월 30일 목요일

Telco Data

2011년 6월 30일 목요일

Telco Data

2011년 6월 30일 목요일

Telco Data

2011년 6월 30일 목요일

Telco Data

2011년 6월 30일 목요일

Telco Data

2011년 6월 30일 목요일

Telco Data

2011년 6월 30일 목요일

Telco Data

2011년 6월 30일 목요일

Telco DW & ETL

Collect Server

DataConverting

BatchETL

RDBMS ServerData Sources

RawData

SummaryTable

DimensionTable

Near-RT Search

OLAP

2011년 6월 30일 목요일

Telco DW & ETL

Collect Server

DataConverting

BatchETL

RDBMS ServerData Sources

RawData

SummaryTable

DimensionTable

Near-RT Search

OLAP

Bottleneck

2011년 6월 30일 목요일

Telco DW & ETL

Collect Server

DataConverting

BatchETL

RDBMS ServerData Sources

RawData

SummaryTable

DimensionTable

Near-RT Search

OLAP

Bottleneck

Bottleneck

2011년 6월 30일 목요일

Telco DW & ETL

Collect Server

DataConverting

BatchETL

RDBMS ServerData Sources

RawData

SummaryTable

DimensionTable

Near-RT Search

OLAP

Bottleneck

Bottleneck

Bottleneck

2011년 6월 30일 목요일

Telco DW & ETL

Collect Server

DataConverting

BatchETL

RDBMS ServerData Sources

RawData

SummaryTable

DimensionTable

Near-RT Search

OLAP

Bottleneck

Bottleneck

Bottleneck

Bottleneck

2011년 6월 30일 목요일

Telco DW & ETL

Collect Server

DataConverting

BatchETL

RDBMS ServerData Sources

RawData

SummaryTable

DimensionTable

Near-RT Search

OLAP

Bottleneck

Bottleneck

Bottleneck

Bottleneck

Availability

2011년 6월 30일 목요일

Telco DW & ETL

Collect Server

DataConverting

BatchETL

RDBMS ServerData Sources

RawData

SummaryTable

DimensionTable

Near-RT Search

OLAP

Bottleneck

Bottleneck

Bottleneck

Bottleneck

Availability

Scalability

2011년 6월 30일 목요일

Telco DW & ETL

Collect Server

DataConverting

BatchETL

RDBMS ServerData Sources

RawData

SummaryTable

DimensionTable

Near-RT Search

OLAP

Bottleneck

Bottleneck

Bottleneck

Bottleneck

Availability

Scalability

Expensive

2011년 6월 30일 목요일

2011년 6월 30일 목요일

2011년 6월 30일 목요일

Divide & Conquer

2011년 6월 30일 목요일

OpenSource

2011년 6월 30일 목요일

OpenSource

Storage & Computing

2011년 6월 30일 목요일

OpenSource

2011년 6월 30일 목요일

OpenSource

Collection

2011년 6월 30일 목요일

OpenSource

2011년 6월 30일 목요일

OpenSource

Search

2011년 6월 30일 목요일

OpenSource

2011년 6월 30일 목요일

OpenSource

Analysis

2011년 6월 30일 목요일

OpenSource

2011년 6월 30일 목요일

OpenSource

Coordination

2011년 6월 30일 목요일

OpenSource

2011년 6월 30일 목요일

NexR Data Platform

Data SourcesHDFS

Index

RawData

Real-Time& BatchIndexing

Near RT Search &Monitoring

SummaryTable

DimensionTable

BatchETL

Collection Platform

AnalysisPlatform

SearchPlatform

OLAP

AdvancedAnalytics

2011년 6월 30일 목요일

NexR Data Platform

Data SourcesHDFS

Index

RawData

Real-Time& BatchIndexing

Near RT Search &Monitoring

SummaryTable

DimensionTable

BatchETL

Collection Platform

AnalysisPlatform

SearchPlatform

OLAP

AdvancedAnalytics

2011년 6월 30일 목요일

2011년 6월 30일 목요일

What is HIVE ?

2011년 6월 30일 목요일

What is HIVE ?

• A system for managing and querying structured data built on top of Hadoop

• Map-Reduce for execution

• HDFS for storage

• Metadata in an RDBMS

2011년 6월 30일 목요일

What is HIVE ?

• A system for managing and querying structured data built on top of Hadoop

• Map-Reduce for execution

• HDFS for storage

• Metadata in an RDBMS

• Key Building Principles

• SQL is a familiar language

• Extensibility - Types, Functions, Formats, Scripts

• Performance

2011년 6월 30일 목요일

Why Hive ?

2011년 6월 30일 목요일

2011년 6월 30일 목요일

Count call-record per phone ?

2011년 6월 30일 목요일

2011년 6월 30일 목요일

public class CallCountMapper extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> {

private final IntWritable one = new IntWritable(1); private Text word = new Text();

public void map(WritableComparable key, Writable value, OutputCollector output, Reporter reporter) throws IOException {

String line = value.toString(); StringTokenizer itr = new StringTokenizer(line.toLowerCase()); word.set(itr.nextToken()); output.collect(word, one); }}

2011년 6월 30일 목요일

public class CallCountMapper extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> {

private final IntWritable one = new IntWritable(1); private Text word = new Text();

public void map(WritableComparable key, Writable value, OutputCollector output, Reporter reporter) throws IOException {

String line = value.toString(); StringTokenizer itr = new StringTokenizer(line.toLowerCase()); word.set(itr.nextToken()); output.collect(word, one); }}

Mapper

2011년 6월 30일 목요일

public class CallCountMapper extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> {

private final IntWritable one = new IntWritable(1); private Text word = new Text();

public void map(WritableComparable key, Writable value, OutputCollector output, Reporter reporter) throws IOException {

String line = value.toString(); StringTokenizer itr = new StringTokenizer(line.toLowerCase()); word.set(itr.nextToken()); output.collect(word, one); }}

public class CallCountReducer extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> {

public void reduce(Text key, Iterator values, OutputCollector output, Reporter reporter) throws IOException {

int sum = 0; while (values.hasNext()) { IntWritable value = (IntWritable) values.next(); sum += value.get(); // process value }

output.collect(key, new IntWritable(sum)); }}

Mapper

2011년 6월 30일 목요일

public class CallCountMapper extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> {

private final IntWritable one = new IntWritable(1); private Text word = new Text();

public void map(WritableComparable key, Writable value, OutputCollector output, Reporter reporter) throws IOException {

String line = value.toString(); StringTokenizer itr = new StringTokenizer(line.toLowerCase()); word.set(itr.nextToken()); output.collect(word, one); }}

public class CallCountReducer extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> {

public void reduce(Text key, Iterator values, OutputCollector output, Reporter reporter) throws IOException {

int sum = 0; while (values.hasNext()) { IntWritable value = (IntWritable) values.next(); sum += value.get(); // process value }

output.collect(key, new IntWritable(sum)); }}

Mapper

Reducer

2011년 6월 30일 목요일

public class CallCountMapper extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> {

private final IntWritable one = new IntWritable(1); private Text word = new Text();

public void map(WritableComparable key, Writable value, OutputCollector output, Reporter reporter) throws IOException {

String line = value.toString(); StringTokenizer itr = new StringTokenizer(line.toLowerCase()); word.set(itr.nextToken()); output.collect(word, one); }}

public class CallCountReducer extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> {

public void reduce(Text key, Iterator values, OutputCollector output, Reporter reporter) throws IOException {

int sum = 0; while (values.hasNext()) { IntWritable value = (IntWritable) values.next(); sum += value.get(); // process value }

output.collect(key, new IntWritable(sum)); }}

public class CallCount {

public static void main(String[] args) { JobClient client = new JobClient(); JobConf conf = new JobConf(WordCount.class);

// specify output types conf.setOutputKeyClass(Text.class); conf.setOutputValueClass(IntWritable.class);

// specify input and output dirs FileInputPath.addInputPath(conf, new Path("input")); FileOutputPath.addOutputPath(conf, new Path("output"));

// specify a mapper conf.setMapperClass(KeyCountMapper.class);

// specify a reducer conf.setReducerClass(CallCountReducer.class); conf.setCombinerClass(CallCountReducer.class);

client.setConf(conf); try { JobClient.runJob(conf); } catch (Exception e) { e.printStackTrace(); } }}

Mapper

Reducer

2011년 6월 30일 목요일

public class CallCountMapper extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> {

private final IntWritable one = new IntWritable(1); private Text word = new Text();

public void map(WritableComparable key, Writable value, OutputCollector output, Reporter reporter) throws IOException {

String line = value.toString(); StringTokenizer itr = new StringTokenizer(line.toLowerCase()); word.set(itr.nextToken()); output.collect(word, one); }}

public class CallCountReducer extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> {

public void reduce(Text key, Iterator values, OutputCollector output, Reporter reporter) throws IOException {

int sum = 0; while (values.hasNext()) { IntWritable value = (IntWritable) values.next(); sum += value.get(); // process value }

output.collect(key, new IntWritable(sum)); }}

public class CallCount {

public static void main(String[] args) { JobClient client = new JobClient(); JobConf conf = new JobConf(WordCount.class);

// specify output types conf.setOutputKeyClass(Text.class); conf.setOutputValueClass(IntWritable.class);

// specify input and output dirs FileInputPath.addInputPath(conf, new Path("input")); FileOutputPath.addOutputPath(conf, new Path("output"));

// specify a mapper conf.setMapperClass(KeyCountMapper.class);

// specify a reducer conf.setReducerClass(CallCountReducer.class); conf.setCombinerClass(CallCountReducer.class);

client.setConf(conf); try { JobClient.runJob(conf); } catch (Exception e) { e.printStackTrace(); } }}

Mapper

Reducer

Driver

2011년 6월 30일 목요일

2011년 6월 30일 목요일

SELECT pnum, count(pnum) FROM cdr GROUP BY pnum;

2011년 6월 30일 목요일

History of Hive

• Hive development cycle is fast and the developer community is growing rapidly

• Product release cycle is accelerating

Projectstarted

03/08 12/09 02/10 10/10 03/114/09

0.3.0 0.4.0 0.5.0 0.6.0 0.7.0 0.7.1

06/11

2011년 6월 30일 목요일

History of Hive

• Hive development cycle is fast and the developer community is growing rapidly

• Product release cycle is accelerating

Projectstarted

03/08 12/09 02/10 10/10 03/114/09

0.3.0 0.4.0 0.5.0 0.6.0 0.7.0 0.7.1

06/11

2011년 6월 30일 목요일

History of Hive

• Hive development cycle is fast and the developer community is growing rapidly

• Product release cycle is accelerating

Projectstarted

03/08 12/09 02/10 10/10 03/114/09

0.3.0 0.4.0 0.5.0 0.6.0 0.7.0 0.7.1

06/11

2011년 6월 30일 목요일

Who use Hive?

http://wiki.apache.org/hadoop/Hive/PoweredBy

2011년 6월 30일 목요일

UseCase in Hive?

2011년 6월 30일 목요일

• Report and ad hoc query

UseCase in Hive?

2011년 6월 30일 목요일

• Report and ad hoc query

• Log Analysis

UseCase in Hive?

2011년 6월 30일 목요일

• Report and ad hoc query

• Log Analysis

• Social Graph Analysis

UseCase in Hive?

2011년 6월 30일 목요일

• Report and ad hoc query

• Log Analysis

• Social Graph Analysis

• Data mining and analysis

UseCase in Hive?

2011년 6월 30일 목요일

• Report and ad hoc query

• Log Analysis

• Social Graph Analysis

• Data mining and analysis

• Machine Learning

UseCase in Hive?

2011년 6월 30일 목요일

• Report and ad hoc query

• Log Analysis

• Social Graph Analysis

• Data mining and analysis

• Machine Learning

• Dataset cleaning

UseCase in Hive?

2011년 6월 30일 목요일

• Report and ad hoc query

• Log Analysis

• Social Graph Analysis

• Data mining and analysis

• Machine Learning

• Dataset cleaning

• Data Warehouse

UseCase in Hive?

2011년 6월 30일 목요일

Hive Architecture

UI Driver

CompilerMetaStore

ExecutionEngine

Hadoop

HQLWorks

ResultORM

DDL

2011년 6월 30일 목요일

Hive Architecture

UI Driver

CompilerMetaStore

ExecutionEngine

Hadoop

HQLWorks

ResultORM

DDL

select col1 from tab1 where ...

2011년 6월 30일 목요일

Hive Architecture

UI Driver

CompilerMetaStore

ExecutionEngine

Hadoop

HQLWorks

ResultORM

DDL

2011년 6월 30일 목요일

Hive Architecture

UI Driver

CompilerMetaStore

ExecutionEngine

Hadoop

HQLWorks

ResultORM

DDL

2011년 6월 30일 목요일

Hive Architecture

UI Driver

CompilerMetaStore

ExecutionEngine

Hadoop

HQLWorks

ResultORM

DDL

2011년 6월 30일 목요일

Hive Architecture

UI Driver

CompilerMetaStore

ExecutionEngine

Hadoop

HQLWorks

ResultORM

DDL

a 123344b 121211c 342434

2011년 6월 30일 목요일

Map Reduce

Hive Internal

Web UI Hive CLI JDBC

Hive QL

Browse, Query, DDL

MetaStore

Thrift API

TSOperator

FSOperator

SELOperator

HDFS

HBaseDB

StorageHandler

...

Parser

Plan

Optimizer

Task

UDF/UDAFsubstrsum

average

SerDe

Input/OutputFormat

RCFile

User Script

ExecMapper/ExecReducer

2011년 6월 30일 목요일

Map Reduce

Hive Internal

Web UI Hive CLI JDBC

Hive QL

Browse, Query, DDL

MetaStore

Thrift API

TSOperator

FSOperator

SELOperator

HDFS

HBaseDB

StorageHandler

...

Parser

Plan

Optimizer

Task

UDF/UDAFsubstrsum

average

SerDe

Input/OutputFormat

RCFile

User Script

ExecMapper/ExecReducer

2011년 6월 30일 목요일

Parser

Select col1,col2 From tab1 Where col3 > 5

TOK_QUERY

TOK_FROM TOK_INSERT

TOK_TABNAME

TOK_DESTINATION TOK_SELECT

TOK_DIR

TOK_TMP_FILE

TOK_SELEXPR TOK_SELEXPR

TOK_TABLE_OR_COL TOK_TABLE_OR_COL

TOK_WHERE

>

TOK_TABLE_OR_COL 5

Parser

2011년 6월 30일 목요일

Parser

Select col1,col2 From tab1 Where col3 > 5

TOK_QUERY

TOK_FROM TOK_INSERT

TOK_TABNAME

TOK_DESTINATION TOK_SELECT

TOK_DIR

TOK_TMP_FILE

TOK_SELEXPR TOK_SELEXPR

TOK_TABLE_OR_COL TOK_TABLE_OR_COL

TOK_WHERE

>

TOK_TABLE_OR_COL 5

QB

Parser

2011년 6월 30일 목요일

Parser

Select col1,col2 From tab1 Where col3 > 5

TOK_QUERY

TOK_FROM TOK_INSERT

TOK_TABNAME

TOK_DESTINATION TOK_SELECT

TOK_DIR

TOK_TMP_FILE

TOK_SELEXPR TOK_SELEXPR

TOK_TABLE_OR_COL TOK_TABLE_OR_COL

TOK_WHERE

>

TOK_TABLE_OR_COL 5

QB tab1

Parser

2011년 6월 30일 목요일

Parser

Select col1,col2 From tab1 Where col3 > 5

TOK_QUERY

TOK_FROM TOK_INSERT

TOK_TABNAME

TOK_DESTINATION TOK_SELECT

TOK_DIR

TOK_TMP_FILE

TOK_SELEXPR TOK_SELEXPR

TOK_TABLE_OR_COL TOK_TABLE_OR_COL

TOK_WHERE

>

TOK_TABLE_OR_COL 5

QB

tab1

insclause-0

Parser

2011년 6월 30일 목요일

Parser

Select col1,col2 From tab1 Where col3 > 5

TOK_QUERY

TOK_FROM TOK_INSERT

TOK_TABNAME

TOK_DESTINATION TOK_SELECT

TOK_DIR

TOK_TMP_FILE

TOK_SELEXPR TOK_SELEXPR

TOK_TABLE_OR_COL TOK_TABLE_OR_COL

TOK_WHERE

>

TOK_TABLE_OR_COL 5

QB

tab1

insclause-0

col1

Parser

2011년 6월 30일 목요일

Parser

Select col1,col2 From tab1 Where col3 > 5

TOK_QUERY

TOK_FROM TOK_INSERT

TOK_TABNAME

TOK_DESTINATION TOK_SELECT

TOK_DIR

TOK_TMP_FILE

TOK_SELEXPR TOK_SELEXPR

TOK_TABLE_OR_COL TOK_TABLE_OR_COL

TOK_WHERE

>

TOK_TABLE_OR_COL 5

QB

tab1

insclause-0

col1 col2

Parser

2011년 6월 30일 목요일

Parser

Select col1,col2 From tab1 Where col3 > 5

TOK_QUERY

TOK_FROM TOK_INSERT

TOK_TABNAME

TOK_DESTINATION TOK_SELECT

TOK_DIR

TOK_TMP_FILE

TOK_SELEXPR TOK_SELEXPR

TOK_TABLE_OR_COL TOK_TABLE_OR_COL

TOK_WHERE

>

TOK_TABLE_OR_COL 5

QB

tab1

insclause-0

col1 col2

Parser

2011년 6월 30일 목요일

Map Reduce

Hive Internal

Web UI Hive CLI JDBC

Hive QL

Browse, Query, DDL

MetaStore

Thrift API

TSOperator

FSOperator

SELOperator

HDFS

HBaseDB

StorageHandler

...

Parser

Plan

Optimizer

Task

UDF/UDAFsubstrsum

average

SerDe

Input/OutputFormat

RCFile

User Script

ExecMapper/ExecReducer

2011년 6월 30일 목요일

Map Reduce

Hive Internal

Web UI Hive CLI JDBC

Hive QL

Browse, Query, DDL

MetaStore

Thrift API

TSOperator

FSOperator

SELOperator

HDFS

HBaseDB

StorageHandler

...

Parser

Plan

Optimizer

Task

UDF/UDAFsubstrsum

average

SerDe

Input/OutputFormat

RCFile

User Script

ExecMapper/ExecReducer

2011년 6월 30일 목요일

QB

PlanPlan Select col1,col2 From tab1 Where col3 > 5

2011년 6월 30일 목요일

QB

PlanPlan Select col1,col2 From tab1 Where col3 > 5

TOK_FROM

TOK_WHERE

TOK_SELECT

TOK_DESTINATION

2011년 6월 30일 목요일

QB

PlanPlan Select col1,col2 From tab1 Where col3 > 5

TableScanOperatorTOK_FROM

TOK_WHERE

TOK_SELECT

TOK_DESTINATION

2011년 6월 30일 목요일

QB

PlanPlan Select col1,col2 From tab1 Where col3 > 5

TableScanOperatorTOK_FROM

TOK_WHERE

TOK_SELECT

TOK_DESTINATION

2011년 6월 30일 목요일

QB

PlanPlan Select col1,col2 From tab1 Where col3 > 5

FilterOperator

TableScanOperatorTOK_FROM

TOK_WHERE

TOK_SELECT

TOK_DESTINATION

2011년 6월 30일 목요일

QB

PlanPlan Select col1,col2 From tab1 Where col3 > 5

FilterOperator

TableScanOperatorTOK_FROM

TOK_WHERE

TOK_SELECT

TOK_DESTINATION

2011년 6월 30일 목요일

QB

PlanPlan Select col1,col2 From tab1 Where col3 > 5

FilterOperator

TableScanOperator

SelectOperator

TOK_FROM

TOK_WHERE

TOK_SELECT

TOK_DESTINATION

2011년 6월 30일 목요일

QB

PlanPlan Select col1,col2 From tab1 Where col3 > 5

FilterOperator

TableScanOperator

SelectOperator

TOK_FROM

TOK_WHERE

TOK_SELECT

TOK_DESTINATION

2011년 6월 30일 목요일

QB

PlanPlan Select col1,col2 From tab1 Where col3 > 5

FilterOperator

TableScanOperator

SelectOperator

FileSinkOperator

TOK_FROM

TOK_WHERE

TOK_SELECT

TOK_DESTINATION

2011년 6월 30일 목요일

Map Reduce

Hive Internal

Web UI Hive CLI JDBC

Hive QL

Browse, Query, DDL

MetaStore

Thrift API

TSOperator

FSOperator

SELOperator

HDFS

HBaseDB

StorageHandler

...

Parser

Plan

Optimizer

Task

UDF/UDAFsubstrsum

average

SerDe

Input/OutputFormat

RCFile

User Script

ExecMapper/ExecReducer

2011년 6월 30일 목요일

Map Reduce

Hive Internal

Web UI Hive CLI JDBC

Hive QL

Browse, Query, DDL

MetaStore

Thrift API

TSOperator

FSOperator

SELOperator

HDFS

HBaseDB

StorageHandler

...

Parser

Plan

Optimizer

Task

UDF/UDAFsubstrsum

average

SerDe

Input/OutputFormat

RCFile

User Script

ExecMapper/ExecReducer

2011년 6월 30일 목요일

TableScanOperator

FilterOperator

SelectOperator

FileSinkOperator

OptimizerOptimizer Select col1,col2 From tab1 Where col3 > 5

2011년 6월 30일 목요일

TableScanOperator

FilterOperator

SelectOperator

FileSinkOperator

tab1 {col1, col2, col3, col4,col5,col6,col7}

OptimizerOptimizer Select col1,col2 From tab1 Where col3 > 5

2011년 6월 30일 목요일

TableScanOperator

FilterOperator

SelectOperator

FileSinkOperator

tab1 {col1, col2, col3, col4,col5,col6,col7}

OptimizerOptimizer Select col1,col2 From tab1 Where col3 > 5

2011년 6월 30일 목요일

TableScanOperator

FilterOperator

SelectOperator

FileSinkOperator

ColumnPruner

Context

tab1 {col1, col2, col3, col4,col5,col6,col7}

OptimizerOptimizer Select col1,col2 From tab1 Where col3 > 5

2011년 6월 30일 목요일

TableScanOperator

FilterOperator

SelectOperator

FileSinkOperator

ColumnPrunerFIL

SELTS

Context

tab1 {col1, col2, col3, col4,col5,col6,col7}

OptimizerOptimizer Select col1,col2 From tab1 Where col3 > 5

2011년 6월 30일 목요일

TableScanOperator

FilterOperator

SelectOperator

FileSinkOperator

ColumnPrunerFIL

SELTS

Context

tab1 {col1, col2, col3, col4,col5,col6,col7}

OptimizerOptimizer Select col1,col2 From tab1 Where col3 > 5

2011년 6월 30일 목요일

TableScanOperator

FilterOperator

SelectOperator

FileSinkOperator

ColumnPruner

FIL

SELTSContext

tab1 {col1, col2, col3, col4,col5,col6,col7}

OptimizerOptimizer Select col1,col2 From tab1 Where col3 > 5

2011년 6월 30일 목요일

TableScanOperator

FilterOperator

SelectOperator

FileSinkOperator

ColumnPruner

FIL

SELTSContext

tab1 {col1, col2, col3, col4,col5,col6,col7}

OptimizerOptimizer Select col1,col2 From tab1 Where col3 > 5

2011년 6월 30일 목요일

TableScanOperator

FilterOperator

SelectOperator

FileSinkOperator

ColumnPruner

FIL

SELTSContext

tab1 {col1, col2, col3, col4,col5,col6,col7}

col1, col2

OptimizerOptimizer Select col1,col2 From tab1 Where col3 > 5

2011년 6월 30일 목요일

TableScanOperator

FilterOperator

SelectOperator

FileSinkOperator

ColumnPruner

FIL

SELTSContext

tab1 {col1, col2, col3, col4,col5,col6,col7}

OptimizerOptimizer Select col1,col2 From tab1 Where col3 > 5

2011년 6월 30일 목요일

TableScanOperator

FilterOperator

SelectOperator

FileSinkOperator

ColumnPruner

FIL

SELTSContext

tab1 {col1, col2, col3, col4,col5,col6,col7}

col1, col2, col3

OptimizerOptimizer Select col1,col2 From tab1 Where col3 > 5

2011년 6월 30일 목요일

TableScanOperator

FilterOperator

SelectOperator

FileSinkOperator

ColumnPruner

FIL

SELTSContext

tab1 {col1, col2, col3, col4,col5,col6,col7}

OptimizerOptimizer Select col1,col2 From tab1 Where col3 > 5

2011년 6월 30일 목요일

TableScanOperator

FilterOperator

SelectOperator

FileSinkOperator

ColumnPruner

FIL

SELTSContext

tab1 {col1, col2, col3, col4,col5,col6,col7}

col1, col2, col3

FilterOperator

OptimizerOptimizer Select col1,col2 From tab1 Where col3 > 5

2011년 6월 30일 목요일

Map Reduce

Hive Internal

Web UI Hive CLI JDBC

Hive QL

Browse, Query, DDL

MetaStore

Thrift API

TSOperator

FSOperator

SELOperator

HDFS

HBaseDB

StorageHandler

...

Parser

Plan

Optimizer

Task

UDF/UDAFsubstrsum

average

SerDe

Input/OutputFormat

RCFile

User Script

ExecMapper/ExecReducer

2011년 6월 30일 목요일

Map Reduce

Hive Internal

Web UI Hive CLI JDBC

Hive QL

Browse, Query, DDL

MetaStore

Thrift API

TSOperator

FSOperator

SELOperator

HDFS

HBaseDB

StorageHandler

...

Parser

Plan

Optimizer

Task

UDF/UDAFsubstrsum

average

SerDe

Input/OutputFormat

RCFile

User Script

ExecMapper/ExecReducer

2011년 6월 30일 목요일

TaskFactory

QB

TS - GenMRTableScan1

FS - GenMRFileSink1

TaskTask Select col1,col2 From tab1 Where col3 > 5

2011년 6월 30일 목요일

TaskFactory

QB

TS - GenMRTableScan1

FS - GenMRFileSink1

FetchTask

TaskTask Select col1,col2 From tab1 Where col3 > 5

2011년 6월 30일 목요일

TaskFactory

QB

FilterOperator

TableScanOperator

SelectOperator

FileSinkOperator

FilterOperator

TS - GenMRTableScan1

FS - GenMRFileSink1

FetchTask

TaskTask Select col1,col2 From tab1 Where col3 > 5

2011년 6월 30일 목요일

TaskFactory

QB

FilterOperator

TableScanOperator

SelectOperator

FileSinkOperator

FilterOperator

TS - GenMRTableScan1

FS - GenMRFileSink1

FetchTask

TaskTask Select col1,col2 From tab1 Where col3 > 5

2011년 6월 30일 목요일

TaskFactory

QB

FilterOperator

TableScanOperator

SelectOperator

FileSinkOperator

FilterOperator

FS - GenMRFileSink1

FetchTask

MapRedTask

TaskTask Select col1,col2 From tab1 Where col3 > 5

2011년 6월 30일 목요일

TaskFactory

QB

FilterOperator

TableScanOperator

SelectOperator

FileSinkOperator

FilterOperator

FS - GenMRFileSink1

FetchTask

MapRedTask

TaskTask Select col1,col2 From tab1 Where col3 > 5

2011년 6월 30일 목요일

TaskFactory

QB

FilterOperator

TableScanOperator

SelectOperator

FileSinkOperator

FilterOperator

FS - GenMRFileSink1

FetchTask

MapRedTask

TaskTask Select col1,col2 From tab1 Where col3 > 5

2011년 6월 30일 목요일

TaskFactory

QB

FilterOperator

TableScanOperator

SelectOperator

FileSinkOperator

FilterOperator

FS - GenMRFileSink1

FetchTask

MapRedTask

TaskTask Select col1,col2 From tab1 Where col3 > 5

2011년 6월 30일 목요일

TaskFactory

QB

FilterOperator

TableScanOperator

SelectOperator

FileSinkOperator

FilterOperator

FS - GenMRFileSink1

FetchTask

MapRedTask

TaskTask Select col1,col2 From tab1 Where col3 > 5

2011년 6월 30일 목요일

TaskFactory

QB

FilterOperator

TableScanOperator

SelectOperator

FileSinkOperator

FilterOperator FetchTask

MapRedTask

TaskTask Select col1,col2 From tab1 Where col3 > 5

2011년 6월 30일 목요일

TaskFactory

QB

FilterOperator

TableScanOperator

SelectOperator

FileSinkOperator

FilterOperator FetchTask

MapRedTask

TaskTask Select col1,col2 From tab1 Where col3 > 5

MapRedTask

2011년 6월 30일 목요일

Map Reduce

Hive Internal

Web UI Hive CLI JDBC

Hive QL

Browse, Query, DDL

MetaStore

Thrift API

TSOperator

FILOperator

FILOperator

HDFS

HBaseDB

StorageHandler

...

Parser

Plan

Optimizer

Task

UDF

SerDe

Input/OutputFormat

RCFile

User Script

ExecMapper/ExecReducer

SELOperator

FSOperator

2011년 6월 30일 목요일

Map Reduce

Hive Internal

Web UI Hive CLI JDBC

Hive QL

Browse, Query, DDL

MetaStore

Thrift API

TSOperator

FILOperator

FILOperator

HDFS

HBaseDB

StorageHandler

...

Parser

Plan

Optimizer

Task

UDF

SerDe

Input/OutputFormat

RCFile

User Script

ExecMapper/ExecReducer

SELOperator

FSOperator

2011년 6월 30일 목요일

Oracle Migration to Hive

2011년 6월 30일 목요일

Oracle to Hive

l BulkLoad

l DDL

l SQL

l Statistic Function

l Analytic Function

2011년 6월 30일 목요일

l Load

l DDL

l HQL (ANSI-SQL)

l Built-In/UDF/UDAF

l HQL + UDF, Pig, MapReduce

Oracle to Hive

l BulkLoad

l DDL

l SQL

l Statistic Function

l Analytic Function

2011년 6월 30일 목요일

l Load

l DDL

l HQL (ANSI-SQL)

l Built-In/UDF/UDAF

l HQL + UDF, Pig, MapReduce

Oracle to Hive

l BulkLoad

l DDL

l SQL

l Statistic Function

l Analytic Function

No UpdateNo InsertNo Low Latency

2011년 6월 30일 목요일

Oracle SQL

2011년 6월 30일 목요일

Data Model

Hive Entity Sample HDFS LOC

2011년 6월 30일 목요일

Data Model

Hive Entity Sample HDFS LOC

Table

2011년 6월 30일 목요일

Data Model

Hive Entity Sample HDFS LOC

Table Log /hive/Log

2011년 6월 30일 목요일

Data Model

Hive Entity Sample HDFS LOC

Table

Partition

Log /hive/Log

2011년 6월 30일 목요일

Data Model

Hive Entity Sample HDFS LOC

Table

Partition

Log /hive/Log

time=hour /hive/Log/time=1h

2011년 6월 30일 목요일

Data Model

Hive Entity Sample HDFS LOC

Table

Partition

Bucket

Log /hive/Log

time=hour /hive/Log/time=1h

2011년 6월 30일 목요일

Data Model

Hive Entity Sample HDFS LOC

Table

Partition

Bucket

Log /hive/Log

time=hour /hive/Log/time=1h

/wh/Log/time=1h/part-$hash(phone-num)phone-num

2011년 6월 30일 목요일

Data Model

Hive Entity Sample HDFS LOC

Table

Partition

Bucket

ExternalTable

Log /hive/Log

time=hour /hive/Log/time=1h

/wh/Log/time=1h/part-$hash(phone-num)phone-num

2011년 6월 30일 목요일

Data Model

Hive Entity Sample HDFS LOC

Table

Partition

Bucket

ExternalTable

Log /hive/Log

time=hour /hive/Log/time=1h

/wh/Log/time=1h/part-$hash(phone-num)phone-num

customer/app/meta/dir

(arbitrary location)

2011년 6월 30일 목요일

Data Model

HDFS

Partition

part-001

Partition

Bucket

MetaStore

Data LocationBucketing InfoPartitioning Info

/hive/Log/hive/Log/time=1h/hive/Log/time=1h/part-0001

Table

MetaStore DB

2011년 6월 30일 목요일

Column Data Types

2011년 6월 30일 목요일

Column Data Types

• Primitive Types

• int type : tinyint, smallint, int, bigint

• boolean, float, double, string

2011년 6월 30일 목요일

Column Data Types

• Primitive Types

• int type : tinyint, smallint, int, bigint

• boolean, float, double, string

• Nest-able Collections

• array : value(any-type)

• map : key(primitive) and value(any-type)

2011년 6월 30일 목요일

Column Data Types

• Primitive Types

• int type : tinyint, smallint, int, bigint

• boolean, float, double, string

• Nest-able Collections

• array : value(any-type)

• map : key(primitive) and value(any-type)

• User-defined types

• structures with attributes

2011년 6월 30일 목요일

DataType Convert

2011년 6월 30일 목요일

NUMBER(n)

DataType Convert

2011년 6월 30일 목요일

TINYINTINT/BIGINT

NUMBER(n)

DataType Convert

2011년 6월 30일 목요일

TINYINTINT/BIGINT

NUMBER(n)

NUMBER(n,m)

DataType Convert

2011년 6월 30일 목요일

TINYINTINT/BIGINT

FLOAT/DOUBLE

NUMBER(n)

NUMBER(n,m)

DataType Convert

2011년 6월 30일 목요일

TINYINTINT/BIGINT

FLOAT/DOUBLE

NUMBER(n)

NUMBER(n,m)

VARCHAR2

DataType Convert

2011년 6월 30일 목요일

TINYINTINT/BIGINT

STRING

FLOAT/DOUBLE

NUMBER(n)

NUMBER(n,m)

VARCHAR2

DataType Convert

2011년 6월 30일 목요일

TINYINTINT/BIGINT

STRING

FLOAT/DOUBLE

NUMBER(n)

NUMBER(n,m)

DATE

VARCHAR2

DataType Convert

2011년 6월 30일 목요일

TINYINTINT/BIGINT

STRING “yyyy-MM-dd HH:mm:ss” format

STRING

FLOAT/DOUBLE

NUMBER(n)

NUMBER(n,m)

DATE

VARCHAR2

DataType Convert

2011년 6월 30일 목요일

Oracle DML

• HIVE supports ANSI-SQL

• Sub-Queries in FROM clause

• Join query : equi-join/inner-join , outer-join

2011년 6월 30일 목요일

Range Operator

2011년 6월 30일 목요일

Range Operator

BETWEEN ~ AND ~

2011년 6월 30일 목요일

Range Operator

SELECT * from Employee WHERE

salary BETWEEN 100 AND 500;

BETWEEN ~ AND ~

2011년 6월 30일 목요일

Range Operator

SELECT * from Employee WHERE

salary BETWEEN 100 AND 500;

BETWEEN ~ AND ~

SELECT * from Employee WHERE

salary >= 100 AND salary <=500;

2011년 6월 30일 목요일

Range Operator

SELECT * from Employee WHERE

salary BETWEEN 100 AND 500;

BETWEEN ~ AND ~

SELECT * from Employee WHERE

salary >= 100 AND salary <=500;SELECT * from Employee WHERE

BETWEEN(salary,100,500);

2011년 6월 30일 목요일

IN / EXISTS Clause

2011년 6월 30일 목요일

IN / EXISTS Clause

IN / EXISTS SubQuery

2011년 6월 30일 목요일

IN / EXISTS Clause

SELECT * from Employee e WHERE e.DeptNo

IN(SELECT d.DeptNo FROM Dept d)

IN / EXISTS SubQuery

2011년 6월 30일 목요일

IN / EXISTS Clause

SELECT * from Employee e WHERE e.DeptNo

IN(SELECT d.DeptNo FROM Dept d)

IN / EXISTS SubQuery

SELECT * from Employee e WHERE

EXISTS(SELECT 1 FROM Dept d WHERE e.DeptNo=d.DeptNo)

2011년 6월 30일 목요일

IN / EXISTS Clause

SELECT * from Employee e WHERE e.DeptNo

IN(SELECT d.DeptNo FROM Dept d)

IN / EXISTS SubQuery

SELECT * from Employee e

LEFT SEMI JOIN Dept d ON (e.DeptNo=d.DeptNo)

SELECT * from Employee e WHERE

EXISTS(SELECT 1 FROM Dept d WHERE e.DeptNo=d.DeptNo)

2011년 6월 30일 목요일

NOT IN Clause

2011년 6월 30일 목요일

NOT IN Clause

NOT IN SubQuery

2011년 6월 30일 목요일

NOT IN Clause

SELECT * from Employee e WHERE e.DeptNo

NOT IN(SELECT d.DeptNo FROM Dept d)

NOT IN SubQuery

2011년 6월 30일 목요일

NOT IN Clause

SELECT * from Employee e WHERE e.DeptNo

NOT IN(SELECT d.DeptNo FROM Dept d)

NOT IN SubQuery

SELECT e.* from Employee e

LEFT OUTER JOIN Dept d ON (e.DeptNo=d.DeptNo)

WHERE d.DeptNo IS NULL

2011년 6월 30일 목요일

NOT EXIST Clause

2011년 6월 30일 목요일

NOT EXIST Clause

NOT EXIST SubQuery

2011년 6월 30일 목요일

NOT EXIST Clause

SELECT * from Employee e WHERE

NOT EXISTS(SELECT 1 FROM Dept d WHERE e.DeptNo=d.DeptNo)

NOT EXIST SubQuery

2011년 6월 30일 목요일

NOT EXIST Clause

SELECT * from Employee e WHERE

NOT EXISTS(SELECT 1 FROM Dept d WHERE e.DeptNo=d.DeptNo)

NOT EXIST SubQuery

SELECT e.* from Employee e

LEFT OUTER JOIN Dept d ON (e.DeptNo=d.DeptNo)

WHERE d.DeptNo IS NULL

2011년 6월 30일 목요일

LIKE Clause

2011년 6월 30일 목요일

LIKE Clause

LIKE / NOT LIKE

2011년 6월 30일 목요일

LIKE Clause

SELECT * from Employee e WHERE name LIKE ’%steve’

LIKE / NOT LIKE

2011년 6월 30일 목요일

LIKE Clause

SELECT * from Employee e WHERE name LIKE ’%steve’

LIKE / NOT LIKE

SELECT e.* from Employee e WHERE name LIKE ‘%steve’

2011년 6월 30일 목요일

LIKE Clause

SELECT * from Employee e WHERE name LIKE ’%steve’

LIKE / NOT LIKE

SELECT e.* from Employee e WHERE name LIKE ‘%steve’

SELECT * from Employee e WHERE name NOT LIKE ’%steve’

2011년 6월 30일 목요일

LIKE Clause

SELECT * from Employee e WHERE name LIKE ’%steve’

LIKE / NOT LIKE

SELECT e.* from Employee e WHERE name LIKE ‘%steve’

SELECT * from Employee e WHERE name NOT LIKE ’%steve’

SELECT e.* from Employee e WHERE NOT name LIKE ‘%steve’

2011년 6월 30일 목요일

LIKE Clause

SELECT * from Employee e WHERE name LIKE ’%steve’

LIKE / NOT LIKE

SELECT e.* from Employee e WHERE name LIKE ‘%steve’

SELECT * from Employee e WHERE name NOT LIKE ’%steve’

SELECT e.* from Employee e WHERE NOT name LIKE ‘%steve’

2011년 6월 30일 목요일

JOIN Operator (1/4)

2011년 6월 30일 목요일

JOIN Operator (1/4)

SELF JOIN

2011년 6월 30일 목요일

JOIN Operator (1/4)

SELECT *

FROM Employee e1, Employee e2 WHERE e1.ID = e2.Id

SELF JOIN

2011년 6월 30일 목요일

JOIN Operator (1/4)

SELECT *

FROM Employee e1, Employee e2 WHERE e1.ID = e2.Id

SELF JOIN

SELECT *

FROM Employee e1 JOIN Employee e2 ON (e1.ID = e2.Id)

2011년 6월 30일 목요일

JOIN Operator (2/4)

2011년 6월 30일 목요일

JOIN Operator (2/4)

CROSS JOIN (Cartesian Product)

2011년 6월 30일 목요일

JOIN Operator (2/4)

SELECT emp.Name, dept.Name FROM Employee emp, Dept dep

CROSS JOIN (Cartesian Product)

2011년 6월 30일 목요일

JOIN Operator (2/4)

SELECT emp.Name, dept.Name FROM Employee emp, Dept dep

CROSS JOIN (Cartesian Product)

SELECT emp.Name, dept.Name FROM Employee emp JOIN Dept dep

2011년 6월 30일 목요일

JOIN Operator (3/4)

2011년 6월 30일 목요일

JOIN Operator (3/4)

LEFT OUTER JOIN

2011년 6월 30일 목요일

JOIN Operator (3/4)

SELECT * FROM Emp, Dept

WHERE Emp.deptNo = Dept.deptNo(+)

LEFT OUTER JOIN

2011년 6월 30일 목요일

JOIN Operator (3/4)

SELECT * FROM Emp, Dept

WHERE Emp.deptNo = Dept.deptNo(+)

LEFT OUTER JOIN

SELECT * FROM Emp

LEFT OUTER JOIN Dept ON Emp.deptNO = Dept.deptNo

2011년 6월 30일 목요일

JOIN Operator (4/4)

2011년 6월 30일 목요일

JOIN Operator (4/4)

RIGHT OUTER JOIN

2011년 6월 30일 목요일

JOIN Operator (4/4)

SELECT * FROM Emp, Dept

WHERE Emp.deptNo(+) = Dept.deptNo

RIGHT OUTER JOIN

2011년 6월 30일 목요일

JOIN Operator (4/4)

SELECT * FROM Emp, Dept

WHERE Emp.deptNo(+) = Dept.deptNo

RIGHT OUTER JOIN

SELECT * FROM Emp

RIGHT OUTER JOIN Dept ON Emp.deptNO = Dept.deptNo

2011년 6월 30일 목요일

Oracle Function

2011년 6월 30일 목요일

Condition Function

2011년 6월 30일 목요일

Condition Function

CASE

2011년 6월 30일 목요일

Condition Function

CASE

CASE expr WHEN cond1 THEN r1

[WHEN cond2 THEN r2]* [ELSE r] END

2011년 6월 30일 목요일

Condition Function

CASE

CASE expr WHEN cond1 THEN r1

[WHEN cond2 THEN r2]* [ELSE r] END

CASE expr WHEN cond1 THEN r1

[WHEN cond2 THEN r2]* [ELSE r] END

2011년 6월 30일 목요일

Math Function

2011년 6월 30일 목요일

Math Function

ROUND

2011년 6월 30일 목요일

ROUND

Math Function

ROUND

2011년 6월 30일 목요일

ROUND

Math Function

ROUND

CEIL

2011년 6월 30일 목요일

CEIL/CEILING

ROUND

Math Function

ROUND

CEIL

2011년 6월 30일 목요일

CEIL/CEILING

ROUND

Math Function

ROUND

CEIL

MOD

2011년 6월 30일 목요일

PMOD

CEIL/CEILING

ROUND

Math Function

ROUND

CEIL

MOD

2011년 6월 30일 목요일

PMOD

CEIL/CEILING

ROUND

Math Function

ROUND

CEIL

POWER

MOD

2011년 6월 30일 목요일

POW/POWER

PMOD

CEIL/CEILING

ROUND

Math Function

ROUND

CEIL

POWER

MOD

2011년 6월 30일 목요일

POW/POWER

PMOD

CEIL/CEILING

ROUND

Math Function

ROUND

CEIL

POWER

MOD

SQRT

2011년 6월 30일 목요일

SQRT

POW/POWER

PMOD

CEIL/CEILING

ROUND

Math Function

ROUND

CEIL

POWER

MOD

SQRT

2011년 6월 30일 목요일

SQRT

POW/POWER

PMOD

CEIL/CEILING

ROUND

Math Function

ROUND

CEIL

POWER

SIN/COS

MOD

SQRT

2011년 6월 30일 목요일

SIN/COS

SQRT

POW/POWER

PMOD

CEIL/CEILING

ROUND

Math Function

ROUND

CEIL

POWER

SIN/COS

MOD

SQRT

2011년 6월 30일 목요일

Character Function

2011년 6월 30일 목요일

Character Function

SUBSTR

2011년 6월 30일 목요일

Character Function

SUBSTRSUBSTR

2011년 6월 30일 목요일

Character Function

SUBSTRSUBSTR

TRIM

2011년 6월 30일 목요일

Character Function

TRIM

SUBSTRSUBSTR

TRIM

2011년 6월 30일 목요일

Character Function

TRIM

SUBSTRSUBSTR

TRIM

LPAD/RPAD

2011년 6월 30일 목요일

Character Function

LPAD/RPAD

TRIM

SUBSTRSUBSTR

TRIM

LPAD/RPAD

2011년 6월 30일 목요일

Character Function

LPAD/RPAD

TRIM

SUBSTRSUBSTR

TRIM

LTRIM/RTRIM

LPAD/RPAD

2011년 6월 30일 목요일

Character Function

LTRIM/RTRIM

LPAD/RPAD

TRIM

SUBSTRSUBSTR

TRIM

LTRIM/RTRIM

LPAD/RPAD

2011년 6월 30일 목요일

Character Function

LTRIM/RTRIM

LPAD/RPAD

TRIM

SUBSTRSUBSTR

TRIM

LTRIM/RTRIM

LPAD/RPAD

REPLACE

2011년 6월 30일 목요일

Character Function

REGEXP_REPLACE

LTRIM/RTRIM

LPAD/RPAD

TRIM

SUBSTRSUBSTR

TRIM

LTRIM/RTRIM

LPAD/RPAD

REPLACE

2011년 6월 30일 목요일

NULL Function

2011년 6월 30일 목요일

NULL Function

COALESCE

2011년 6월 30일 목요일

NULL Function

COALESCECOALESCE

2011년 6월 30일 목요일

NULL Function

COALESCECOALESCE

NVL

2011년 6월 30일 목요일

NULL Function

Custom UDF

COALESCECOALESCE

NVL

2011년 6월 30일 목요일

NULL Function

Custom UDF

COALESCECOALESCE

NVL

NVL2

2011년 6월 30일 목요일

NULL Function

Custom UDF

Custom UDF

COALESCECOALESCE

NVL

NVL2

2011년 6월 30일 목요일

• Condition Function

•DECODE

• Null Comparison Function

•NVL / NVL2

• Type Conversion

•TO_NUMBER

•TO_CHAR

•TO_DATE

Custom UDF Function

2011년 6월 30일 목요일

Oracle Analytic Function

2011년 6월 30일 목요일

Analytic Function

2011년 6월 30일 목요일

Analytic Function

Joins, WHERE, GROUP BY clauses are performed

2011년 6월 30일 목요일

Analytic Function

Joins, WHERE, GROUP BY clauses are performed

the analytic functions are performed with the result set

2011년 6월 30일 목요일

Analytic Function

Joins, WHERE, GROUP BY clauses are performed

the analytic functions are performed with the result set

ORDER BY clause is processed

2011년 6월 30일 목요일

Analytic Function

name dept salary---------------------a Research 100b Research 100c Sales 200d Sales 300e Research 50f Accounting 200g Accounting 300h Accounting 400i Research 10

Rank salary in dept

2011년 6월 30일 목요일

Analytic Function

name dept salary---------------------a Research 100b Research 100c Sales 200d Sales 300e Research 50f Accounting 200g Accounting 300h Accounting 400i Research 10

2011년 6월 30일 목요일

Analytic Function

Map

Map

Map

name dept salary---------------------a Research 100b Research 100c Sales 200d Sales 300e Research 50f Accounting 200g Accounting 300h Accounting 400i Research 10

2011년 6월 30일 목요일

Analytic Function

Map

Map

Map

d Sales 300e Research 50f Accounting 200

a Research 100b Research 100c Sales 200

g Accounting 300h Accounting 400i Research 10

2011년 6월 30일 목요일

Analytic Function

Map

Map

Map

d Sales 300e Research 50f Accounting 200

a Research 100b Research 100c Sales 200

g Accounting 300h Accounting 400i Research 10

DISTRIBUTED BY dept

2011년 6월 30일 목요일

Analytic Function

Map

Map

Map

Reduce

Reduce

d Sales 300e Research 50f Accounting 200

a Research 100b Research 100c Sales 200

g Accounting 300h Accounting 400i Research 10

DISTRIBUTED BY dept

2011년 6월 30일 목요일

Analytic Function

Map

Map

Map

Reduce

Reduce

c Sales 200g Accounting 300h Accounting 400d Sales 300f Accounting 200

g Research 300h Research 400e Research 300i Research 10

DISTRIBUTED BY dept

2011년 6월 30일 목요일

Analytic Function

Map

Map

Map

Reduce

Reduce

SORT BY dept, salary

i Research 10g Research 300e Research 300h Research 400

c Sales 200d Sales 300f Accounting 200g Accounting 300h Accounting 400

2011년 6월 30일 목요일

Analytic Function

Map

Map

Map

Reduce

Reducei Research 10g Research 300e Research 300h Research 400

c Sales 200d Sales 300f Accounting 200g Accounting 300h Accounting 400

2011년 6월 30일 목요일

Analytic Function

Map

Map

Map

Reduce

Reducei Research 10g Research 300e Research 300h Research 400

c Sales 200d Sales 300f Accounting 200g Accounting 300h Accounting 400

12123

1234

RANK(dept,salary)

2011년 6월 30일 목요일

Analytic Function

2011년 6월 30일 목요일

Analytic Function

RANK

2011년 6월 30일 목요일

Analytic Function

SELECT name,dept,salary,RANK() OVER (PARTITION BY dept

ORDER BY salary DESC) FROM emp

RANK

2011년 6월 30일 목요일

Analytic Function

SELECT name,dept,salary,RANK() OVER (PARTITION BY dept

ORDER BY salary DESC) FROM emp

RANK

SELECT e.name,e.dept,e.salary,RANK(e.dept,e.salary) FROM (SELECT name, dept, salary FROM emp DISTRIBUTED BY dept SORT BY dept, salary DESC) e

2011년 6월 30일 목요일

Analytic Function

SELECT name,dept,salary,RANK() OVER (PARTITION BY dept

ORDER BY salary DESC) FROM emp

RANK

SELECT e.name,e.dept,e.salary,RANK(e.dept,e.salary) FROM (SELECT name, dept, salary FROM emp DISTRIBUTED BY dept SORT BY dept, salary DESC) e

RANK(arg1,arg2) - Custom UDF

2011년 6월 30일 목요일

Hive Optimization& Future Work

2011년 6월 30일 목요일

Tuning Parameter

2011년 6월 30일 목요일

Tuning Parameter

• Hadoop Tunning

2011년 6월 30일 목요일

Tuning Parameter

• Hadoop Tunning

• mapred.job.reuse.jvm.num.task

2011년 6월 30일 목요일

Tuning Parameter

• Hadoop Tunning

• mapred.job.reuse.jvm.num.task

• mapred.child.java.opts

2011년 6월 30일 목요일

Tuning Parameter

• Hadoop Tunning

• mapred.job.reuse.jvm.num.task

• mapred.child.java.opts

• mapred.min.split.size / mapred.max.split.size

2011년 6월 30일 목요일

Tuning Parameter

• Hadoop Tunning

• mapred.job.reuse.jvm.num.task

• mapred.child.java.opts

• mapred.min.split.size / mapred.max.split.size

• dfs.block.size

2011년 6월 30일 목요일

Tuning Parameter

• Hadoop Tunning

• mapred.job.reuse.jvm.num.task

• mapred.child.java.opts

• mapred.min.split.size / mapred.max.split.size

• dfs.block.size

• Hive Tunning

2011년 6월 30일 목요일

Tuning Parameter

• Hadoop Tunning

• mapred.job.reuse.jvm.num.task

• mapred.child.java.opts

• mapred.min.split.size / mapred.max.split.size

• dfs.block.size

• Hive Tunning

• hive.input.format = CombineHiveInputFormat

2011년 6월 30일 목요일

• Develop UDF to optimize number of MR jobs

• Extend GenericUDF to avoid java reflection

• Avoid creating new objects in UDF

UDF/UDAF

2011년 6월 30일 목요일

Future Work

2011년 6월 30일 목요일

• HiveQL SQL Compliance

• HIVE-282 - IN statement for WHERE clauses

• HIVE-192 - Add TIMESTAMP column type

• HIVE-1269 - Support Date/Datetime/Time/Timestamp Primitive Types

Future Work

2011년 6월 30일 목요일

• HiveQL SQL Compliance

• HIVE-282 - IN statement for WHERE clauses

• HIVE-192 - Add TIMESTAMP column type

• HIVE-1269 - Support Date/Datetime/Time/Timestamp Primitive Types

• Analytic Function

• HIVE-896 - Add LEAD/LAG/FIRST/LAST analytical windowing functions to Hive

• HIVE-952 - Support analytic NTILE function

Future Work

2011년 6월 30일 목요일

• HiveQL SQL Compliance

• HIVE-282 - IN statement for WHERE clauses

• HIVE-192 - Add TIMESTAMP column type

• HIVE-1269 - Support Date/Datetime/Time/Timestamp Primitive Types

• Analytic Function

• HIVE-896 - Add LEAD/LAG/FIRST/LAST analytical windowing functions to Hive

• HIVE-952 - Support analytic NTILE function

• Optimization

• HIVE-1694 - Accelerate GROUP BY execution using indexes

• HIVE-482 - Optimize Group By + Order By with the same keys

Future Work

2011년 6월 30일 목요일

2011년 6월 30일 목요일

2011년 6월 30일 목요일

Hive

Oracle 2 Hive

2011년 6월 30일 목요일

A system for managing and querying structured data built on top of Hadoop

Hive

Oracle 2 Hive

2011년 6월 30일 목요일

A system for managing and querying structured data built on top of Hadoop

Hive

Oracle 2 Hivedata modelANSI-SQLbuilt-in function / custom UDFanalytic function

2011년 6월 30일 목요일

2011년 6월 30일 목요일

2011년 6월 30일 목요일

Question ?

2011년 6월 30일 목요일