分享方式:


Trino CLI

注意

AKS 上的 Azure HDInsight 將於 2025 年 1 月 31 日退場。 請於 2025 年 1 月 31 日之前,將工作負載移轉至 Microsoft Fabric 或對等的 Azure 產品,以免工作負載突然終止。 訂用帳戶中剩餘的叢集將會停止,並會從主機移除。

在淘汰日期之前,只有基本支援可用。

重要

此功能目前為預覽功能。 Microsoft Azure 預覽版增補使用規定包含適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的更多法律條款。 若需此特定預覽版的相關資訊,請參閱 Azure HDInsight on AKS 預覽版資訊。 如有問題或功能建議,請在 AskHDInsight 上提交要求並附上詳細資料,並且在 Azure HDInsight 社群上追蹤我們以獲得更多更新資訊。

AKS 上 HDInsight 的 Trino CLI 提供基於終端的互動式殼層來執行查詢。

在 Windows 上安裝

對於 Windows,AKS 上 HDInsight 的 Trino CLI 會透過 MSI 安裝,這可讓您透過 Windows 命令提示字元 (CMD) 或 PowerShell 來存取 CLI。 安裝 Windows 子系統 Linux 版 (WSL),請參閱在 Linux 上安裝

需求

  • Java 8 或 11

  • 將 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>

注意

如果您在無周邊作業系統 (無網頁瀏覽器) 上執行,Trino CLI 會提示使用裝置程式碼進行驗證。 您也可以指定命令列參數 --auth AzureDeviceCode 來強制使用裝置程式碼。 在此情況下,您必須在另一個裝置/作業系統上開啟瀏覽器、輸入顯示的程式碼並進行驗證,然後返回 CLI。

疑難排解

以下是一些在 Windows 上安裝 Trino CLI 時常見的問題。

Proxy 封鎖連線

如果因為 Proxy 封鎖連線而無法下載 MSI 安裝程式,請確定已正確設定 Proxy。 針對 Windows 10,這些設定會在 [設定] > [網路與網際網路] > [Proxy] 窗格中進行管理。 連絡系統管理員了解必要的設定,或了解電腦組態管理或需要進階安裝時可能會發生的情況。

若要取得 MSI,您的 Proxy 必須允許 HTTPS 連線至下列位址:

  • https://aka.ms/
  • https://hdionaksresources.blob.core.windows.net/

解除安裝

您可以從 Windows 的 [應用程式和功能] 清單中將 Trino CLI 解除安裝。 若要解除安裝:

平台 Instructions
Windows 10 [開始] > [設定] > [應用程式]
Windows 8 和 Windows 7 [開始] > [控制台] > [程式集] > [解除安裝程式]

到此畫面後,在程式搜尋列中輸入 Trino。 要解除安裝的程式會列為「HDInsight Trino CLI <版本>」。 選取此應用程式,然後按一下 [解除安裝] 按鈕。

在 Linux 上安裝

Trino CLI 提供基於終端的互動式殼層來執行查詢。 您可以選取 [安裝指令碼] 選項,在 Linux 上手動安裝 Trino CLI。

需求

  • Java 8 或 11

  • 將 java 新增至 PATH,或定義指向 JRE 安裝目錄的 JAVA_HOME 環境變數,以便 $JAVA_HOME/bin/java 存在。

安裝或更新

安裝及更新 CLI 都需要重新執行安裝指令碼。 執行 Curl 來安裝 CLI。

curl -L https://aka.ms/InstallTrinoCli | bash

指令碼也可以在本機下載並執行。 您可能必須重新啟動殼層,才能讓變更生效。

執行 Trino CLI

您現在可以從殼層使用「trino-cli」命令來執行 Trino CLI,並連線至叢集:

trino-cli --server <cluster_endpoint>

注意

如果您在無周邊作業系統 (無網頁瀏覽器) 上執行,Trino CLI 會提示使用裝置程式碼進行驗證。 您也可以指定命令列參數 --auth AzureDeviceCode 來強制使用裝置程式碼。 在此情況下,您必須在另一個裝置/作業系統上開啟瀏覽器、輸入顯示的程式碼並進行驗證,然後返回 CLI。

疑難排解

以下是一些手動安裝期間常見的問題。

Curl「物件已移動」錯誤

如果您從 Curl 收到與 -L 參數相關的錯誤,或者是收到包含「物件已移動」的錯誤訊息,請嘗試使用完整的 URL 而非 aka.ms 來重新導向:

curl https://hdionaksresources.blob.core.windows.net/trino/cli/install.sh | bash

找不到 trino-cli 命令

hash -r

若您在安裝之後未重新啟動殼層,也可能會發生這種情形。 請確定 trino-cli 命令的位置 ($HOME/bin) 位於您的 $PATH。

Proxy 封鎖連線

若要取得安裝指令碼,您的 Proxy 必須允許 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 驗證方法名稱 No 決定如何提供使用者認證。 如果未指定,請使用AzureDefault
azure-client Client ID 適用於 AzureClientSecret, AzureClientCertificate 服務主體/應用程式的用戶端識別碼。
azure-tenant 租用戶識別碼 適用於 AzureClientSecret, AzureClientCertificate Microsoft Entra 租用戶識別碼。
azure-certificate-path 憑證的檔案路徑 適用於 AzureClientCertificate 具有憑證的 pfx/pem 檔案路徑。
azure-use-token-cache 使用權杖快取與否 No 如果提供,則會在 AzureDefault, AzureInteractive, AzureDeviceCode 模式中快取並重複使用存取權杖。
azure-scope 權杖範圍 No 用於請求權仗的 Microsoft Entra 範圍字串。
use-device-code 使用裝置程式碼方法與否 No 相當於 --auth AzureDeviceCode
password 服務主體的用戶端密碼 適用於 AzureClientSecret 使用 AzureClientSecret 模式時,服務主體的祕密/密碼。
access-token JWT 存取權杖 No 如果從外部取得存取權杖,可以使用此參數來提供。 在此情況下,不允許 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>
]

若要解決此問題,請將使用者或群組新增至授權設定檔