Avviare l'interfaccia della riga di comando del client SQL in modalità gateway
Importante
Azure HDInsight su AKS è stato ritirato il 31 gennaio 2025. Per saperne di più con questo annuncio.
È necessario eseguire la migrazione dei carichi di lavoro a Microsoft Fabric o a un prodotto Azure equivalente per evitare la chiusura brusca dei carichi di lavoro.
Importante
Questa funzionalità è attualmente in anteprima. Le condizioni supplementari per l'utilizzo per le anteprime di Microsoft Azure includono termini legali più validi applicabili alle funzionalità di Azure in versione beta, in anteprima o altrimenti non ancora rilasciate nella disponibilità generale. Per informazioni su questa anteprima specifica, vedere informazioni sull'anteprima di Azure HDInsight nel servizio Azure Kubernetes. Per domande o suggerimenti sulle funzionalità, inviare una richiesta in AskHDInsight con i dettagli e seguire microsoft per altri aggiornamenti su community di Azure HDInsight.
Questo tutorial guida su come avviare l'interfaccia della riga di comando del SQL Client in modalità gateway nel cluster Apache Flink 1.17.0 su HDInsight in AKS. Nella modalità gateway l'interfaccia della riga di comando invia SQL al gateway remoto specificato per eseguire istruzioni.
./bin/sql-client.sh gateway --endpoint <gateway address>
Nota
Nel servizio Azure Kubernetes HDInsight su Apache Flink Cluster, qualsiasi connessione esterna passerà tramite porta 443. Ma internamente reindirizzerà la richiesta al servizio sql-gateway che ascolta sulla porta 8083.
Controllare il servizio SQL Gateway nel lato AKS:
Che cos'è SQL Client in Flink?
La tabella di Flink & API SQL consente di usare query scritte nel linguaggio SQL, ma queste query richiedono l'incorporamento all'interno di un programma tabella scritto in Java o Scala. Inoltre, questi programmi devono essere inseriti in un pacchetto con uno strumento di compilazione prima di essere inviati a un cluster. Questa funzionalità limita l'utilizzo di Flink ai programmatori Java/Scala.
Sql Client mira a fornire un modo semplice per scrivere, eseguire debug e inviare programmi di tabella a un cluster Flink senza una singola riga di codice Java o Scala. L'interfaccia della riga di comando di SQL Client consente di recuperare e visualizzare i risultati in tempo reale dall'applicazione distribuita in esecuzione nella riga di comando.
Per ulteriori informazioni, consultare come accedere al client CLI di Flink SQL su webssh.
Che cos'è il gateway SQL in Flink
Il gateway SQL è un servizio che consente a più client remoti di eseguire SQL contemporaneamente. Fornisce un modo semplice per inviare il job Flink, consultare i metadati e analizzare i dati online.
Per ulteriori informazioni, vedere SQL Gateway.
Avviare l'interfaccia della riga di comando di SQL Client in modalità gateway in Flink-cli
Nel cluster Apache Flink su HDInsight su AKS, avviare l'interfaccia della riga di comando del client SQL in modalità gateway eseguendo il comando:
./bin/sql-client.sh gateway --endpoint host:port
or
./bin/sql-client.sh gateway --endpoint https://fqdn/sql-gateway
Ottenere l'endpoint del cluster (host o fqdn) nel portale di Azure.
Prova
Preparazione
Scarica CLI di Flink
- Scarica l'interfaccia della riga di comando Flink da https://aka.ms/hdionaksflink117clilinux nel computer Windows locale.
Installare sottosistema Windows per Linux per eseguire questa operazione nel computer Windows locale.
Apri il comando di Windows ed esegui (sostituisci JAVA_HOME e il percorso di flink-cli con i tuoi) per scaricare 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
Impostare l'endpoint, l'ID tenant e la porta 443 in flink-conf.yaml
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
Consenti l'IP pubblico locale di Windows con porta 443 e VPN abilitata all'interno di HDInsight nella sicurezza di rete in entrata della sottorete del cluster AKS.
Eseguire il sql-client.sh in modalità gateway su Flink-cli per Flink SQL.
bin/sql-client.sh gateway --endpoint https://fqdn/sql-gateway
Esempio
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
Prima di eseguire query su qualsiasi tabella con un'origine esterna, preparare i file JAR correlati. Gli esempi seguenti eseguono query sulle tabelle Kafka e MySQL in Flink SQL. Scaricare il file JAR e inserirlo nell'archiviazione di Azure Data Lake Storage gen2 collegata al cluster Flink.
Contenitori in Azure Data Lake Storage gen2 nel portale di Azure:
Utilizzare la tabella già creata e inserirla nel metastore di Hive per la gestione, quindi eseguire la query.
Nota
In questo esempio, tutti i file jar si trovano in HDInsight su AKS nel predefinito Azure Data Lake Storage Gen2. Il contenitore e l'account di archiviazione non devono essere uguali a quanto specificato durante la creazione del cluster. Se necessario, è possibile specificare un altro account di archiviazione e concedere all'identità gestita dall'utente del cluster il ruolo di proprietario dei dati del BLOB di archiviazione su Azure Data Lake Storage Gen2.
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 |
Riferimento
Apache Flink® Command-Line Interface (CLI) in HDInsight nei cluster del servizio Azure Kubernetes