在閘道模式中啟動 SQL 用戶端 CLI
重要
AKS 上的 Azure HDInsight 於 2025 年 1 月 31 日淘汰。 透過此公告 深入瞭解。
您必須將工作負載移轉至 Microsoft Fabric 或對等 Azure 產品,以避免突然終止工作負載。
重要
這項功能目前為預覽狀態。 Microsoft Azure 預覽版的補充使用規定 包含適用於 Beta 版、預覽版或尚未正式發行之 Azure 功能的更合法條款。 如需此特定預覽的相關資訊,請參閱 在 AKS 上的 Azure HDInsight 預覽資訊。 如果您有問題或功能建議,請提交至 AskHDInsight 詳細說明,並追蹤我們以獲得 Azure HDInsight 社群 更多更新。
本教學課程會引導您如何在 AKS 上的 HDInsight 上的 Apache Flink 叢集 1.17.0 中,以網關模式啟動 SQL 用戶端 CLI。 在閘道模式中,CLI 會將 SQL 提交至指定的遠端閘道來執行語句。
./bin/sql-client.sh gateway --endpoint <gateway address>
注意
在 AKS 上的 HDInsight 上的 Apache Flink 叢集中,任何外部連線都會透過 443 埠進行。 但在內部系統中,它會將請求重新導向至接聽埠 8083 的 sql-gateway 服務。
檢查 AKS 端的 sql 閘道服務:
什麼是 Flink 中的 SQL 用戶端?
Flink 的數據表 & SQL API 可讓您使用以 SQL 語言撰寫的查詢,但這些查詢需要在以 Java 或 Scala 撰寫的數據表程式中內嵌。 此外,這些程式必須先使用建置工具封裝,才能提交至叢集。 此功能會將 Flink 的使用限制為 Java/Scala 程式設計人員。
SQL Client 旨在提供簡單的撰寫、偵錯和將數據表程式提交至 Flink 叢集的方式,而不需要單行 Java 或 Scala 程式代碼。 SQL 用戶端 CLI 可讓您從命令行上執行中的分散式應用程式擷取和可視化實時結果。
如需詳細資訊,請參閱 如何在 webssh上輸入 Flink SQL CLI 用戶端。
什麼是 Flink 中的 SQL 閘道
SQL 閘道是一項服務,可讓來自遠端的多個用戶端在並行中執行 SQL。 它可讓您輕鬆提交 Flink 作業、查閱元數據,以及在線分析數據。
如需詳細資訊,請參閱 SQL Gateway。
在 Flink-cli 的閘道模式中啟動 SQL 用戶端 CLI
在 AKS 上的 HDInsight 上的 Apache Flink 叢集中,執行 命令以閘道模式啟動 SQL 用戶端 CLI:
./bin/sql-client.sh gateway --endpoint host:port
or
./bin/sql-client.sh gateway --endpoint https://fqdn/sql-gateway
在 Azure 門戶上取得叢集端點(主機,或 fqdn)。
測試
製備
下載 Flink CLI
- 您可以從 https://aka.ms/hdionaksflink117clilinux 下載 Flink CLI 到本機 Windows 電腦。
安裝適用於Linux的 Windows 子系統,讓此功能在本機 Windows 電腦上運作。
開啟 Windows 命令並執行 (以您自己的方式取代 JAVA_HOME 和 flink-cli 路徑),以下載 flink-cli:
Windows Subsystem for Linux --distribution Ubuntu export JAVA_HOME=/mnt/c/Work/99_tools/zulu11.56.19-ca-jdk11.0.15-linux_x64 cd <folder> wget https://hdiconfigactions.blob.core.windows.net/hiloflink17blob/flink-cli.tgz tar -xvf flink-cli.tgz
在 flink-conf.yaml 中設定端點、租用戶標識碼和埠 443
user@MININT-481C9TJ:/mnt/c/Users/user/flink-cli$ cd conf user@MININT-481C9TJ:/mnt/c/Users/user/flink-cli/conf$ ls -l total 8 -rwxrwxrwx 1 user user 2451 Feb 26 20:33 flink-conf.yaml -rwxrwxrwx 1 user user 2946 Feb 23 14:13 log4j-cli.properties user@MININT-481C9TJ:/mnt/c/Users/user/flink-cli/conf$ cat flink-conf.yaml rest.address: <flink cluster endpoint on Azure portal> azure.tenant.id: <tenant ID> rest.port: 443
允許在 HDInsight 的 AKS 叢集子網的網路安全裝置中,使用 VPN 啟用的本地 Windows 公共 IP 與埠 443。
在 Flink-cli 至 Flink SQL 的閘道模式中執行 sql-client.sh。
bin/sql-client.sh gateway --endpoint https://fqdn/sql-gateway
例
user@MININT-481C9TJ:/mnt/c/Users/user/flink-cli$ bin/sql-client.sh gateway --endpoint https://fqdn/sql-gateway ▒▓██▓██▒ ▓████▒▒█▓▒▓███▓▒ ▓███▓░░ ▒▒▒▓██▒ ▒ ░██▒ ▒▒▓▓█▓▓▒░ ▒████ ██▒ ░▒▓███▒ ▒█▒█▒ ░▓█ ███ ▓░▒██ ▓█ ▒▒▒▒▒▓██▓░▒░▓▓█ █░ █ ▒▒░ ███▓▓█ ▒█▒▒▒ ████░ ▒▓█▓ ██▒▒▒ ▓███▒ ░▒█▓▓██ ▓█▒ ▓█▒▓██▓ ░█░ ▓░▒▓████▒ ██ ▒█ █▓░▒█▒░▒█▒ ███▓░██▓ ▓█ █ █▓ ▒▓█▓▓█▒ ░██▓ ░█░ █ █▒ ▒█████▓▒ ██▓░▒ ███░ ░ █░ ▓ ░█ █████▒░░ ░█░▓ ▓░ ██▓█ ▒▒▓▒ ▓███████▓░ ▒█▒ ▒▓ ▓██▓ ▒██▓ ▓█ █▓█ ░▒█████▓▓▒░ ██▒▒ █ ▒ ▓█▒ ▓█▓ ▓█ ██▓ ░▓▓▓▓▓▓▓▒ ▒██▓ ░█▒ ▓█ █ ▓███▓▒░ ░▓▓▓███▓ ░▒░ ▓█ ██▓ ██▒ ░▒▓▓███▓▓▓▓▓██████▓▒ ▓███ █ ▓███▒ ███ ░▓▓▒░░ ░▓████▓░ ░▒▓▒ █▓ █▓▒▒▓▓██ ░▒▒░░░▒▒▒▒▓██▓░ █▓ ██ ▓░▒█ ▓▓▓▓▒░░ ▒█▓ ▒▓▓██▓ ▓▒ ▒▒▓ ▓█▓ ▓▒█ █▓░ ░▒▓▓██▒ ░▓█▒ ▒▒▒░▒▒▓█████▒ ██░ ▓█▒█▒ ▒▓▓▒ ▓█ █░ ░░░░ ░█▒ ▓█ ▒█▓ ░ █░ ▒█ █▓ █▓ ██ █░ ▓▓ ▒█▓▓▓▒█░ █▓ ░▓██░ ▓▒ ▓█▓▒░░░▒▓█░ ▒█ ██ ▓█▓░ ▒ ░▒█▒██▒ ▓▓ ▓█▒ ▒█▓▒░ ▒▒ █▒█▓▒▒░░▒██ ░██▒ ▒▓▓▒ ▓██▓▒█▒ ░▓▓▓▓▒█▓ ░▓██▒ ▓░ ▒█▓█ ░░▒▒▒ ▒▓▓▓▓▓▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░▓▓ ▓░▒█░ ______ _ _ _ _____ ____ _ _____ _ _ _ BETA | ____| (_) | | / ____|/ __ \| | / ____| (_) | | | |__ | |_ _ __ | | __ | (___ | | | | | | | | |_ ___ _ __ | |_ | __| | | | '_ \| |/ / \___ \| | | | | | | | | |/ _ \ '_ \| __| | | | | | | | | < ____) | |__| | |____ | |____| | | __/ | | | |_ |_| |_|_|_| |_|_|\_\ |_____/ \___\_\______| \_____|_|_|\___|_| |_|\__| Welcome! Enter 'HELP;' to list all available commands. 'QUIT;' to exit. Command history file path: /home/user/.flink-sql-history
使用外部來源查詢任何數據表之前,請先準備相關的 jar。 下列範例會查詢 Flink SQL 中的 kafka 數據表、mysql 數據表。 下載 jar,並將其放在附加 Azure Data Lake Storage gen2 儲存的 Flink 叢集中。
在 Azure 入口網站中的 Azure Data Lake Storage gen2 裡的容器:
使用已建立的數據表,並將其放入Hive中繼存放區以進行管理,然後執行查詢。
注意
在此範例中,AKS 上 HDInsight 中的所有 jar 預設為 Azure Data Lake Storage Gen2。 容器和儲存帳戶不需要與叢集建立過程中指定的一樣。 如有需要,您可以指定另一個記憶體帳戶,並在 Azure Data Lake Storage Gen2 端將記憶體 Blob 數據擁有者角色授與叢集使用者受控識別。
CREATE CATALOG myhive WITH ( 'type' = 'hive' ); USE CATALOG myhive; // ADD jar into environment ADD JAR 'abfs://<container>@<storage name>.dfs.core.windows.net/jar/flink-connector-jdbc-3.1.0-1.17.jar'; ADD JAR 'abfs://<container>@<storage name>.dfs.core.windows.net/jar/mysql-connector-j-8.0.33.jar'; ADD JAR 'abfs://<container>@<storage name>.dfs.core.windows.net/jar/kafka-clients-3.2.0.jar'; ADD JAR 'abfs://<container>@<storage name>.dfs.core.windows.net/jar/flink-connector-kafka-1.17.0.jar'; Flink SQL> show jars; ----------------------------------------------------------------------------------------------+ | jars | +----------------------------------------------------------------------------------------------+ | abfs://<container>@<storage name>.dfs.core.windows.net/jar/flink-connector-kafka-1.17.0.jar | | abfs://<container>@<storage name>.dfs.core.windows.net/jar/flink-connector-jdbc-3.1.0-1.17.jar | | abfs://<container>@<storage name>.dfs.core.windows.net/jar/kafka-clients-3.2.0.jar | | abfs://<container>@<storage name>.dfs.core.windows.net/jar/mysql-connector-j-8.0.33.jar | +----------------------------------------------------------------------------------------------+ 4 rows in set Flink SQL> SET 'sql-client.execution.result-mode' = 'tableau'; [INFO] Execute statement succeed. Flink SQL> show tables; +----------------------+ | table name | +----------------------+ | flightsintervaldata1 | | kafka_user_orders | | kafkatable | | mysql_user_orders | | orders | +----------------------+ 5 rows in set // mysql cdc table Flink SQL> select * from mysql_user_orders; +----+-------------+----------------------------+-------------+--------------------------------+--------------+-------------+--------------+ | op | order_id | order_date | customer_id | customer_name | price | product_id | order_status | +----+-------------+----------------------------+-------------+--------------------------------+--------------+-------------+--------------+ | +I | 10001 | 2023-07-16 10:08:22.000000 | 1 | Jark | 50.00000 | 102 | FALSE | | +I | 10002 | 2023-07-16 10:11:09.000000 | 2 | Sally | 15.00000 | 105 | FALSE | | +I | 10003 | 2023-07-16 10:11:09.000000 | 3 | Sally | 25.00000 |