一、语法
/*+ hint [ , … ] */
二、分区提示类型
| 子句/关键字 | 说明 |
| COALESCE | 减少分区数量 |
| REPARTITION | 使用指定表达式重新分区 |
| REPARTITION_BY_RANGE | 使用范围分区 |
| REBALANCE | 重新平衡输出分区大小 |
三、JOIN 提示类型
| 子句/关键字 | 说明 |
| BROADCAST/BROADCASTJOIN/MAPJOIN | 建议使用广播 JOIN |
| MERGE/SHUFFLE_MERGE/MERGEJOIN | 建议使用排序合并 JOIN |
| SHUFFLE_HASH | 建议使用 Shuffle Hash JOIN |
| SHUFFLE_REPLICATE_NL | 建议使用 Shuffle-and-Replicate 嵌套循环 JOIN |
四、示例
— 创建测试表CREATE EXTERNAL TABLE hint_t1 (key INT, val STRING) USING PARQUET LOCATION 'cosn://<your_cos_bucket>/test_hints/hint_t1';CREATE EXTERNAL TABLE hint_t2 (key INT, val STRING) USING PARQUET LOCATION 'cosn://<your_cos_bucket>/test_hints/hint_t2';INSERT INTO hint_t1 VALUES (1,'a'),(2,'b');INSERT INTO hint_t2 VALUES (1,'x'),(3,'y');– 分区合并 COALESCESELECT /*+ COALESCE(1) */ * FROM hint_t1;– 强制重分区(必触发 shuffle)SELECT /*+ REPARTITION(2) */ * FROM hint_t1;– 强制广播 JoinSELECT /*+ BROADCAST(hint_t1) */ * FROM hint_t1 INNER JOIN hint_t2 ON hint_t1.key = hint_t2.key;– 强制 Sort Merge JoinSELECT /*+ SHUFFLE_MERGE(hint_t1) */ * FROM hint_t1 INNER JOIN hint_t2 ON hint_t1.key = hint_t2.key;– 强制 Shuffle Hash JoinSELECT /*+ SHUFFLE_HASH(hint_t1) */ * FROM hint_t1 INNER JOIN hint_t2 ON hint_t1.key = hint_t2.key;