デバッグは、本番環境のシンクにデータを書き込むことなく、ジョブの実行をシミュレートして SQL 文のビジネスロジックを検証します。デバッグセッション中、シンクテーブルの種類に関わらず、データがダウンストリームシステムに到達することはありません。
デバッグは、以下の目的で使用します。
-
ライブのアップストリームデータまたは指定したテストデータを使用して、SELECT 文または INSERT 文をテストする。
-
複数の SELECT 文または INSERT 文を含むジョブを検証する。
-
UPSERT クエリを、
count(*)のような更新操作のあるステートメントを含めて検証してください。
制限事項
-
SQL ジョブのみがサポートされています。
-
CREATE TABLE AS SELECT (CTAS) 文および CREATE DATABASE AS (CDAS) 文はサポートされていません。
-
デフォルトでは、Flink は 1,000 レコードを読み取った後に一時停止します。
-
各デバッグセッションは 3 分に制限されています。
前提条件
開始する前に、以下が準備できていることを確認してください。
-
実行中の Realtime Compute for Apache Flink ワークスペース
-
ETL ページに有効な SQL 文が記述された SQL ドラフト
-
セッションクラスターを作成し、デバッグタスクを実行するための十分な権限
ステップ 1:セッションクラスターの作成
デバッグはセッションクラスター上で実行されます。セッションクラスターは開発およびテスト専用に設計されています。本番環境では使用しないでください。
-
Flink コンソールで、対象のワークスペースを開きます。
-
[Create Session Cluster] をクリックします。
-
以下のセクションで説明するパラメーターを設定し、[Create Session Cluster] をクリックします。
基本設定
|
パラメーター |
説明 |
|
[Name] |
セッションクラスターの名前。 |
|
[Deployment Target] |
セッションクラスターを実行するリソースキュー。詳細については、「キューの管理」をご参照ください。 |
|
[State] |
作成後の望ましい状態。[RUNNING]:クラスターはすぐに起動します。[STOPPED]:クラスターは作成されますが、起動はしません。 |
|
[Scheduled Session Management] |
指定した期間ジョブが実行されていない場合に、クラスターを自動的にシャットダウンします。アイドル状態のクラスターによるリソースの浪費を防ぎます。 |
|
[Labels] |
概要ページでジョブをフィルタリングするためのタグ。 |
エンジンと再起動設定
|
パラメーター |
説明 |
|
[Engine Version] |
VVR エンジンバージョン。[Recommended] または [Stable] バージョンを選択します。詳細については、「エンジンバージョン」および「ライフサイクルポリシー」をご参照ください。 |
|
[Flink Restart Policy] |
タスクが失敗したときの再起動動作。
未設定の場合、デフォルトの再起動戦略が適用されます。つまり、チェックポイントがオフの場合、JobManager はタスクの失敗時に再起動せず、チェックポイントがオンの場合は再起動します。 |
|
[Other Configuration] |
追加の Flink 設定項目(たとえば、 |
リソース設定
|
パラメーター |
説明 |
|
[Number of TaskManagers] |
デフォルトでは、この値は並列度と等しくなります。 |
|
[JobManager CPU Cores] |
デフォルト:1。 |
|
[JobManager Memory] |
最小:1 GiB。推奨:4 GiB。 |
|
[TaskManager CPU Cores] |
デフォルト:2。 |
|
[TaskManager Memory] |
最小:1 GiB。推奨:8 GiB。 |
スロットサイジングの推奨事項:
|
ワークロード |
スロットあたりの vCPU |
スロットあたりのメモリ |
|
小規模ジョブ (並列度 1) |
1 |
2 GiB |
|
複雑なジョブ |
1 |
4 GiB |
TaskManager あたり 2 スロットというデフォルト設定から始めてください。
単一の TaskManager のリソースが少なすぎると、ジョブの安定性が低下し、TaskManager のオーバーヘッドをスロット間で共有できなくなります。単一の TaskManager のリソースが多すぎると、その TaskManager での障害が一度に多くのジョブに影響を与えます。
ログ設定
|
パラメーター |
説明 |
|
[Root Log Level] |
ログレベルは、重大度の低い順に TRACE、DEBUG、INFO、WARN、ERROR となります。 |
|
[Log Levels] |
クラス名とログレベル。 |
|
[Logging Profile] |
システムテンプレートまたはカスタムテンプレート。 |
Kubernetes や YARN などのリソースオーケストレーションフレームワークと Flink の統合に関連するオプションについては、「リソースオーケストレーションフレームワーク」をご参照ください。
セッションクラスターを作成した後、ETL ページでデバッグセッションを開始する際にそのクラスターを選択できます。
ステップ 2:SQL ドラフトのデバッグ
-
ETL ページで、ジョブの SQL コードを記述または開きます。詳細については、「ジョブ開発の概要」をご参照ください。
-
[Debug] をクリックします。セッションクラスターを選択し、[Next] をクリックします。
-
テストデータソースを設定します。
-
[Live data]:ライブのアップストリームデータを使用するには、変更を加えずに [Confirm] をクリックします。
-
[Test data]:テストデータを使用するには、[Download mock data template] をクリックして、ソーステーブルのスキーマに一致する CSV テンプレートを取得します。テンプレートにデータを入力してアップロードし、[Use mock data] を選択します。
オプション
説明
[Download mock data template]
ソーステーブルのスキーマに一致する CSV テンプレートをダウンロードします。
[Upload mock data]
テストデータを含む CSV ファイルをアップロードします。ファイルにはヘッダー行 (例:
id(INT)) を含める必要があります。最大ファイルサイズ:1 MB または 1,000 レコード。[Data Preview]
テストデータをアップロードした後、ソーステーブル名の横にある展開アイコン (+) をクリックしてデータをプレビューします。
[Debug code preview]
変更された DDL 文をプレビューします。デバッグはソーステーブルとシンクテーブルの DDL 文を自動的に変更しますが、実際のジョブコードは変更しません。
-
-
[OK] をクリックします。デバッグ結果が SQL エディターの下に表示されます。
トラブルシューティング
|
問題 |
原因 |
解決策 |
|
[Debug] ボタンがグレーアウト表示される |
実行中のセッションクラスターがない |
でセッションクラスターを作成して起動します。 |
|
デバッグセッションがタイムアウトする |
各セッションは 3 分に制限されている |
クエリを単純化するか、入力データ量を減らします。 |
|
デバッグ結果が空になる |
ソーステーブルにデータがない、またはテストデータが無効 |
データプレビューを確認します。テストデータを使用している場合は、CSV 形式とヘッダー行を検証します。 |
|
セッションクラスターのハートビートタイムアウト |
クラスター上で実行されているジョブが多すぎる |
同時実行ジョブの数を減らすか、ハートビートの間隔とタイムアウトを増やします。 |
|
予期しないデバッグ出力 |
DDL の自動変更が表示されない |
変更された DDL 文を確認するには、[Debug code preview] を確認します。 |
次のステップ
-
開発またはデバッグ後にジョブをデプロイするには、「ジョブのデプロイ」をご参照ください。
-
ジョブをデプロイした後、「デプロイの開始」をご参照ください。
-
Flink SQL ワークフローの完全なウォークスルーについては、「Flink SQL ジョブのクイックスタート」をご参照ください。