你当前正在访问 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 8 或 11

  • 将 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 8 或 11

  • 将 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"
}]

若要解决问题,请尝试以下步骤:

  1. 退出 Trino CLI。
  2. az logout运行
  3. az login -t <your-trino-cluster-tenantId>运行
  4. 现在,此命令应正常工作:
trino-cli --server <cluster-endpoint>
  1. 或者,指定身份验证/租户参数:
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>
]

要解决此问题,请将用户或组添加到授权配置文件