Flink SQL Editor
これは Flink 用 SQL エディタの非常に初期のバージョンです。
目標は、Flink SQL のクエリを実行する方法をデモすることです。新しい Flink SQL ゲートウェイプロジェクトを使用して、Docker コンテナ内のライブデータを持つ Flink クラスターを指すようにします。Hue は Flink のテーブルをクエリするための SQL エディタとして使用されます。
Flink SQL と 継続的な クエリの詳細についてはリンク先をご覧ください。
セットアップ
Flink 1.10 クラスターであれば動作し、デモは Ververica SQL Training をベースにしています。これは簡単なセットアップ方法 を説明しています。
git clone https://github.com/ververica/sql-training.git
cd sql-training
docker-compose up -d
そうすると http://localhost:8081 が表示されるようになります。
ここでは SQL クライアントコンテナを起動し、ゲートウェイを内部にインストールします (ゲートウェイには FLINK_HOME が必要なので、ローカルの Flink をインストールしないようにします)が、これはローカルまたは別のコンテナで行うことができます。
docker-compose exec sql-client bash
ゲートウェイのリリース を取得します。
cd /opt
wget https://github.com/ververica/flink-sql-gateway/releases/download/v0.1-snapshot/flink-sql-gateway-0.1-SNAPSHOT-bin.zip
unzip flink-sql-gateway-0.1-SNAPSHOT-bin.zip
cd flink-sql-gateway-0.1-SNAPSHOT
echo $FLINK_HOME
続いて、別のシェルから Flink SQL の設定をゲートウェイにコピーして、デフォルトでデモのテーブルを取得するようにします。
wget https://raw.githubusercontent.com/romainr/flink-sql-gateway/master/docs/demo/sql-gateway-defaults.yaml
docker cp sql-gateway-defaults.yaml sql-training_sql-client_1:/opt/flink-sql-gateway-0.1-SNAPSHOT/conf/
これでコンテナのシェルに戻り、開始することができます。
cd bin
./sql-gateway.sh --library /opt/sql-client/lib
CTRL-Z
でサーバーをバックグラウンドにして、
bg
セットアップを検証するためにいくつかのコマンドを実行します。
curl localhost:8083/v1/info
> {"product_name":"Apache Flink","version":"1.10.0"}
curl -X POST localhost:8083/v1/sessions -d '{"planner":"blink","execution_type":"streaming"}'
> {"session_id":"7eea0827c249e5a8fcbe129422f049e8"}
注
SQL クライアントコンテナ内ではなく SQL ゲートウェイにデプロイすることも可能です。
-
FLINK_HOME が設定された Flink のバイナリーパッケージ を持っていること
-
$FLINK_HOME/conf/flink-conf.yaml
で実際の jobmanager のアドレスjobmanager.rpc.address
を更新する -
sql-gateway-defaults.yaml
の2つのアドレスのプロパティを変更する
server: # The address that the gateway binds itself. bind-address: 172.18.0.7 # The address that should be used by clients to connect to the gateway. address: 172.18.0.7
クエリエディタ
Hue のコネクター セクションに説明しているように、Flink インタープリターを追加しています。
[notebook]
[[interpreters]]
[[[flink]]]
name=Flink
interface=flink
options='{"api_url": "http://172.18.0.7:8993"}'
クライアントのコンテナにゲートウェイをセットアップしていて、ローカルホストから接続したい場合は、そのバインドIPを SQL クライアントコンテナのIPで更新する必要があります。
ゲートウェイサービスの IP は実行しているコンテナの1つです。sql-training_sql-client_1
を確認してIPを取得します。
docker ps
> CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
> 638574b31cd6 fhueske/sql-training:1-FLINK-1.10-scala_2.11 "/docker-entrypoint.…" About a minute ago Up About a minute 6123/tcp, 8081/tcp sql-training_sql-client_1
> 59d1627c412a wurstmeister/kafka:2.12-2.2.1 "start-kafka.sh" About a minute ago Up About a minute 0.0.0.0:9092->9092/tcp sql-training_kafka_1
> 6711c0707f1e flink:1.10.0-scala_2.11 "/docker-entrypoint.…" About a minute ago Up About a minute 6121-6123/tcp, 8081/tcp sql-training_taskmanager_1
> 6a8149af6c1e flink:1.10.0-scala_2.11 "/docker-entrypoint.…" About a minute ago Up About a minute 6123/tcp, 0.0.0.0:8081->8081/tcp sql-training_jobmanager_1
> 3de8275dff26 wurstmeister/zookeeper:3.4.6 "/bin/sh -c '/usr/sb…" About a minute ago Up About a minute 22/tcp, 2888/tcp, 3888/tcp, 0.0.0.0:2181->2181/tcp sql-training_zookeeper_1
> a28cee7627a0 mysql:8.0.19 "docker-entrypoint.s…" About a minute ago Up About a minute 3306/tcp, 33060/tcp sql-training_mysql_1
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' sql-training_sql-client_1
> 172.18.0.7
そして、ここで左側のアシストを使用してテーブルを参照し、簡単にクエリするためにドラッグ&ドロップするだけでなく、より強力なクエリを書くためのオートコンプリートを活用しています。
SELECT taxiId, isStart
FROM default_database.Rides
LIMIT 100
;
SELECT
psgCnt,
COUNT(*) AS cnt
FROM Rides
WHERE isInNYC(lon, lat) AND isStart
GROUP BY
psgCnt
;
Flink のダッシュボードは通常のジョブとして SQL のクエリを表示します。
今後
この最初のバージョンでは、商用環境の準備をするために数多くの将来的な繰り返し がありますが、ベースはそこに到達しています。
Apache Calcite をベースにしたSQL オートコンプリート の改善が注目されています。Hue にはより良い構文 and even ships with a default Flink SQL dialect.
Another one coming soon will be a more user friendly display of the live data in the result grid.
Any feedback or question? Feel free to comment here or on the Forum and quick start Live SQL querying!
Romain from the Hue Team