本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
加入提示
联接提示建议查询执行的联接策略。语法、参数和一些示例来自《Apache Spark SQL 参考
广播
建议 AWS Clean Rooms 使用广播加入。无论 autoBroadcastJoin阈值如何,带有提示的加入方都会被广播。如果联接的两边都有广播提示,则将广播大小较小的那个(基于统计数据)。
别名:广播加入、MAPJOIN
参数:表标识符(可选)
示例:
-- Broadcast a specific table SELECT /*+ BROADCAST(students) */ e.name, s.course FROM employees e JOIN students s ON e.id = s.id; -- Broadcast multiple tables SELECT /*+ BROADCASTJOIN(s, d) */ * FROM employees e JOIN students s ON e.id = s.id JOIN departments d ON e.dept_id = d.id;
MERGE
建议 AWS Clean Rooms 使用随机排序合并联接。
别名:SHUFFLE_MERGE、MERGEJOIN
参数:表标识符(可选)
示例:
-- Use merge join for a specific table SELECT /*+ MERGE(employees) */ * FROM employees e JOIN students s ON e.id = s.id; -- Use merge join for multiple tables SELECT /*+ MERGEJOIN(e, s, d) */ * FROM employees e JOIN students s ON e.id = s.id JOIN departments d ON e.dept_id = d.id;
SHUFF_HASH
建议 AWS Clean Rooms 使用 shuffle 哈希联接。如果双方都有 shuffle 哈希提示,则查询优化器会选择较小的一方(基于统计数据)作为构建方。
参数:表标识符(可选)
示例:
-- Use shuffle hash join SELECT /*+ SHUFFLE_HASH(students) */ * FROM employees e JOIN students s ON e.id = s.id;
SHUFFLE_REPLICATE_NL
建议 AWS Clean Rooms 使用 shuffle-and-replicate嵌套循环联接。
参数:表标识符(可选)
示例:
-- Use shuffle-replicate nested loop join SELECT /*+ SHUFFLE_REPLICATE_NL(students) */ * FROM employees e JOIN students s ON e.id = s.id;
Spark SQL 中的故障排除提示
下表显示了在 SparkSQL 中未应用提示的常见场景。有关更多信息,请参阅 注意事项和限制。
| 使用场景 | 示例查询 |
|---|---|
| 未找到表格引用 |
|
| 表未参与联接操作 |
|
| 嵌套子查询中的表引用 |
|
| 列名而不是表引用 |
|
| 没有必填参数的提示 |
|
| 基表名而不是表别名 |
|