Comments (2)
let sql = concat!(
"SELECT a, b, d ",
"FROM t1 JOIN t2 ON a = c ",
"ORDER BY b ASC ",
"LIMIT 3"
);
// +-----------------+
// |global_limit_exec|
// +--------+--------+
// |
// +----v----+
// |sort_exec|
// +----+----+
// |
// +-------v-------+
// |projection_exec|
// +-------+-------+
// |
// +----------v----------+
// |coalesce_batches_exec|
// +----------+----------+
// |
// +------v-------+
// |hash_join_exec|
// +------+-------+
// |
// +--------v---------+
// | |
// +-----v-----+ +-----v-----+
// |memory_exec| |memory_exec|
// +-----------+ +-----------+
{
"execution_plan":"global_limit_exec",
"input":{
"execution_plan":"sort_exec",
"input":{
"execution_plan":"projection_exec",
"expr":[
[
{
"physical_expr":"column",
"name":"a"
},
"a"
],
[
{
"physical_expr":"column",
"name":"b"
},
"b"
],
[
{
"physical_expr":"column",
"name":"d"
},
"d"
]
],
"schema":{
"fields":[
{
"name":"a",
"data_type":"Utf8",
"nullable":false,
"dict_id":0,
"dict_is_ordered":false
},
{
"name":"b",
"data_type":"Int32",
"nullable":false,
"dict_id":0,
"dict_is_ordered":false
},
{
"name":"d",
"data_type":"Int32",
"nullable":false,
"dict_id":0,
"dict_is_ordered":false
}
],
"metadata":{
}
},
"input":{
"execution_plan":"coalesce_batches_exec",
"input":{
"execution_plan":"hash_join_exec",
"left":{
"execution_plan":"memory_exec",
"schema":{
"fields":[
{
"name":"a",
"data_type":"Utf8",
"nullable":false,
"dict_id":0,
"dict_is_ordered":false
},
{
"name":"b",
"data_type":"Int32",
"nullable":false,
"dict_id":0,
"dict_is_ordered":false
}
],
"metadata":{
}
},
"projection":[
0,
1
]
},
"right":{
"execution_plan":"memory_exec",
"schema":{
"fields":[
{
"name":"c",
"data_type":"Utf8",
"nullable":false,
"dict_id":0,
"dict_is_ordered":false
},
{
"name":"d",
"data_type":"Int32",
"nullable":false,
"dict_id":0,
"dict_is_ordered":false
}
],
"metadata":{
}
},
"projection":[
0,
1
]
},
"on":[
[
"a",
"c"
]
],
"join_type":"Inner",
"schema":{
"fields":[
{
"name":"a",
"data_type":"Utf8",
"nullable":false,
"dict_id":0,
"dict_is_ordered":false
},
{
"name":"b",
"data_type":"Int32",
"nullable":false,
"dict_id":0,
"dict_is_ordered":false
},
{
"name":"c",
"data_type":"Utf8",
"nullable":false,
"dict_id":0,
"dict_is_ordered":false
},
{
"name":"d",
"data_type":"Int32",
"nullable":false,
"dict_id":0,
"dict_is_ordered":false
}
],
"metadata":{
}
}
},
"target_batch_size":16384
}
},
"expr":[
{
"expr":{
"physical_expr":"column",
"name":"b"
},
"options":{
"descending":false,
"nulls_first":true
}
}
],
"concurrency":8
},
"limit":3,
"concurrency":8
}
from flock.
Lambda 2:
// +-----------------+
// |global_limit_exec|
// +--------+--------+
// |
// +----v----+
// |sort_exec|
// +----+----+
// |
// +-------v-------+
// |projection_exec|
// +-------+-------+
// |
// +----------v----------+
// |coalesce_batches_exec|
// +----------+----------+
Lambda 1:
// +------v-------+
// |hash_join_exec|
// +------+-------+
// |
// +--------v---------+
// | |
// +-----v-----+ +-----v-----+
// |memory_exec| |memory_exec|
// +-----------+ +-----------+
Lambda 0 (source):
// +-------v--------+
// |repartition_exec|
// +-------+--------+
// |
// +---------v---------+
// | |
// +-----v-----+ +-----v-----+
// |stream_exec| |stream_exec|
// +-----------+ +-----------+
coalesce_batches_exec
is used to merge small record batches into a big one for vectorized processing.
repartition_exec
is used to partition batches so that they can be sent to the next stage through payload.
from flock.
Related Issues (20)
- Yahoo Streaming Benchmarks
- data sink to aws sqs
- Baseline simulation
- Support Sync Invocation Option HOT 2
- Optimization HOT 3
- Q12 HOT 1
- [Improvement] Session Window
- Refactor!: Distributed Query Processing HOT 5
- Add ARM as a deployment option
- Flock UDF: ML Inference on ARM
- Streaming Warehouse: Streaming + OLAP
- Flock: A Hybrid FaaS and BaaS Streaming Query Engine
- Github Action: build flock release using cron jobs
- Distributed mode: nexmark q4 and ysb HOT 3
- state store: partition could be empty after group by
- The Adaptive Query Execution: Dynamically coalescing shuffle partitions
- Fancy consistent hashing: counterclockwise selection
- Is the discord server active?
- Back to Work
- use of illumos project phoenix logo HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from flock.