你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Trino CLI
注意
我们将于 2025 年 1 月 31 日停用 Azure HDInsight on AKS。 在 2025 年 1 月 31 日之前,你需要将工作负荷迁移到 Microsoft Fabric 或同等的 Azure 产品,以避免工作负荷突然终止。 订阅上的剩余群集会被停止并从主机中移除。
在停用日期之前,仅提供基本支持。
重要
此功能目前以预览版提供。 Microsoft Azure 预览版的补充使用条款包含适用于 beta 版、预览版或其他尚未正式发布的 Azure 功能的更多法律条款。 有关此特定预览版的信息,请参阅 Azure HDInsight on AKS 预览版信息。 如有疑问或功能建议,请在 AskHDInsight 上提交请求并附上详细信息,并关注我们以获取 Azure HDInsight Community 的更多更新。
HDInsight on AKS 的 Trino CLI 提供了一个基于终端的交互式 shell 用于运行查询。
在 Windows 上安装
对于 Windows,HDInsight on AKS 的 Trino CLI 是通过 MSI 安装的,因此可以通过 Windows 命令提示符 (CMD) 或 PowerShell 访问 CLI。 对于适用于 Linux 的 Windows 子系统 (WSL) 安装时,请参阅在 Linux 上安装。
要求
将 java.exe 添加到 PATH,或定义指向 JRE 安装目录的 JAVA_HOME 环境变量,以便存在
%JAVA_HOME%\bin\java.exe
。
安装或更新
MSI 包用于在 Windows 上安装或更新 HDInsight on AKS 的 Trino CLI。
下载并安装最新版本的 Trino CLI。 当安装程序询问是否可以对计算机进行更改时,请单击“是”框。 安装完成后,需要关闭再重新打开所有活动的 Windows 命令提示符或 PowerShell 窗口,然后才能使用 Trino CLI。
下载 Trino CLI:https://aka.ms/InstallTrinoCLIWindows
运行 Trino CLI
现在可以在命令提示符中使用“trino-cli”运行 Trino CLI,并连接到群集:
trino-cli --server <cluster_endpoint>
注意
如果在无外设 OS 上运行(无 Web 浏览器),Trino CLI 将提示使用设备代码进行身份验证。 还可指定命令行参数 --auth AzureDeviceCode
来强制使用设备代码。 在这种情况下,需要在另一台设备/OS 上打开浏览器,输入显示的代码并进行身份验证,然后返回到 CLI。
疑难解答
以下是在 Windows 上安装 Trino CLI 时出现的一些常见问题。
代理阻止连接
如果由于代理阻止连接而不能下载 MSI 安装程序,请确保已正确配置代理。 对于 Windows 10,这些设置通过“设置”>“网络和 Internet”>“代理”窗格进行管理。 如果要了解所需的设置,或者在计算机可能是配置管理型计算机或需要高级设置的情况下,请与系统管理员联系。
为了获取 MSI,代理必须允许与以下地址之间的 HTTPS 连接:
https://aka.ms/
https://hdionaksresources.blob.core.windows.net/
卸载
可通过 Windows 中的“应用和功能”列表卸载 Trino CLI。 若要卸载:
平台 | 说明 |
---|---|
Windows 10 | “开始”>“设置”>“应用” |
Windows 8 和 Windows 7 | “开始”>“控制面板”>“程序”>“卸载程序” |
进入此屏幕后,请在程序搜索栏中键入 Trino。 要卸载的程序将列出为 “HDInsight Trino CLI <版本>”。 选择此应用程序,然后单击“卸载”按钮。
在 Linux 上安装
Trino CLI 提供一个基于终端的交互式 shell,用于运行查询。 可以选择“安装脚本”选项在 Linux 上手动安装 Trino CLI。
要求
将 java 添加到 PATH,或定义指向 JRE 安装目录的 JAVA_HOME 环境变量,以便存在 $JAVA_HOME/bin/java。
安装或更新
安装和更新 CLI 都需要重新运行安装脚本。 运行 cur 来安装 CLI。
curl -L https://aka.ms/InstallTrinoCli | bash
也可以下载并在本地运行该脚本。 可能需要重启 shell 才能使更改生效。
运行 Trino CLI
现在,可以在 shell 中使用“trino-cli”命令运行 Trino CLI,并连接到群集:
trino-cli --server <cluster_endpoint>
注意
如果在无外设 OS 上运行(无 Web 浏览器),Trino CLI 将提示使用设备代码进行身份验证。 还可指定命令行参数 --auth AzureDeviceCode
来强制使用设备代码。 在这种情况下,需要在另一台设备/OS 上打开浏览器,输入显示的代码并进行身份验证,然后返回到 CLI。
疑难解答
下面是手动安装过程中可能出现的一些常见问题。
curl“对象已移动”错误
如果从 curl 中收到与 -L 参数相关的错误,或者收到包含“对象已移动”文本的错误消息,请尝试使用完整 URL 而不是 aka.ms 重定向:
curl https://hdionaksresources.blob.core.windows.net/trino/cli/install.sh | bash
找不到 trino-cli 命令
hash -r
如果在安装后没有重启 shell,也可能出现此错误。 确保 trino-cli 命令的位置 ($HOME/bin) 位于 $PATH 中。
代理阻止连接
为了获取安装脚本,代理必须允许与以下地址之间的 HTTPS 连接:
https://aka.ms/
https://hdionaksresources.blob.core.windows.net/
卸载
要移除所有 trino-cli 文件,请运行:
rm $HOME/bin/trino-cli
rm -r $HOME/lib/trino-cli
身份验证
Trino CLI 支持使用命令行参数进行 Microsoft Entra 身份验证的各种方法。 下表介绍了重要的参数和身份验证方法。有关详细信息,请参阅身份验证。
此外,CLI 中提供的参数说明包括:
trino-cli --help
参数 | 含义 | 必须 | 说明 |
---|---|---|---|
auth | 身份验证方法的名称 | 否 | 确定如何提供用户凭据。 如果未指定,则使用 AzureDefault 。 |
azure-client | 客户端 ID | 适用于 AzureClientSecret, AzureClientCertificate 。 |
服务主体/应用程序的客户端 ID。 |
azure-tenant | 租户 ID | 适用于 AzureClientSecret, AzureClientCertificate 。 |
Microsoft Entra 租户 ID。 |
azure-certificate-path | 证书的文件路径 | 适用于 AzureClientCertificate 。 |
包含证书的 pfx/pem 文件的路径。 |
azure-use-token-cache | 是否使用令牌缓存 | 否 | 如果已提供,则会在 AzureDefault, AzureInteractive, AzureDeviceCode 模式下缓存并重复使用访问令牌。 |
azure-scope | 令牌范围 | 否 | 用于请求令牌的 Microsoft Entra 范围字符串。 |
use-device-code | 是否使用设备代码方法 | 否 | 等效于 --auth AzureDeviceCode 。 |
password | 服务主体的客户端密码 | 适用于 AzureClientSecret 。 |
使用 AzureClientSecret 模式时,服务主体的机密/密码。 |
access-token | JWT 访问令牌 | 否 | 如果访问令牌是从外部获取的,可使用此参数提供。 在这种情况下,不允许使用 auth 参数。 |
示例
说明 | CLI 命令 |
---|---|
AzureDefault | trino-cli --server cluster1.pool1.region.projecthilo.net |
交互式浏览器身份验证 | trino-cli --server cluster1.pool1.region1.projecthilo.net --auth AzureInteractive |
使用令牌缓存 | trino-cli --server cluster1.pool1.region1.projecthilo.net --auth AzureInteractive --azure-use-token-cache |
具有机密的服务主体 | trino-cli --server cluster1.pool1.region1.projecthilo.net --auth AzureClientSecret --azure-client 11111111-1111-1111-1111-111111111111 --azure-tenant 11111111-1111-1111-1111-111111111111 --password |
服务主体和受保护的证书(提示输入密码) | trino-cli --server cluster1.pool1.region1.projecthilo.net --auth AzureClientCertificate --azure-client 11111111-1111-1111-1111-111111111111 --azure-certificate-path d:\tmp\cert.pfx --azure-tenant 11111111-1111-1111-1111-111111111111 --password |
疑难解答
MissingAccessToken 或 InvalidAccessToken
CLI 显示任一错误:
Error running command: Authentication failed: {
"code": "MissingAccessToken",
"message": "Unable to find the token or get the required claims from it."
}
Error running command: Error starting query at https://<cluster-endpoint>/v1/statement returned an invalid response: JsonResponse{statusCode=500, statusMessage=, headers={content-type=[application/json; charset=utf-8], date=[Fri, 16 Jun 2023 18:25:23 GMT], strict-transport-security=[max-age=15724800; includeSubDomains]}, hasValue=false} [Error: {
"code": "InvalidAccessToken",
"message": "Unable to find the token or get the required claims from it"
}]
若要解决问题,请尝试以下步骤:
- 退出 Trino CLI。
az logout
运行az login -t <your-trino-cluster-tenantId>
运行- 现在,此命令应正常工作:
trino-cli --server <cluster-endpoint>
- 或者,指定身份验证/租户参数:
trino-cli --server <cluster-endpoint> --auth AzureInteractive --azure-tenant <trino-cluster-tenantId>
403 禁止访问
CLI 显示错误:
Error running command: Error starting query at https://<cluster-endpoint>/v1/statement returned an invalid response: JsonResponse{statusCode=403, statusMessage=, headers={content-length=[146], content-type=[text/html], date=[Wed, 25 May 2023 16:49:24 GMT], strict-transport-security=[max-age=15724800; includeSubDomains]}, hasValue=false} [Error: <html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx</center>
</body>
</html>
]
要解决此问题,请将用户或组添加到授权配置文件。