SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Page1 © Hortonworks Inc. 2014
Cost-based query optimization in
Apache Hive 0.14
Julian Hyde Julian Hyde
Seattle
September 24th, 2014
Page2 © Hortonworks Inc. 2014
About me
Julian Hyde
Architect at Hortonworks
Open source:
• Founder & lead, Apache Optiq (query optimization framework)
• Founder & lead, Pentaho Mondrian (analysis engine)
• Committer, Apache Drill
• Contributor, Apache Hive
• Contributor, Cascading Lingual (SQL interface to Cascading)
Past:
• SQLstream (streaming SQL)
• Broadbase (data warehouse)
• Oracle (SQL kernel development)
Page3 © Hortonworks Inc. 2014
Hadoop - A New Data Architecture for New DataAPPLICATIONSDATASYSTEM
REPOSITORIES
SOURCES
Existing Sources
(CRM, ERP, Clickstream, Logs)
RDBMS EDW MPP
Business Analytics
Custom Applications
Packaged Applications
OLTP, ERP, CRM Systems
Unstructured documents, emails
Clickstream
Server logs
Sentiment, Web Data
Sensor. Machine Data
Geolocation
New Data Requirements:
• Scale
• Economics
• Flexibility
Traditional Data Architecture
Page4 © Hortonworks Inc. 2014
© Hortonworks Inc. 2013
Interactive SQL-IN-Hadoop Delivered
Stinger Initiative – DELIVERED
Next generation SQL based
interactive query in Hadoop
Speed
Improve Hive query performance has increased by 100X to allow for
interactive query times (seconds)
Scale
The only SQL interface to Hadoop designed for queries that scale
from TB to PB
SQL
Support broadest range of SQL semantics for analytic applications
running against Hadoop
Apache Hive Contribution… an Open Community at its finest
1,672Jira Tickets Closed
145Developers
44Companies
~390,000Lines Of Code Added… (2x)
Apache YARN
Apache
MapReduce
1 ° ° °
° ° ° °
° ° ° °
°
°
N
HDFS
(Hadoop Distributed File System)
Apache
Tez
Apache Hive
SQL
Business Analytics Custom
Apps
Stinger Project
Stinger Phase 1:
• Base Optimizations
• SQL Types
• SQL Analytic Functions
• ORCFile Modern File Format
Stinger Phase 2:
• SQL Types
• SQL Analytic Functions
• Advanced Optimizations
• Performance Boosts via YARN
Stinger Phase 3
• Hive on Apache Tez
• Query Service (always on)
• Buffer Cache
• Cost Based Optimizer (Optiq)
13Months
Governance
&Integration
Security
Operations
Data Access
Data
Management
HDP 2.1
ORC File
Window
Functions
Page5 © Hortonworks Inc. 2014
Hive – Single tool for all SQL use cases
OLTP, ERP, CRM Systems
Unstructured documents, emails
Clickstream
Server logs
Sentiment, Web Data
Sensor. Machine Data
Geolocation
Interactive
Analytics
Batch Reports /
Deep Analytics
Hive - SQL
ETL / ELT
Page6 © Hortonworks Inc. 2014
Incremental cutover to cost-based optimization
Release Date Remarks
Apache Hive 0.12 October 2013 • Rule-based Optimizations
• No join reordering
• Main optimizations: predicate push-
down & partition pruning
• Semantic info and operator tree tightly
coupled
Apache Hive 0.13 April 2014 “Old-style” JOIN & push-down conditions:
… FROM t1, t2 WHERE …
HDP 2.1 April 2014 Cost-based ordering of joins
Apache Hive 0.14 soon Bushy joins, large joins, better operator
coverage, better statistics, …
Page7 © Hortonworks Inc. 2014
Apache Optiq
(incubating)
Page8 © Hortonworks Inc. 2014
Apache Optiq
Apache incubator project since May, 2014
Query planning framework
• Relational algebra, rewrite rules, cost model
• Extensible
• Usable standalone (JDBC) or embedded
Adoption
• Lingual – SQL interface to Cascading
• Apache Drill
• Apache Hive
Adapters: Splunk, Spark, MongoDB, JDBC, CSV, JSON, Web tables, In-
memory data
Page9 © Hortonworks Inc. 2014
Conventional DB architecture
Page10 © Hortonworks Inc. 2014
Optiq architecture
Page11 © Hortonworks Inc. 2014
MySQL
Splunk
Expression tree
SELECT p.“product_name”, COUNT(*) AS c
FROM “splunk”.”splunk” AS s
JOIN “mysql”.”products” AS p
ON s.”product_id” = p.”product_id”
WHERE s.“action” = 'purchase'
GROUP BY p.”product_name”
ORDER BY c DESC
join
Key: product_id
group
Key: product_name
Agg: count
filter
Condition:
action =
'purchase'
sort
Key: c DESC
scan
scan
Table: splunk
Table: products
Page12 © Hortonworks Inc. 2014
Splunk
Expression tree
(optimized)
SELECT p.“product_name”, COUNT(*) AS c
FROM “splunk”.”splunk” AS s
JOIN “mysql”.”products” AS p
ON s.”product_id” = p.”product_id”
WHERE s.“action” = 'purchase'
GROUP BY p.”product_name”
ORDER BY c DESC
join
Key: product_id
group
Key: product_name
Agg: count
filter
Condition:
action =
'purchase'
sort
Key: c DESC
scan
Table: splunk
MySQL
scan
Table: products
Page13 © Hortonworks Inc. 2014
Optiq – APIs and SPIs
Cost, statistics
RelOptCost
RelOptCostFactory
RelMetadataProvider
• RelMdColumnUniquensss
• RelMdDistinctRowCount
• RelMdSelectivity
SQL parser
SqlNode
SqlParser
SqlValidator
Transformation rules
RelOptRule
• MergeFilterRule
• PushAggregateThroughUni
onRule
• RemoveCorrelationForScal
arProjectRule
• 100+ more
Unification (materialized view)
Column trimming
Relational algebra
RelNode (operator)
• TableScan
• Filter
• Project
• Union
• Aggregate
• …
RelDataType (type)
RexNode (expression)
RelTrait (physical property)
• RelConvention (calling-convention)
• RelCollation (sortedness)
• TBD (bucketedness/distribution) JDBC driver
Metadata
Schema
Table
Function
• TableFunction
• TableMacro
Page14 © Hortonworks Inc. 2014
Under development in Optiq - materialized views
Query: SELECT x, SUM(y) FROM t GROUP BY x
In-memory
materialized
queries
Tables
on disk
http://hortonworks.com/blog/dmmq/
Page15 © Hortonworks Inc. 2014
Now… back to Hive
Page16 © Hortonworks Inc. 2014
CBO in Hive
Why cost-based optimization?
Ease of Use – Join Reordering
View Chaining
Ad hoc queries involving multiple views
Enables BI Tools as front ends to Hive
More efficient & maintainable query preparation process
Laying the groundwork for deeper optimizations, e.g. materialized views
Page 16
Page17 © Hortonworks Inc. 2014
Query preparation – Hive 0.13
SQL
parser
Semantic
analyzer
Logical
Optimizer
Physical
Optimizer
Abstract
Syntax
Tree (AST)
Hive SQL
Annotated
AST
Plan
Tez
Tuned
Plan
Page18 © Hortonworks Inc. 2014
Query preparation – full CBO
SQL
parser
Semantic
analyzer
Translate
to algebra
Physical
Optimizer
Abstract
Syntax
Tree (AST)
Hive SQL
Tez
Tuned
Plan
Optiq
optimizer
RelNode
Annotated
AST
Page19 © Hortonworks Inc. 2014
Query preparation – Hive 0.14
SQL
parser
Semantic
analyzer
Logical
Optimizer
Physical
Optimizer
Hive SQL
AST with optimized
join-ordering
Tez
Tuned
Plan
Translate
to algebra
Optiq
optimizer
Page20 © Hortonworks Inc. 2014
© Hortonworks Inc. 2013
Query Execution – The basics
Page 20
SELECT R1.x
FROM R1
JOIN R2 ON R1.x = R2.x
JOIN R3 on R1.x = R3.x AND R2.x = R3.x
WHERE R1.z > 10;
p
s


R1 R2
R3
TS [R1]
TS [R2]
RS
RS
Shuffle
Join
TS [R3]
Map
Join
Filter FS
Page21 © Hortonworks Inc. 2014
Optiq Planner Process
Hive
Plan
Planner
RelNode
GraphRelNode Converter
RexNode Converter
Hive Op  RelNode
Hive Expr  RexNode
• Node for each node in
Input Plan
• Each node is a Set of
alternate Sub Plans
• Set further divided into
Subsets: based on
traits like sortedness
1. Plan Graph
• Rule: specifies a Operator
sub-graph to match and
logic to generate equivalent
‘better’ sub-graph.
• We only have Join
Reordering Rules.
2. Rules
• RelNodes have Cost (&
Cumulative Cost)
• We only use Cardinality
for Cost.
3. Cost Model
- Used to Plugin Schema,
Cost Formulas:
Selectivity, NDV
calculations etc.
- We only added
Selectivity and NDV
formulas; Schema is
only available at the
Node level
4. Metadata Providers
Rule Match Queue
- Add Rule matches to Queue
- Apply Rule match
transformations to Plan Graph
- Iterate for fixed iterations or
until Cost doesn’t change.
- Match importance based on
Cost of RelNode and height.
Best
RelNode
Graph
AST Converter
Revised
AST
Logical Plan
Physical traits:
Table Part./Buckets;
RedSink Ops
removed
Page22 © Hortonworks Inc. 2014
Star schema
Sales InventoryTime
Product
Customer
Warehouse
Key
Fact table
Dimension table
Many-to-one relationship
Page23 © Hortonworks Inc. 2014
Query combining two stars
SELECT product.id, sum(sales.units), sum(inventory.on_hand)
FROM sales ON …
JOIN customer ON …
JOIN time ON …
JOIN product ON …
JOIN inventory ON …
JOIN warehouse ON …
WHERE time.year = 2014
AND time.quarter = ‘Q1’
AND product.color = ‘Red’
AND warehouse.state = ‘WA’
GROUP BY …
Sales InventoryTime
Product
Customer
Warehouse
Page24 © Hortonworks Inc. 2014
Left-deep tree
Initial tree is “left-deep”
No join node is the right child of its parent
Join-ordering algorithm chooses what
order to join tables – does not re-shape the
tree
Typical plan:
• Start with largest table at bottom left
• Join tables with more selective
conditions first
Sales Customer
Time
Product
Inventory
Warehouse
Page25 © Hortonworks Inc. 2014
Bushy tree
No restrictions on where join
nodes can occur
“Bushes” consist of fact tables
(Sales and Inventory) surrounded
by many-to-one related
dimension tables
Dimension tables have a filtering
effect
This tree produces the same
result as previous plan but is
more efficient
Sales Customer
Time
Product
Inventory Warehouse
Page26 © Hortonworks Inc. 2014
Two approaches to join optimization
Algorithm #1 “exhaustive search”
Apply 3 transformation rules exhaustively:
• SwapJoinRule: A join B  B join A
• PushJoinThroughJoinRule: (A join B) join C  (A join C) join B
• CommutativeJoinRule: (A join B) join C  A join (B join C)
Finds every possible plan, but not practical for more than ~8 joins
Algorithm #2 “greedy”
Build a graph iteratively
Use heuristics to choose the “best” node to add next
Applying them to Hive
We can use both algorithms – and we do!
Both are sensitive to bad statistics – e.g. poor estimation of intermediate result set sizes
Page27 © Hortonworks Inc. 2014
Statistics
Feeding the beast
CBO disabled if your tables don’t have statistics
• No longer require statistics on all columns, just join columns
Better optimizations need ever-better statistics… so, statistics are getting better
Kinds of statistics
Raw statistics on stored data: row counts, number-of-distinct-values (NDV)
Statistics on intermediate operators, computed using selectivity estimates
• Much improved selectivity estimates this release, based on NDVs
• Planned improvements to raw statistics (e.g. histograms, unique keys, sort order) will help
• Materialized views
Run-time statistics
• Example 1: 90% of the rows in this join have the same key  use skew join
• Example 2: Only 10 distinct values of GROUP BY key  auto-reduce parallelism
Page28 © Hortonworks Inc. 2014
Stored statistics – recent improvements
ANALYZE
Clean up command syntax
Faster computation
Table vs partition statistics
All statistics now stored per partition
Statistics retrieval
Faster retrieval
Merge partition statistics
Extrapolate for missing statistics
Extrapolation
SQL:
SELECT productId, COUNT(*)
FROM Sales
WHERE year = 2014
GROUP BY productId
Required statistic: NDV(productId)
Statistics available
2013
Q1
2013
Q2
2013
Q3
2013
Q4
2014
Q1
2014
Q2
2014
Q3
2014
Q4
Used in query
Extrapolate
{Q1, Q2, Q3}
stats for Q4
Page29 © Hortonworks Inc. 2014
Dynamic partition pruning
Consider a query with a partitioned fact table, filters on the dimension
table:
SELECT … FROM Sales
JOIN Time ON Sales.time_id = Time.time_id
WHERE time.year = 2014 AND time.quarter IN (‘Q1’, ‘Q2’)
At execute time, DAG figures out which
partitions could possibly match, and cancels
scans of the others
2013
Q1
2013
Q2
2013
Q3
2013
Q4
2014
Q1
2014
Q2
2014
Q3
2014
Q4
Time
Page30 © Hortonworks Inc. 2014
Summary
Join-ordering: (exhaustive & heuristic), scalability, bushy joins
Statistics – faster, better, extrapolate if stats missing
Very few operators that CBO can’t handle – TABLESAMPLE, SCRIPT,
multi-INSERT
Dynamic partition pruning
Auto-reduce parallelism
Page 30
Page31 © Hortonworks Inc. 2014
Show me the numbers…
Page32 © Hortonworks Inc. 2014
TPC-DS (30TB) Q17
Joins Store Sales, Store Returns and Catalog
Sales fact tables.
Each of the fact tables are independently
restricted by time.
Analysis at Item and Store grain, so these
dimensions are also joined in.
As specified Query starts by joining the 3 Fact
tables.
SELECT i_item_id
,i_item_desc
,s_state
,count(ss_quantity) as store_sales_quantitycount
,….
FROM store_sales ss ,store_returns sr, catalog_sales cs,
date_dim d1, date_dim d2, date_dim d3, store s, item I
WHERE d1.d_quarter_name = '2000Q1’
AND d1.d_date_sk = ss.ss_sold_date_sk
AND i.i_item_sk = ss.ss_item_sk AND …
GROUP BY i_item_id ,i_item_desc, ,s_state
ORDER BY i_item_id ,i_item_desc, s_state
LIMIT 100;
CBO Elapsed
(s)
Intemediate
data (GB)
Off 10,683 5,017
On 1,284 275
Page33 © Hortonworks Inc. 2014
TPC-DS (200G) queries
Query Hive 14
CBO off
Hive 14
CBO on
Gain
Q15 84 44 91%
Q22 123 99 24%
Q29 1677 48 3,394%
Q40 118 29 307%
Q51 276 80 245%
Q80 842 70 1,103%
Q82 278 23 1,109%
Q87 275 51 439%
Q92 511 80 539%
Q93 160 69 132%
Q97 483 79 511%
Page34 © Hortonworks Inc. 2014
Stinger.next
• SQL compliance: interval data type, non-equi joins, set operators, more
sub-queries
• Transactions: COMMIT, savepoint, rollback)
• LLAP
• Materialized views
• In-memory
• Automatic or manual
http://hortonworks.com/blog/stinger-next-enterprise-sql-hadoop-scale-apache-hive/
Page35 © Hortonworks Inc. 2014
Thank you!
@julianhyde
http://hive.apache.org/
http://optiq.incubator.apache.org/

Weitere ähnliche Inhalte

Was ist angesagt?

Query Compilation in Impala
Query Compilation in ImpalaQuery Compilation in Impala
Query Compilation in Impala
Cloudera, Inc.
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
Dvir Volk
 

Was ist angesagt? (20)

Apache Arrow: In Theory, In Practice
Apache Arrow: In Theory, In PracticeApache Arrow: In Theory, In Practice
Apache Arrow: In Theory, In Practice
 
OSA Con 2022 - Arrow in Flight_ New Developments in Data Connectivity - David...
OSA Con 2022 - Arrow in Flight_ New Developments in Data Connectivity - David...OSA Con 2022 - Arrow in Flight_ New Developments in Data Connectivity - David...
OSA Con 2022 - Arrow in Flight_ New Developments in Data Connectivity - David...
 
Luigi presentation OA Summit
Luigi presentation OA SummitLuigi presentation OA Summit
Luigi presentation OA Summit
 
Hive+Tez: A performance deep dive
Hive+Tez: A performance deep diveHive+Tez: A performance deep dive
Hive+Tez: A performance deep dive
 
Hive 3 - a new horizon
Hive 3 - a new horizonHive 3 - a new horizon
Hive 3 - a new horizon
 
[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)[211] HBase 기반 검색 데이터 저장소 (공개용)
[211] HBase 기반 검색 데이터 저장소 (공개용)
 
Using Apache Arrow, Calcite, and Parquet to Build a Relational Cache
Using Apache Arrow, Calcite, and Parquet to Build a Relational CacheUsing Apache Arrow, Calcite, and Parquet to Build a Relational Cache
Using Apache Arrow, Calcite, and Parquet to Build a Relational Cache
 
Internal Hive
Internal HiveInternal Hive
Internal Hive
 
ORC File - Optimizing Your Big Data
ORC File - Optimizing Your Big DataORC File - Optimizing Your Big Data
ORC File - Optimizing Your Big Data
 
Query Compilation in Impala
Query Compilation in ImpalaQuery Compilation in Impala
Query Compilation in Impala
 
Ozone and HDFS’s evolution
Ozone and HDFS’s evolutionOzone and HDFS’s evolution
Ozone and HDFS’s evolution
 
Hive: Loading Data
Hive: Loading DataHive: Loading Data
Hive: Loading Data
 
Explore your prometheus data in grafana - Promcon 2018
Explore your prometheus data in grafana - Promcon 2018Explore your prometheus data in grafana - Promcon 2018
Explore your prometheus data in grafana - Promcon 2018
 
Apache Arrow - An Overview
Apache Arrow - An OverviewApache Arrow - An Overview
Apache Arrow - An Overview
 
HBase in Practice
HBase in PracticeHBase in Practice
HBase in Practice
 
Interactive real time dashboards on data streams using Kafka, Druid, and Supe...
Interactive real time dashboards on data streams using Kafka, Druid, and Supe...Interactive real time dashboards on data streams using Kafka, Druid, and Supe...
Interactive real time dashboards on data streams using Kafka, Druid, and Supe...
 
NiFi Developer Guide
NiFi Developer GuideNiFi Developer Guide
NiFi Developer Guide
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
 
Comparing Accumulo, Cassandra, and HBase
Comparing Accumulo, Cassandra, and HBaseComparing Accumulo, Cassandra, and HBase
Comparing Accumulo, Cassandra, and HBase
 
Building Decision Tree model with numerical attributes
Building Decision Tree model with numerical attributesBuilding Decision Tree model with numerical attributes
Building Decision Tree model with numerical attributes
 

Andere mochten auch

Cost-based Query Optimization in Hive
Cost-based Query Optimization in HiveCost-based Query Optimization in Hive
Cost-based Query Optimization in Hive
DataWorks Summit
 

Andere mochten auch (20)

The twins that everyone loved too much
The twins that everyone loved too muchThe twins that everyone loved too much
The twins that everyone loved too much
 
Apache Calcite overview
Apache Calcite overviewApache Calcite overview
Apache Calcite overview
 
Cost-based Query Optimization in Hive
Cost-based Query Optimization in HiveCost-based Query Optimization in Hive
Cost-based Query Optimization in Hive
 
How Pony ORM translates Python generators to SQL queries
How Pony ORM translates Python generators to SQL queriesHow Pony ORM translates Python generators to SQL queries
How Pony ORM translates Python generators to SQL queries
 
Hive join optimizations
Hive join optimizationsHive join optimizations
Hive join optimizations
 
Streaming SQL
Streaming SQLStreaming SQL
Streaming SQL
 
Discardable In-Memory Materialized Queries With Hadoop
Discardable In-Memory Materialized Queries With HadoopDiscardable In-Memory Materialized Queries With Hadoop
Discardable In-Memory Materialized Queries With Hadoop
 
What's new in Mondrian 4?
What's new in Mondrian 4?What's new in Mondrian 4?
What's new in Mondrian 4?
 
Optiq: A dynamic data management framework
Optiq: A dynamic data management frameworkOptiq: A dynamic data management framework
Optiq: A dynamic data management framework
 
Why you care about
 relational algebra (even though you didn’t know it)
Why you care about
 relational algebra (even though you didn’t know it)Why you care about
 relational algebra (even though you didn’t know it)
Why you care about
 relational algebra (even though you didn’t know it)
 
Cost-based query optimization in Apache Hive 0.14
Cost-based query optimization in Apache Hive 0.14Cost-based query optimization in Apache Hive 0.14
Cost-based query optimization in Apache Hive 0.14
 
Planning with Polyalgebra: Bringing Together Relational, Complex and Machine ...
Planning with Polyalgebra: Bringing Together Relational, Complex and Machine ...Planning with Polyalgebra: Bringing Together Relational, Complex and Machine ...
Planning with Polyalgebra: Bringing Together Relational, Complex and Machine ...
 
Querying the Internet of Things: Streaming SQL on Kafka/Samza and Storm/Trident
 Querying the Internet of Things: Streaming SQL on Kafka/Samza and Storm/Trident Querying the Internet of Things: Streaming SQL on Kafka/Samza and Storm/Trident
Querying the Internet of Things: Streaming SQL on Kafka/Samza and Storm/Trident
 
SQL on everything, in memory
SQL on everything, in memorySQL on everything, in memory
SQL on everything, in memory
 
Apache Calcite: One planner fits all
Apache Calcite: One planner fits allApache Calcite: One planner fits all
Apache Calcite: One planner fits all
 
Streaming SQL
Streaming SQLStreaming SQL
Streaming SQL
 
Streaming SQL
Streaming SQLStreaming SQL
Streaming SQL
 
Streaming SQL with Apache Calcite
Streaming SQL with Apache CalciteStreaming SQL with Apache Calcite
Streaming SQL with Apache Calcite
 
Using Apache Hive with High Performance
Using Apache Hive with High PerformanceUsing Apache Hive with High Performance
Using Apache Hive with High Performance
 
Spark and Shark: Lightning-Fast Analytics over Hadoop and Hive Data
Spark and Shark: Lightning-Fast Analytics over Hadoop and Hive DataSpark and Shark: Lightning-Fast Analytics over Hadoop and Hive Data
Spark and Shark: Lightning-Fast Analytics over Hadoop and Hive Data
 

Ähnlich wie Cost-based query optimization in Apache Hive 0.14

Stinger hadoop summit june 2013
Stinger hadoop summit june 2013Stinger hadoop summit june 2013
Stinger hadoop summit june 2013
alanfgates
 
ONE FOR ALL! Using Apache Calcite to make SQL smart
ONE FOR ALL! Using Apache Calcite to make SQL smartONE FOR ALL! Using Apache Calcite to make SQL smart
ONE FOR ALL! Using Apache Calcite to make SQL smart
Evans Ye
 

Ähnlich wie Cost-based query optimization in Apache Hive 0.14 (20)

An Overview on Optimization in Apache Hive: Past, Present Future
An Overview on Optimization in Apache Hive: Past, Present FutureAn Overview on Optimization in Apache Hive: Past, Present Future
An Overview on Optimization in Apache Hive: Past, Present Future
 
What's New in Apache Hive 3.0?
What's New in Apache Hive 3.0?What's New in Apache Hive 3.0?
What's New in Apache Hive 3.0?
 
What's New in Apache Hive 3.0 - Tokyo
What's New in Apache Hive 3.0 - TokyoWhat's New in Apache Hive 3.0 - Tokyo
What's New in Apache Hive 3.0 - Tokyo
 
An Overview on Optimization in Apache Hive: Past, Present, Future
An Overview on Optimization in Apache Hive: Past, Present, FutureAn Overview on Optimization in Apache Hive: Past, Present, Future
An Overview on Optimization in Apache Hive: Past, Present, Future
 
Experimentation Platform on Hadoop
Experimentation Platform on HadoopExperimentation Platform on Hadoop
Experimentation Platform on Hadoop
 
eBay Experimentation Platform on Hadoop
eBay Experimentation Platform on HadoopeBay Experimentation Platform on Hadoop
eBay Experimentation Platform on Hadoop
 
Use dependency injection to get Hadoop *out* of your application code
Use dependency injection to get Hadoop *out* of your application codeUse dependency injection to get Hadoop *out* of your application code
Use dependency injection to get Hadoop *out* of your application code
 
SQL Engines for Hadoop - The case for Impala
SQL Engines for Hadoop - The case for ImpalaSQL Engines for Hadoop - The case for Impala
SQL Engines for Hadoop - The case for Impala
 
Data & Analytics - Session 1 - Big Data Analytics
Data & Analytics - Session 1 -  Big Data AnalyticsData & Analytics - Session 1 -  Big Data Analytics
Data & Analytics - Session 1 - Big Data Analytics
 
An In-Depth Look at Putting the Sting in Hive
An In-Depth Look at Putting the Sting in HiveAn In-Depth Look at Putting the Sting in Hive
An In-Depth Look at Putting the Sting in Hive
 
Stinger hadoop summit june 2013
Stinger hadoop summit june 2013Stinger hadoop summit june 2013
Stinger hadoop summit june 2013
 
Hive_p
Hive_pHive_p
Hive_p
 
Fast SQL on Hadoop, really?
Fast SQL on Hadoop, really?Fast SQL on Hadoop, really?
Fast SQL on Hadoop, really?
 
Etl with apache impala by athemaster
Etl with apache impala by athemasterEtl with apache impala by athemaster
Etl with apache impala by athemaster
 
Eliminating the Challenges of Big Data Management Inside Hadoop
Eliminating the Challenges of Big Data Management Inside HadoopEliminating the Challenges of Big Data Management Inside Hadoop
Eliminating the Challenges of Big Data Management Inside Hadoop
 
Eliminating the Challenges of Big Data Management Inside Hadoop
Eliminating the Challenges of Big Data Management Inside HadoopEliminating the Challenges of Big Data Management Inside Hadoop
Eliminating the Challenges of Big Data Management Inside Hadoop
 
Hive 3 a new horizon
Hive 3  a new horizonHive 3  a new horizon
Hive 3 a new horizon
 
ONE FOR ALL! Using Apache Calcite to make SQL smart
ONE FOR ALL! Using Apache Calcite to make SQL smartONE FOR ALL! Using Apache Calcite to make SQL smart
ONE FOR ALL! Using Apache Calcite to make SQL smart
 
Streaming SQL
Streaming SQLStreaming SQL
Streaming SQL
 
Optimizing your Modern Data Architecture - with Attunity, RCG Global Services...
Optimizing your Modern Data Architecture - with Attunity, RCG Global Services...Optimizing your Modern Data Architecture - with Attunity, RCG Global Services...
Optimizing your Modern Data Architecture - with Attunity, RCG Global Services...
 

Mehr von Julian Hyde

Mehr von Julian Hyde (20)

Building a semantic/metrics layer using Calcite
Building a semantic/metrics layer using CalciteBuilding a semantic/metrics layer using Calcite
Building a semantic/metrics layer using Calcite
 
Cubing and Metrics in SQL, oh my!
Cubing and Metrics in SQL, oh my!Cubing and Metrics in SQL, oh my!
Cubing and Metrics in SQL, oh my!
 
Adding measures to Calcite SQL
Adding measures to Calcite SQLAdding measures to Calcite SQL
Adding measures to Calcite SQL
 
Morel, a data-parallel programming language
Morel, a data-parallel programming languageMorel, a data-parallel programming language
Morel, a data-parallel programming language
 
Is there a perfect data-parallel programming language? (Experiments with More...
Is there a perfect data-parallel programming language? (Experiments with More...Is there a perfect data-parallel programming language? (Experiments with More...
Is there a perfect data-parallel programming language? (Experiments with More...
 
Apache Calcite (a tutorial given at BOSS '21)
Apache Calcite (a tutorial given at BOSS '21)Apache Calcite (a tutorial given at BOSS '21)
Apache Calcite (a tutorial given at BOSS '21)
 
The evolution of Apache Calcite and its Community
The evolution of Apache Calcite and its CommunityThe evolution of Apache Calcite and its Community
The evolution of Apache Calcite and its Community
 
What to expect when you're Incubating
What to expect when you're IncubatingWhat to expect when you're Incubating
What to expect when you're Incubating
 
Open Source SQL - beyond parsers: ZetaSQL and Apache Calcite
Open Source SQL - beyond parsers: ZetaSQL and Apache CalciteOpen Source SQL - beyond parsers: ZetaSQL and Apache Calcite
Open Source SQL - beyond parsers: ZetaSQL and Apache Calcite
 
Efficient spatial queries on vanilla databases
Efficient spatial queries on vanilla databasesEfficient spatial queries on vanilla databases
Efficient spatial queries on vanilla databases
 
Smarter Together - Bringing Relational Algebra, Powered by Apache Calcite, in...
Smarter Together - Bringing Relational Algebra, Powered by Apache Calcite, in...Smarter Together - Bringing Relational Algebra, Powered by Apache Calcite, in...
Smarter Together - Bringing Relational Algebra, Powered by Apache Calcite, in...
 
Tactical data engineering
Tactical data engineeringTactical data engineering
Tactical data engineering
 
Don't optimize my queries, organize my data!
Don't optimize my queries, organize my data!Don't optimize my queries, organize my data!
Don't optimize my queries, organize my data!
 
Spatial query on vanilla databases
Spatial query on vanilla databasesSpatial query on vanilla databases
Spatial query on vanilla databases
 
Data all over the place! How SQL and Apache Calcite bring sanity to streaming...
Data all over the place! How SQL and Apache Calcite bring sanity to streaming...Data all over the place! How SQL and Apache Calcite bring sanity to streaming...
Data all over the place! How SQL and Apache Calcite bring sanity to streaming...
 
Apache Calcite: A Foundational Framework for Optimized Query Processing Over ...
Apache Calcite: A Foundational Framework for Optimized Query Processing Over ...Apache Calcite: A Foundational Framework for Optimized Query Processing Over ...
Apache Calcite: A Foundational Framework for Optimized Query Processing Over ...
 
Lazy beats Smart and Fast
Lazy beats Smart and FastLazy beats Smart and Fast
Lazy beats Smart and Fast
 
Don’t optimize my queries, optimize my data!
Don’t optimize my queries, optimize my data!Don’t optimize my queries, optimize my data!
Don’t optimize my queries, optimize my data!
 
Data profiling with Apache Calcite
Data profiling with Apache CalciteData profiling with Apache Calcite
Data profiling with Apache Calcite
 
A smarter Pig: Building a SQL interface to Apache Pig using Apache Calcite
A smarter Pig: Building a SQL interface to Apache Pig using Apache CalciteA smarter Pig: Building a SQL interface to Apache Pig using Apache Calcite
A smarter Pig: Building a SQL interface to Apache Pig using Apache Calcite
 

Kürzlich hochgeladen

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Kürzlich hochgeladen (20)

Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 

Cost-based query optimization in Apache Hive 0.14

  • 1. Page1 © Hortonworks Inc. 2014 Cost-based query optimization in Apache Hive 0.14 Julian Hyde Julian Hyde Seattle September 24th, 2014
  • 2. Page2 © Hortonworks Inc. 2014 About me Julian Hyde Architect at Hortonworks Open source: • Founder & lead, Apache Optiq (query optimization framework) • Founder & lead, Pentaho Mondrian (analysis engine) • Committer, Apache Drill • Contributor, Apache Hive • Contributor, Cascading Lingual (SQL interface to Cascading) Past: • SQLstream (streaming SQL) • Broadbase (data warehouse) • Oracle (SQL kernel development)
  • 3. Page3 © Hortonworks Inc. 2014 Hadoop - A New Data Architecture for New DataAPPLICATIONSDATASYSTEM REPOSITORIES SOURCES Existing Sources (CRM, ERP, Clickstream, Logs) RDBMS EDW MPP Business Analytics Custom Applications Packaged Applications OLTP, ERP, CRM Systems Unstructured documents, emails Clickstream Server logs Sentiment, Web Data Sensor. Machine Data Geolocation New Data Requirements: • Scale • Economics • Flexibility Traditional Data Architecture
  • 4. Page4 © Hortonworks Inc. 2014 © Hortonworks Inc. 2013 Interactive SQL-IN-Hadoop Delivered Stinger Initiative – DELIVERED Next generation SQL based interactive query in Hadoop Speed Improve Hive query performance has increased by 100X to allow for interactive query times (seconds) Scale The only SQL interface to Hadoop designed for queries that scale from TB to PB SQL Support broadest range of SQL semantics for analytic applications running against Hadoop Apache Hive Contribution… an Open Community at its finest 1,672Jira Tickets Closed 145Developers 44Companies ~390,000Lines Of Code Added… (2x) Apache YARN Apache MapReduce 1 ° ° ° ° ° ° ° ° ° ° ° ° ° N HDFS (Hadoop Distributed File System) Apache Tez Apache Hive SQL Business Analytics Custom Apps Stinger Project Stinger Phase 1: • Base Optimizations • SQL Types • SQL Analytic Functions • ORCFile Modern File Format Stinger Phase 2: • SQL Types • SQL Analytic Functions • Advanced Optimizations • Performance Boosts via YARN Stinger Phase 3 • Hive on Apache Tez • Query Service (always on) • Buffer Cache • Cost Based Optimizer (Optiq) 13Months Governance &Integration Security Operations Data Access Data Management HDP 2.1 ORC File Window Functions
  • 5. Page5 © Hortonworks Inc. 2014 Hive – Single tool for all SQL use cases OLTP, ERP, CRM Systems Unstructured documents, emails Clickstream Server logs Sentiment, Web Data Sensor. Machine Data Geolocation Interactive Analytics Batch Reports / Deep Analytics Hive - SQL ETL / ELT
  • 6. Page6 © Hortonworks Inc. 2014 Incremental cutover to cost-based optimization Release Date Remarks Apache Hive 0.12 October 2013 • Rule-based Optimizations • No join reordering • Main optimizations: predicate push- down & partition pruning • Semantic info and operator tree tightly coupled Apache Hive 0.13 April 2014 “Old-style” JOIN & push-down conditions: … FROM t1, t2 WHERE … HDP 2.1 April 2014 Cost-based ordering of joins Apache Hive 0.14 soon Bushy joins, large joins, better operator coverage, better statistics, …
  • 7. Page7 © Hortonworks Inc. 2014 Apache Optiq (incubating)
  • 8. Page8 © Hortonworks Inc. 2014 Apache Optiq Apache incubator project since May, 2014 Query planning framework • Relational algebra, rewrite rules, cost model • Extensible • Usable standalone (JDBC) or embedded Adoption • Lingual – SQL interface to Cascading • Apache Drill • Apache Hive Adapters: Splunk, Spark, MongoDB, JDBC, CSV, JSON, Web tables, In- memory data
  • 9. Page9 © Hortonworks Inc. 2014 Conventional DB architecture
  • 10. Page10 © Hortonworks Inc. 2014 Optiq architecture
  • 11. Page11 © Hortonworks Inc. 2014 MySQL Splunk Expression tree SELECT p.“product_name”, COUNT(*) AS c FROM “splunk”.”splunk” AS s JOIN “mysql”.”products” AS p ON s.”product_id” = p.”product_id” WHERE s.“action” = 'purchase' GROUP BY p.”product_name” ORDER BY c DESC join Key: product_id group Key: product_name Agg: count filter Condition: action = 'purchase' sort Key: c DESC scan scan Table: splunk Table: products
  • 12. Page12 © Hortonworks Inc. 2014 Splunk Expression tree (optimized) SELECT p.“product_name”, COUNT(*) AS c FROM “splunk”.”splunk” AS s JOIN “mysql”.”products” AS p ON s.”product_id” = p.”product_id” WHERE s.“action” = 'purchase' GROUP BY p.”product_name” ORDER BY c DESC join Key: product_id group Key: product_name Agg: count filter Condition: action = 'purchase' sort Key: c DESC scan Table: splunk MySQL scan Table: products
  • 13. Page13 © Hortonworks Inc. 2014 Optiq – APIs and SPIs Cost, statistics RelOptCost RelOptCostFactory RelMetadataProvider • RelMdColumnUniquensss • RelMdDistinctRowCount • RelMdSelectivity SQL parser SqlNode SqlParser SqlValidator Transformation rules RelOptRule • MergeFilterRule • PushAggregateThroughUni onRule • RemoveCorrelationForScal arProjectRule • 100+ more Unification (materialized view) Column trimming Relational algebra RelNode (operator) • TableScan • Filter • Project • Union • Aggregate • … RelDataType (type) RexNode (expression) RelTrait (physical property) • RelConvention (calling-convention) • RelCollation (sortedness) • TBD (bucketedness/distribution) JDBC driver Metadata Schema Table Function • TableFunction • TableMacro
  • 14. Page14 © Hortonworks Inc. 2014 Under development in Optiq - materialized views Query: SELECT x, SUM(y) FROM t GROUP BY x In-memory materialized queries Tables on disk http://hortonworks.com/blog/dmmq/
  • 15. Page15 © Hortonworks Inc. 2014 Now… back to Hive
  • 16. Page16 © Hortonworks Inc. 2014 CBO in Hive Why cost-based optimization? Ease of Use – Join Reordering View Chaining Ad hoc queries involving multiple views Enables BI Tools as front ends to Hive More efficient & maintainable query preparation process Laying the groundwork for deeper optimizations, e.g. materialized views Page 16
  • 17. Page17 © Hortonworks Inc. 2014 Query preparation – Hive 0.13 SQL parser Semantic analyzer Logical Optimizer Physical Optimizer Abstract Syntax Tree (AST) Hive SQL Annotated AST Plan Tez Tuned Plan
  • 18. Page18 © Hortonworks Inc. 2014 Query preparation – full CBO SQL parser Semantic analyzer Translate to algebra Physical Optimizer Abstract Syntax Tree (AST) Hive SQL Tez Tuned Plan Optiq optimizer RelNode Annotated AST
  • 19. Page19 © Hortonworks Inc. 2014 Query preparation – Hive 0.14 SQL parser Semantic analyzer Logical Optimizer Physical Optimizer Hive SQL AST with optimized join-ordering Tez Tuned Plan Translate to algebra Optiq optimizer
  • 20. Page20 © Hortonworks Inc. 2014 © Hortonworks Inc. 2013 Query Execution – The basics Page 20 SELECT R1.x FROM R1 JOIN R2 ON R1.x = R2.x JOIN R3 on R1.x = R3.x AND R2.x = R3.x WHERE R1.z > 10; p s   R1 R2 R3 TS [R1] TS [R2] RS RS Shuffle Join TS [R3] Map Join Filter FS
  • 21. Page21 © Hortonworks Inc. 2014 Optiq Planner Process Hive Plan Planner RelNode GraphRelNode Converter RexNode Converter Hive Op  RelNode Hive Expr  RexNode • Node for each node in Input Plan • Each node is a Set of alternate Sub Plans • Set further divided into Subsets: based on traits like sortedness 1. Plan Graph • Rule: specifies a Operator sub-graph to match and logic to generate equivalent ‘better’ sub-graph. • We only have Join Reordering Rules. 2. Rules • RelNodes have Cost (& Cumulative Cost) • We only use Cardinality for Cost. 3. Cost Model - Used to Plugin Schema, Cost Formulas: Selectivity, NDV calculations etc. - We only added Selectivity and NDV formulas; Schema is only available at the Node level 4. Metadata Providers Rule Match Queue - Add Rule matches to Queue - Apply Rule match transformations to Plan Graph - Iterate for fixed iterations or until Cost doesn’t change. - Match importance based on Cost of RelNode and height. Best RelNode Graph AST Converter Revised AST Logical Plan Physical traits: Table Part./Buckets; RedSink Ops removed
  • 22. Page22 © Hortonworks Inc. 2014 Star schema Sales InventoryTime Product Customer Warehouse Key Fact table Dimension table Many-to-one relationship
  • 23. Page23 © Hortonworks Inc. 2014 Query combining two stars SELECT product.id, sum(sales.units), sum(inventory.on_hand) FROM sales ON … JOIN customer ON … JOIN time ON … JOIN product ON … JOIN inventory ON … JOIN warehouse ON … WHERE time.year = 2014 AND time.quarter = ‘Q1’ AND product.color = ‘Red’ AND warehouse.state = ‘WA’ GROUP BY … Sales InventoryTime Product Customer Warehouse
  • 24. Page24 © Hortonworks Inc. 2014 Left-deep tree Initial tree is “left-deep” No join node is the right child of its parent Join-ordering algorithm chooses what order to join tables – does not re-shape the tree Typical plan: • Start with largest table at bottom left • Join tables with more selective conditions first Sales Customer Time Product Inventory Warehouse
  • 25. Page25 © Hortonworks Inc. 2014 Bushy tree No restrictions on where join nodes can occur “Bushes” consist of fact tables (Sales and Inventory) surrounded by many-to-one related dimension tables Dimension tables have a filtering effect This tree produces the same result as previous plan but is more efficient Sales Customer Time Product Inventory Warehouse
  • 26. Page26 © Hortonworks Inc. 2014 Two approaches to join optimization Algorithm #1 “exhaustive search” Apply 3 transformation rules exhaustively: • SwapJoinRule: A join B  B join A • PushJoinThroughJoinRule: (A join B) join C  (A join C) join B • CommutativeJoinRule: (A join B) join C  A join (B join C) Finds every possible plan, but not practical for more than ~8 joins Algorithm #2 “greedy” Build a graph iteratively Use heuristics to choose the “best” node to add next Applying them to Hive We can use both algorithms – and we do! Both are sensitive to bad statistics – e.g. poor estimation of intermediate result set sizes
  • 27. Page27 © Hortonworks Inc. 2014 Statistics Feeding the beast CBO disabled if your tables don’t have statistics • No longer require statistics on all columns, just join columns Better optimizations need ever-better statistics… so, statistics are getting better Kinds of statistics Raw statistics on stored data: row counts, number-of-distinct-values (NDV) Statistics on intermediate operators, computed using selectivity estimates • Much improved selectivity estimates this release, based on NDVs • Planned improvements to raw statistics (e.g. histograms, unique keys, sort order) will help • Materialized views Run-time statistics • Example 1: 90% of the rows in this join have the same key  use skew join • Example 2: Only 10 distinct values of GROUP BY key  auto-reduce parallelism
  • 28. Page28 © Hortonworks Inc. 2014 Stored statistics – recent improvements ANALYZE Clean up command syntax Faster computation Table vs partition statistics All statistics now stored per partition Statistics retrieval Faster retrieval Merge partition statistics Extrapolate for missing statistics Extrapolation SQL: SELECT productId, COUNT(*) FROM Sales WHERE year = 2014 GROUP BY productId Required statistic: NDV(productId) Statistics available 2013 Q1 2013 Q2 2013 Q3 2013 Q4 2014 Q1 2014 Q2 2014 Q3 2014 Q4 Used in query Extrapolate {Q1, Q2, Q3} stats for Q4
  • 29. Page29 © Hortonworks Inc. 2014 Dynamic partition pruning Consider a query with a partitioned fact table, filters on the dimension table: SELECT … FROM Sales JOIN Time ON Sales.time_id = Time.time_id WHERE time.year = 2014 AND time.quarter IN (‘Q1’, ‘Q2’) At execute time, DAG figures out which partitions could possibly match, and cancels scans of the others 2013 Q1 2013 Q2 2013 Q3 2013 Q4 2014 Q1 2014 Q2 2014 Q3 2014 Q4 Time
  • 30. Page30 © Hortonworks Inc. 2014 Summary Join-ordering: (exhaustive & heuristic), scalability, bushy joins Statistics – faster, better, extrapolate if stats missing Very few operators that CBO can’t handle – TABLESAMPLE, SCRIPT, multi-INSERT Dynamic partition pruning Auto-reduce parallelism Page 30
  • 31. Page31 © Hortonworks Inc. 2014 Show me the numbers…
  • 32. Page32 © Hortonworks Inc. 2014 TPC-DS (30TB) Q17 Joins Store Sales, Store Returns and Catalog Sales fact tables. Each of the fact tables are independently restricted by time. Analysis at Item and Store grain, so these dimensions are also joined in. As specified Query starts by joining the 3 Fact tables. SELECT i_item_id ,i_item_desc ,s_state ,count(ss_quantity) as store_sales_quantitycount ,…. FROM store_sales ss ,store_returns sr, catalog_sales cs, date_dim d1, date_dim d2, date_dim d3, store s, item I WHERE d1.d_quarter_name = '2000Q1’ AND d1.d_date_sk = ss.ss_sold_date_sk AND i.i_item_sk = ss.ss_item_sk AND … GROUP BY i_item_id ,i_item_desc, ,s_state ORDER BY i_item_id ,i_item_desc, s_state LIMIT 100; CBO Elapsed (s) Intemediate data (GB) Off 10,683 5,017 On 1,284 275
  • 33. Page33 © Hortonworks Inc. 2014 TPC-DS (200G) queries Query Hive 14 CBO off Hive 14 CBO on Gain Q15 84 44 91% Q22 123 99 24% Q29 1677 48 3,394% Q40 118 29 307% Q51 276 80 245% Q80 842 70 1,103% Q82 278 23 1,109% Q87 275 51 439% Q92 511 80 539% Q93 160 69 132% Q97 483 79 511%
  • 34. Page34 © Hortonworks Inc. 2014 Stinger.next • SQL compliance: interval data type, non-equi joins, set operators, more sub-queries • Transactions: COMMIT, savepoint, rollback) • LLAP • Materialized views • In-memory • Automatic or manual http://hortonworks.com/blog/stinger-next-enterprise-sql-hadoop-scale-apache-hive/
  • 35. Page35 © Hortonworks Inc. 2014 Thank you! @julianhyde http://hive.apache.org/ http://optiq.incubator.apache.org/