你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Trino CLI
重要
此功能目前以预览版提供。 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>
]
要解决此问题,请将用户或组添加到授权配置文件。