提示

適用於:檢查標記是的磚的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關鍵;

傾斜的暗示

(三角洲湖)傾斜連接優化的審理情況和有關信息。提示。