提示

适用于:检查标记是的砖的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_HASHSHUFFLE_REPLICATE_NL。当双方指定的广播提示或SHUFFLE_HASH提示,砖SQL选择构建基于连接类型和大小的关系。从一个给定的策略可能不支持所有的连接类型,砖SQL是不能保证使用连接策略建议的提示。

加入提示类型

  • 广播

    使用广播加入。连接的提示是广播不管autoBroadcastJoinThreshold。如果双方的加入有广播提示,规模较小的广播(基于统计数据)。的别名广播BROADCASTJOINMAPJOIN

  • 合并

    使用随机排序合并连接。的别名合并SHUFFLE_MERGEMERGEJOIN

  • SHUFFLE_HASH

    使用随机散列连接。如果双方有洗牌散列提示,砖SQL选择较小(基于统计)构建。

  • SHUFFLE_REPLICATE_NL

    使用shuffle-and-replicate嵌套循环联接。

例子

——连接提示播放连接>选择* / / * +广播(t1)*t1内心的加入t2t1关键=t2关键;>选择* / / * + BROADCASTJOIN (t1)*t1加入t2t1关键=t2关键;>选择* / / * + MAPJOIN (t2)*t1正确的加入t2t1关键=t2关键;——加入提示洗牌排序合并连接>选择* / / * + SHUFFLE_MERGE (t1)*t1内心的加入t2t1关键=t2关键;>选择* / / * + MERGEJOIN (t2)*t1内心的加入t2t1关键=t2关键;>选择* / / * +合并(t1)*t1内心的加入t2t1关键=t2关键;——随机散列连接的连接提示>选择* / / * + SHUFFLE_HASH (t1)*t1内心的加入t2t1关键=t2关键;——加入提示shuffle-and-replicate嵌套循环联接>选择* / / * + SHUFFLE_REPLICATE_NL (t1)*t1内心的加入t2t1关键=t2关键;——当双方指定不同的连接策略提示的加入,砖SQL——重视广播提示的提示在SHUFFLE_HASH提示合并——在SHUFFLE_REPLICATE_NL提示。——砖SQL将在以下示例发出警告——org.apache.spark.sql.catalyst.analysis。HintErrorLogger:提示(策略=合并)——是被另一个提示,不会生效。选择/ * +广播(t1)、合并(t1, t2) * /*t1内心的加入t2t1关键=t2关键;

倾斜的暗示

(三角洲湖)倾斜连接优化的审理情况和有关信息。提示。