View
2.457
Download
2
Category
Tags:
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일 목요일
Recommended