AnalyticDB for MySQL は、Spark SQL をバッチとインタラクティブの 2 つのモードで実行することをサポートしています。どちらのモードも AnalyticDB for MySQL メタデータサービスに直接接続し、AnalyticDB for MySQL のデータベースやテーブルの読み書きが可能です。このトピックでは、両実行モードの使用上の注意、ユースケース、特徴、および起動手順について説明します。
バッチ実行
使用上の注意
-
バッチモードで SQL を実行する場合、
USE <database_name>;ステートメントでデータベースを選択してから開始してください。 -
SQL ステートメントでテーブルを指定する場合は、
database_name.table_nameの形式を使用する必要があります。 -
バッチモードで DML ステートメント、DDL ステートメント、または DQL ステートメントを実行すると、システムは成功または失敗のステータスのみを返し、データは返しません。実行が成功すると、結果のサンプルがログに出力されます。SQL ステートメントによって返されるデータを表示するには、Spark アプリケーション情報の表示をご参照ください。
ユースケース
-
相互に依存する複数の SQL ステートメントを実行する場合。
-
SQL ステートメントに対して厳格なリソース分離を適用する場合。
-
大規模なデータを処理する場合。例えば、SQL を使用した 1 回限りの ETL ジョブの実行など。
-
複雑なサードパーティの依存関係パッケージをアップロードして繰り返し実行する場合。
特徴
-
バッチモードで送信された SQL は専用の Spark アプリケーションで実行されるため、安定性が確保されます。
-
SQL ステートメント内で独立した構成設定を定義できます。例えば、
SET spark.sql.adaptive.coalescePartitions.minPartitionSize = 2MB;などです。 -
バッチ SQL ステートメントに SELECT ステートメントが含まれている場合、システムは結果のサンプルをログに出力します。
起動方法
SQL コンソール で、ジョブリソースグループと Spark エンジンを選択し、SQL ステートメントを入力して 実行 をクリックします。
インタラクティブ実行
使用上の注意
-
インタラクティブモードでは、DQL ステートメントは最大 1,000 行を返します。
-
インタラクティブモードで実行される DDL ステートメント (
CREATE TABLEなど) は、成功または失敗のステータスのみを返し、テーブルのデータは返しません。この動作はオープンソースの慣例に準拠しています。 -
Spark インタラクティブリソースグループの起動には時間がかかります。起動に失敗した場合は、しばらく待ってから再試行してください。
ユースケース
-
完全な結果セットが不要なアドホッククエリを実行する場合。
-
大量の DDL ステートメントを実行する場合。
-
リソース分離や時折の失敗が許容される環境で、DQL ステートメントを即座に実行する場合。
特徴
-
リソース分離はスレッドレベルです。同じ Spark アプリケーションで SQL を実行する複数のユーザーは、相互に干渉する可能性があります。
-
SQL ステートメントを使用して、スレッドレベルの構成設定を適用できます。
-
アプリケーションレベルの構成設定は、Spark インタラクティブリソースグループを再起動して初めて有効になります。アプリケーションレベルの設定を変更するには、まず Spark インタラクティブリソースグループを停止し、パラメータを設定してから、Spark インタラクティブリソースグループを再起動する必要があります。
起動方法
SQL コンソール で、Spark インタラクティブリソースグループと Spark エンジンを選択し、SQL ステートメントを入力して 実行 をクリックします。