AnalyticDB for MySQL は、SQL 開発エディターまたは Java Database Connectivity (JDBC) を使用して XIHE バルク同期並列 (BSP) SQL ジョブを提出することをサポートしています。このトピックでは、XIHE BSP SQL ジョブ開発のシナリオ、提出方法、共通構成パラメーター、およびよくある質問 (FAQ) について説明します。
前提条件
AnalyticDB for MySQL Enterprise Edition、Basic Edition、または Data Lakehouse Edition クラスター用に、ジョブリソースグループが作成されている必要があります。
AnalyticDB for MySQL Enterprise Edition、Basic Edition、または Data Lakehouse Edition クラスター用に、データベースアカウントが作成されている必要があります。
シナリオ
XIHE BSP SQL ジョブは XIHE BSP エンジンによって実行され、ETL (抽出・変換・書き出し) シナリオ、大規模クエリ、およびバースト的な低優先度クエリに適しています。XIHE BSP エンジンの詳細については、「コンピューティングエンジン」をご参照ください。
ETL シナリオ
一般的な ETL フローを次の図に示します。
データソースから Application Data Service (ADS) レイヤーへのデータクレンジングやデータ変換などの操作は、通常、時間がかかり、大量のデータが関係します。これらのシナリオでは、クエリ応答時間は主要な懸念事項ではありません。ただし、信頼性は重要であり、システムは自動再試行などの特徴をサポートする必要があります。これらのクエリを XIHE BSP モードで実行することで、XIHE BSP エンジンの高スループット、信頼性の向上、および低コストを活用できます。
ADS レイヤーでのクエリの場合、クエリ応答時間はより重要な要素であり、多くの場合、秒またはミリ秒レベルが期待されます。これらのクエリを XIHE Massively Parallel Processing (MPP) モードで実行することで、XIHE MPP エンジンの高速性を活用できます。
XIHE MPP モードで実行できない大規模クエリ
XIHE MPP 実行モードの制限により、大量のデータが関係する一部のクエリでは、メモリエラーやその他のクエリ例外が発生する可能性があります。これらのクエリを XIHE MPP モードで実行するには、より多くのリソースを追加するためのスケールアウトなどの操作を実行する必要がありますが、これは費用対効果が高くありません。このシナリオでは、XIHE BSP モードでクエリを実行できます。クエリは指定されたジョブリソースグループで実行され、データはディスクに書き込まれます。この方法は、大規模クエリにより適しています。さらに、ジョブリソースグループのリソースはオンデマンドでリクエストおよび支払いが行われるため、このアプローチは費用対効果が高くなります。
バースト的な低優先度クエリ
応答時間は通常、低優先度クエリにとって重要な要素ではありません。ただし、そのバースト的な性質により、システムリソースが不足し、他のクエリの実行に影響を与える可能性があります。このシナリオでは、これらの低優先度クエリをジョブリソースグループに配置して XIHE BSP モードで実行できます。このアプローチにより、システムのリソースの負荷が軽減され、クエリ間の干渉が防止されます。
制限事項
-
XIHE BSP モードでは Hudi テーブルに書き込むことはできません。
-
XIHE BSP モードでは Delta テーブルの読み取りまたは書き込みはできません。
XIHE BSP ジョブの開発
XIHE BSP ジョブは、次のいずれかの方法で開発できます。
SQL 開発エディターを使用した XIHE BSP ジョブの提出
JDBC または MySQL クライアントを使用した XIHE BSP ジョブの同期提出
JDBC または MySQL クライアントを使用した XIHE BSP ジョブの非同期提出
XIHE BSP ジョブの構成
XIHE BSP ジョブのリソース、デフォルトのタイムアウト期間、および優先度を設定できます。
構成方法
BSP ジョブの構成は、単一ジョブ、ジョブリソースグループ内のすべてのジョブ、またはクラスター内のすべてのジョブに適用できます。
単一ジョブへの適用
単一ジョブに構成を適用するには、/*+ resource_group=<resource_group_name>,<config_name>*/ ヒントワードを追加します。
このヒントワードでは、resource_group_name はリソースグループの名前であり、config_name は「設定項目」リストの設定項目名です。
例:この例では、ジョブが bsptest ジョブリソースグループで実行され、最大 20 ACU を使用することを指定します。
/*+ resource_group=bsptest,elastic_job_max_acu=20*/SELECT count(*) from test_db.ods_hudi;
リソースグループ内での適用
ジョブリソースグループ内のすべてのジョブに構成を適用するには、SET adb_config <resource_group_name>.<config_name> ステートメントを実行します。
このヒントワードでは、resource_group_name はリソースグループの名前であり、config_name は「設定項目」リストの設定項目名です。
例:この例では、bsptest ジョブリソースグループで実行されるすべてのジョブについて、各ジョブが最大 20 ACU を使用できることを指定します。
SET adb_config bsptest.elastic_job_max_acu=20;
構成が有効になったことの確認
リソースグループの構成が有効になったことを確認するには、SHOW ADB_CONFIG KEY=<resource_group_name>.<config_name> ステートメントを実行します。
クラスター内での適用
クラスター内のすべてのジョブに構成を適用するには、SET adb_config <config_name> ステートメントを実行します。このステートメントでは、config_name は「設定項目」リストの設定項目名です。
例:この例では、クラスターで実行されるすべてのジョブについて、各ジョブが最大 20 ACU を使用できることを指定します。
SET adb_config elastic_job_max_acu=20;
構成が有効になったことの確認
クラスターの構成が有効になったことを確認するには、SHOW ADB_CONFIG KEY=<config_name> ステートメントを実行します。
設定項目
次の表は、XIHE BSP ジョブでサポートされる設定項目について説明しています。
|
カテゴリ |
設定項目名 |
説明 |
デフォルト値 |
|
リソース |
|
単一の XIHE BSP ジョブで使用できる AnalyticDB Compute Units (ACU) の最大数。これには AppMaster およびコンピューティングノードが含まれます。 値は、リソースグループの最大 ACU 数を超えることはできません。 説明
AppMaster ノードは、単一クエリの解析、スケジューリング、および実行を担当します。 |
9 |
|
タイムアウト |
|
BSP ジョブのタイムアウト期間 (ミリ秒 (ms))。BSP ジョブの実行時間がこの値を超えると、ジョブは自動的にキャンセルされます。 |
7200000 |
|
優先度 |
|
BSP ジョブの優先度。 有効な値:HIGH、NORMAL、LOW、および LOWEST。 詳細については、「ジョブリソースグループの優先度キュー」をご参照ください。 |
NORMAL |
よくある質問
BSP ジョブのステータスを確認する方法
-
BSP ジョブがジョブエディターから送信された場合、そのステータスは、 ページの下部にある 実行レコード タブで表示できます。
-
BSP ジョブが別の方法で提出された場合、
information_schema.kepler_meta_elastic_job_listテーブルを照会できます。例:SELECT status FROM information_schema.kepler_meta_elastic_job_list WHERE process_id='<job_id>';説明information_schema.kepler_meta_elastic_job_listテーブルには、過去 30 日間に提出された最後の 1,000 件の BSP タスクに関する情報が保存されます。このテーブルに対して、集約などのさらなる統計分析を実行できます。次の例は、各ステータスの BSP ジョブ数をカウントする方法を示しています。SELECT status,count(*) FROM information_schema.kepler_meta_elastic_job_list GROUP BY status;
BSP ジョブの同期提出と非同期提出の選択
同期提出と非同期提出の間に機能的な違いはありません。唯一の違いは、クライアントがクエリの完了を待つ必要があるかどうかです。
非同期提出には次の制限があります。
-
結果セットには最大 10,000 行を含めることができます。
-
対応する CSV ファイルダウンロードリンクを含む最大 1,000 件の結果セットが、最大 30 日間保存されます。
非同期提出は、時間のかかる計算負荷の高いクエリで、少量の結果セットを返すもの (例:INSERT INTO SELECT、INSERT OVERWRITE SELECT、およびCREATE TABLE AS SELECT) に推奨されます。