提示
适用于:砖的SQL砖运行时
提出具体的方法生成一个执行计划。
分区提示
分区提示让你建议一个砖应该遵循的划分策略。合并
,重新分区
,REPARTITION_BY_RANGE
提示和支持是等价的合并
,重新分区
,repartitionByRange
分别为数据集的api。这些提示给你一种优化性能和控制输出文件的数量。当多个分区提示指定,多个节点插入到逻辑的计划,但由优化器选择最左边的暗示。
分区提示类型
合并
减少分区指定数量的分区。需要分区号作为参数。
重新分区
重新分配到指定数量的分区使用指定的分区表达式。需要分区号,列名或作为参数。
REPARTITION_BY_RANGE
重新分配到指定数量的分区使用指定的分区表达式。需要列名称和一个可选的分区号作为参数。
平衡
的
平衡
提示可以用来调整查询结果输出分区,所以每个分区都是一个合理的大小(不太小,不太大)。它可以列名作为参数,全力分区这些列的查询结果。这是一个最优:如果有倾斜,火花将把倾斜的分区,这些分区不是太大。这个暗示是非常有用的,当你需要写这个查询的结果表,以避免过小/大文件。如果没有启用AQE这个提示是忽略。
例子
>选择* / / * +合并(3)*从t;>选择/ * +重新分区(3)* /*从t;>选择* / / * +重新分区(c)*从t;>选择/ * +重新分区(3 c) * /*从t;>选择* / / * + REPARTITION_BY_RANGE (c)*从t;>选择/ * + REPARTITION_BY_RANGE (3 c) * /*从t;>选择/ * +平衡* /*从t;>选择* / / * +平衡(c)*从t;——多个分区提示>解释扩展选择/ * +重新分配(100),合并(500),REPARTITION_BY_RANGE (3 c) * /*从t;= =解析逻辑计划= =“UnresolvedHint重新分区,[100]+ - - - - - - 'UnresolvedHint合并,(500年]+ -“UnresolvedHint REPARTITION_BY_RANGE, [3》c]+ -”项目(*)+ - - - - - - 'UnresolvedRelation(t]= =分析了逻辑计划= =的名字:字符串,c:int重新分区One hundred.,真正的+ -重新分区500年,假+ -RepartitionByExpression(c#30.ASC零位第一个),3+ -项目(的名字#29日,c#30.]+ -SubqueryAliasspark_catalog。默认的。t+ -关系(的名字#29日,c#30.]拼花= =优化逻辑计划= =重新分区One hundred.,真正的+ -关系(的名字#29日,c#30.]拼花= =物理计划= =交换RoundRobinPartitioning(One hundred.),假,(id= #121年]+ -*(1)ColumnarToRow+ -FileScan拼花默认的。t(的名字#29日,c#30.]批处理:真正的,DataFilters:[],格式:拼花,位置:CatalogFileIndex(文件:/火花/火花- - - - - -仓库/t),PartitionFilters:[],PushedFilters:[],ReadSchema:结构体<的名字:字符串>
加入提示
加入提示让你建议加入策略砖SQL应该使用。当双方指定不同的连接策略提示的加入,砖SQL将按照以下顺序提示:广播
在合并
在SHUFFLE_HASH
在SHUFFLE_REPLICATE_NL
。当双方指定的广播
提示或SHUFFLE_HASH
提示,砖SQL选择构建基于连接类型和大小的关系。从一个给定的策略可能不支持所有的连接类型,砖SQL是不能保证使用连接策略建议的提示。
加入提示类型
广播
使用广播加入。连接的提示是广播不管
autoBroadcastJoinThreshold
。如果双方的加入有广播提示,规模较小的广播(基于统计数据)。的别名广播
是BROADCASTJOIN
和MAPJOIN
。合并
使用随机排序合并连接。的别名
合并
是SHUFFLE_MERGE
和MERGEJOIN
。SHUFFLE_HASH
使用随机散列连接。如果双方有洗牌散列提示,砖SQL选择较小(基于统计)构建。
SHUFFLE_REPLICATE_NL
使用shuffle-and-replicate嵌套循环联接。
例子
——连接提示播放连接>选择* / / * +广播(t1)*从t1内心的加入t2在t1。关键=t2。关键;>选择* / / * + BROADCASTJOIN (t1)*从t1左加入t2在t1。关键=t2。关键;>选择* / / * + MAPJOIN (t2)*从t1正确的加入t2在t1。关键=t2。关键;——加入提示洗牌排序合并连接>选择* / / * + SHUFFLE_MERGE (t1)*从t1内心的加入t2在t1。关键=t2。关键;>选择* / / * + MERGEJOIN (t2)*从t1内心的加入t2在t1。关键=t2。关键;>选择* / / * +合并(t1)*从t1内心的加入t2在t1。关键=t2。关键;——随机散列连接的连接提示>选择* / / * + SHUFFLE_HASH (t1)*从t1内心的加入t2在t1。关键=t2。关键;——加入提示shuffle-and-replicate嵌套循环联接>选择* / / * + SHUFFLE_REPLICATE_NL (t1)*从t1内心的加入t2在t1。关键=t2。关键;——当双方指定不同的连接策略提示的加入,砖SQL——重视广播提示的提示在SHUFFLE_HASH提示合并——在SHUFFLE_REPLICATE_NL提示。——砖SQL将在以下示例发出警告——org.apache.spark.sql.catalyst.analysis。HintErrorLogger:提示(策略=合并)——是被另一个提示,不会生效。选择/ * +广播(t1)、合并(t1, t2) * /*从t1内心的加入t2在t1。关键=t2。关键;
倾斜的暗示
(三角洲湖)倾斜连接优化的审理情况和有关信息。斜
提示。