共用方式為


以閘道模式啟動 SQL 用戶端 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 上的 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 閘道服務:

顯示如何檢查 SQL 閘道的螢幕擷取畫面。

Flink 的資料表和 SQL API 可讓您使用以 SQL 語言撰寫的查詢,但這些查詢需要內嵌在以 JAVA 或 Scala 撰寫的資料表程式內。 此外,這些程式必須先使用建置工具封裝,然後才能提交至叢集。 此功能會將 Flink 的使用限制為 JAVA/Scala 程式設計人員。

SQL 用戶端旨在提供簡單的撰寫、偵錯,以及將資料表程式提交至 Flink 叢集的方式,而不需要單行 JAVA 或 Scala 程式碼。 SQL 用戶端 CLI 可讓您從命令列上執行中的分散式應用程式擷取和視覺化即時結果。

如需詳細資訊,請參閱如何在 WebSSH 上輸入 Flink SQL CLI 用戶端

SQL 閘道是一項服務,可讓來自遠端的多個用戶端並行執行 SQL。 它可讓您以輕鬆的方式提交 Flink 作業、查閱中繼資料,以及線上分析資料。

如需詳細資訊,請參閱 SQL 閘道

在 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)。

顯示叢集端點的螢幕擷取畫面。

測試

準備

  1. 從本機 Windows 電腦中的 https://aka.ms/hdionaksflink117clilinux 下載 Flink CLI。

安裝 Windows 子系統 Linux 版,讓此功能在本機 Windows 電腦上運作。

  1. 開啟 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
    
  2. 在 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
    
  3. 將使用連接埠 443 且啟用 VPN 的本機 Windows 公用 IP 加入允許清單至 AKS 上的 HDInsight 叢集子網路的網路安全性輸入。

    顯示如何允許公用 IP 位址的螢幕擷取畫面。

  4. 在 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
    
  5. 使用外部來源查詢任何資料表之前,請先準備相關的 JAR。 下列範例會查詢 Flink SQL 中的 Kafka 資料表、MySQL 資料表。 下載 JAR,並將其放在已連結 Azure Data Lake Storage Gen2 儲存體的 Flink 叢集中。

    Azure 入口網站中 Azure Data Lake Storage Gen2 中的 JAR:

    顯示 Azure 入口網站中 JAR 檔案的螢幕擷取畫面。

  6. 使用已建立的資料表,並將其放入 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 |
    
    

參考

HDInsight on AKS 叢集上的 Apache Flink® 命令列介面 (CLI)