本文介绍如何关闭查询加速 MCQA 1.0(交互模式),使后续 SQL 使用普通离线模式。请按实际使用的客户端完成修改,并重新创建连接或重启客户端。
PyODPS
使用原生 SQL API
将交互式 API 替换为普通 SQL API:
execute_sql_interactive(sql)改为execute_sql(sql)。run_sql_interactive(sql)改为run_sql(sql)。
instance = odps.execute_sql(sql)修改后,后续 SQL 调用使用普通离线提交入口。
使用 SQLAlchemy
将连接 URL 中的 interactive_mode=true 改为:
interactive_mode=false也可以删除该参数,默认值为 false。如果在 connect_args 中另外设置了 use_sqa=True,也应移除或改为 False。修改后释放已有连接,并重新创建 Engine 或连接池。
使用 DBAPI
将连接参数 use_sqa 改为 Python 布尔值 False:
from odps import dbapi
conn = dbapi.connect(odps=odps, use_sqa=False)也可以删除 use_sqa=True,默认值为 False。请使用布尔值 False,不要使用字符串 "false"。修改后重新建立 Connection。
Java SDK
使用 SQLExecutor
显式设置执行模式为 ExecuteMode.OFFLINE:
SQLExecutor executor = new SQLExecutorBuilder()
.odps(odps)
.executeMode(ExecuteMode.OFFLINE)
.build();使用 SQLExecutorPool
创建连接池时,同样显式设置 OFFLINE:
SQLExecutorPool pool = new SQLExecutorPoolBuilder()
.odps(odps)
.executeMode(ExecuteMode.OFFLINE)
.build();这两类 Builder 默认使用 INTERACTIVE,不能只删除 executeMode 配置。
修改后重新创建 Executor 或 ExecutorPool。
如果应用已经通过 SQLTask.run(odps, sql) 提交普通 SQL,则无需额外关闭 MCQA 1.0。
JDBC
根据应用使用的配置方式,关闭交互模式。
使用连接 URL
将 interactiveMode=true 改为 interactiveMode=false:
jdbc:odps:<endpoint>?project=<project>&interactiveMode=false使用 Properties
在已有连接 Properties 中设置:
props.setProperty("interactive_mode", "false");也可以删除对应的开启参数,默认关闭交互模式。若同时使用 URL、Properties 或 odps_config 引用的配置文件,应一并检查其中的交互模式设置,避免旧值覆盖。
修改后关闭已有 Connection,并重新建立连接;使用连接池的应用应重建连接池。
odpscmd
修改客户端安装目录下的 conf/odps_config.ini,将交互模式配置设为:
enable_interactive_mode=false也可以删除 enable_interactive_mode=true,默认不开启交互模式。
保存配置后,退出并重新启动 odpscmd。如果启动脚本或 SQL 脚本中还包含开启交互模式的 SET 或 ATTACH 命令,也应同步移除。