druid native query execution-2
This commit is contained in:
parent
c6fab679e0
commit
fee1d659da
|
@ -42,3 +42,11 @@ Druid的查询执行方法因查询的 [数据源类型](#数据源类型) 而
|
||||||
有一个例外:如果外部查询和所有子查询都是 [groupBy](groupby.md) 类型,则可以以流式方式处理子查询结果,并且 `druid.server.http.maxSubQueryRows` 限制不适用。
|
有一个例外:如果外部查询和所有子查询都是 [groupBy](groupby.md) 类型,则可以以流式方式处理子查询结果,并且 `druid.server.http.maxSubQueryRows` 限制不适用。
|
||||||
|
|
||||||
#### `join`
|
#### `join`
|
||||||
|
|
||||||
|
使用广播hash-join方法处理 [联接数据源](datasource.md#join)。
|
||||||
|
|
||||||
|
1. Broker执行输入join的任何子查询,如 [`query`](#query)部分所述,并用inline数据源替换它们。
|
||||||
|
2. Broker将连接树(如果存在)展平为"基本"数据源(最左下角的一个)和其他叶数据源(其余部分)。
|
||||||
|
3. 使用与基本数据源相同结构的查询执行将单独继续执行。如果基数据源是一个表,则像往常一样根据"interval"修剪段,并通过将查询并行地转发到所有相关的数据服务器,在集群上执行查询。如果基数据源是Lookup或Join数据源(包括将内联子查询作为结果的内联数据源),则查询将在Broker本身上执行。基查询不能是Union,因为当前不支持Union作为Join的输入。
|
||||||
|
4. 在开始处理基数据源之前,将执行查询的服务器首先检查所有非基叶数据源,以确定是否需要为即将到来的哈希联接生成新的哈希表。目前,查找不需要构建新的哈希表(因为它们是预加载的),但内联数据源需要。
|
||||||
|
5. 查询执行再次使用基本数据源将自己使用的相同结构继续执行,但有一个附加条件:在处理基本数据源时,Druid服务器将使用从其他连接输入构建的哈希表来逐行生成联接结果,查询引擎将对联接的行而不是基本行进行操作。
|
Loading…
Reference in New Issue