Trino CLI
重要
AKS 上的 Azure HDInsight 已于 2025 年 1 月 31 日停用。 了解此公告的详细信息。
需要将工作负荷迁移到 Microsoft Fabric 或等效的 Azure 产品,以避免工作负荷突然终止。
重要
此功能目前以预览版提供。 Microsoft Azure 预览版补充使用条款 包括适用于 Azure 中的功能,这些功能处于 beta 版、预览版或尚未正式发布阶段的更多法律条款。 有关此特定预览的信息,请参阅 Azure HDInsight on AKS 预览版信息。 如有问题或对功能的建议,请在 AskHDInsight 上提交请求,提供详细信息,并关注我们,以便获取更多关于 Azure HDInsight 社区的更新。
AKS 上的 HDInsight 的 Trino CLI 提供了一个基于终端的交互式 shell,用于运行查询。
在 Windows 上安装
对于 Windows,通过 MSI 安装用于 AKS 上的 HDInsight 的 Trino CLI,您可以通过 Windows 命令提示符(CMD)或 PowerShell 来访问 CLI。 安装适用于 Linux 的 Windows 子系统时(WSL),请参阅在 Linux 上安装。
要求
将 java.exe 添加到 PATH 或定义指向 JRE 安装目录的JAVA_HOME环境变量,以便存在
%JAVA_HOME%\bin\java.exe
。
安装或更新
MSI 包用于在 Windows 上的 AKS 上安装或更新用于 HDInsight 的 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 都需要重新运行安装脚本。 通过运行 curl 安装 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
参数 | 意义 | 必填 | 描述 |
---|---|---|---|
认证 | 身份验证方法的名称 | 不 | 确定如何提供用户凭据。 如果未指定,请使用 AzureDefault 。 |
azure-client | 客户端 ID | 对 AzureClientSecret, AzureClientCertificate 是的。 |
服务主体/应用程序的客户端 ID。 |
Azure租户 | 租户 ID | 对 AzureClientSecret, AzureClientCertificate 选是。 |
Microsoft Entra 租户 ID。 |
Azure证书路径 | 证书的文件路径 | 对 AzureClientCertificate 是的。 |
包含证书的 pfx/pem 文件的路径。 |
Azure-使用令牌缓存 | 使用令牌缓存或不使用 | 不 | 如果提供,访问令牌将缓存并在 AzureDefault, AzureInteractive, AzureDeviceCode 模式下重复使用。 |
azure-scope | 令牌范围 | 不 | Microsoft Entra 使用范围字符串来请求令牌。 |
使用设备代码 | 使用或不使用设备代码方法 | 不 | 等效于 --auth AzureDeviceCode 。 |
密码 | 服务主体的客户端机密 | 对 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>
]
若要解决此问题,请将用户或组添加到 授权配置文件。