高级特性

仅计划执行模式

师成师成· 更新于 2026-09-29· 阅读 6 分钟· 0 次阅读

登录后可跨设备保存划线和私人笔记登录

仅计划执行模式当前仅支持 Spark 和 Flink 引擎。

通过配置 kyuubi.operation.plan.only.mode 参数,其取值可以为 parse、analyze、optimize、optimize_with_stats、physical、execution 或 none。当值为 none 时,表示语句将被完整执行;否则只生成执行计划而不执行查询。不同引擎当前支持的模式不同:Spark 引擎支持所有模式,Flink 引擎支持 parse、physical 和 execution,其他引擎目前不支持仅计划模式。该参数支持应用级和会话级设置,使用方式如下。

应用级参数设置

在建立 JDBC 连接时,可以向 URL 中添加参数,参数为 kyuubi.operation.plan.only.mode=parse/analyze/optimize。JDBC URL 格式如下:

jdbc:hive2://<host>:<port>/<dbName>;<sessionVars>?kyuubi.operation.plan.only.mode=parse/analyze/optimize/optimize_with_stats/physical/execution/none;<kyuubiConfs>#<[spark|hive]Vars>

其他参数的详细信息请参阅 hive_jdbc 文档。

示例:

使用 beeline 工具连接本地服务,Shell 命令为:

beeline -u 'jdbc:hive2://0.0.0.0:10009/default?kyuubi.operation.plan.only.mode=parse' -n {user_name}

运行以下 SQL:

SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.id

结果如下:

# SQL:
0: jdbc:hive2://0.0.0.0:10009/default> SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.id;

#Result:
+----------------------------------------------------+
|                        plan                        |
+----------------------------------------------------+
| 'Project [*]
+- 'Join LeftOuter, ('t1.id = 't2.id)
   :- 'UnresolvedRelation [t1], [], false
   +- 'UnresolvedRelation [t2], [], false
 |
+----------------------------------------------------+
1 row selected (3.008 seconds)
0: jdbc:hive2://0.0.0.0:10009/default>

会话级参数设置

也可以在建立连接之后,通过执行 set 命令来设置 kyuubi.operation.plan.only.mode 参数。

beeline -u 'jdbc:hive2://0.0.0.0:10009/default' -n {user_name}

执行以下 SQL:

set kyuubi.operation.plan.only.mode=parse;
SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.id

结果如下:

#set command:
0: jdbc:hive2://0.0.0.0:10009/default> set kyuubi.operation.plan.only.mode=parse;

#set command result:
+----------------------------------+--------+
|               key                | value  |
+----------------------------------+--------+
| kyuubi.operation.plan.only.mode  | parse  |
+----------------------------------+--------+
1 row selected (0.568 seconds)

#execute SQL:
0: jdbc:hive2://0.0.0.0:10009/default> SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.id;

# SQL result:
+----------------------------------------------------+
|                        plan                        |
+----------------------------------------------------+
| 'Project [*]
+- 'Join LeftOuter, ('t1.id = 't2.id)
   :- 'UnresolvedRelation [t1], [], false
   +- 'UnresolvedRelation [t2], [], false
 |
+----------------------------------------------------+
1 row selected (0.404 seconds)
0: jdbc:hive2://0.0.0.0:10009/default>

评论

登录后参与评论

正在加载评论…