学习 Spark 2(十五):Hints

Spark 2.2 版本之后,提供了 hint 功能,用于标记查询从而提示查询优化器。

语法

SQL 语法说明:

hints:  
  : /*+ hint[, hint, ...] */
  hint:
    : hintName [(expression[, expression, ...])]

可以在 SELECT 语句中的 /*+ ... */
注释中添加 hint。

也可以通过调用 Dataset 的 hint(name: String, parameters: Any*): Dataset[T]
方法,添加 hint。
举:chestnut::

select /*+ broadcast(b) */ ...  
from a  
join b  
...

等价于

a.join(b.hint("broadcast"))

Hists

广播 Hints

Spark 2.2+ 版本

SELECT /*+ MAPJOIN(b) */ …​
SELECT /*+ BROADCASTJOIN(b) */ …​
SELECT /*+ BROADCAST(b) */ …​

COALESCE 和 REPARTITION Hints

Spark 2.4 版本

SELECT /*+ COALESCE(5) */ …​
SELECT /*+ REPARTITION(3) */ …​

参考