MaxQA(MaxCompute Query Accelerator)エンジンは、ニアリアルタイム シナリオ向けにクエリのパフォーマンスを最適化します。専用のクエリ計算リソースプール内で動作し、コントロールプレーン、クエリ オプテマイザー、実行エンジン、ストレージエンジン、キャッシュ機構など複数のコンポーネントを包括的に最適化します。これにより、低遅延と高安定性が求められる BI シナリオ、インタラクティブ分析、およびリアルタイムデータウェアハウスに最適です。本トピックでは、MaxQA エンジンの使用方法について説明します。
サービスの可用性
リージョン別の提供スケジュール
リージョン | パブリックベータ | 一般提供開始 |
中国 (杭州) | 2025 年 2 月 17 日 | 2025 年 11 月 24 日 |
中国 (上海) | ||
中国 (北京) | ||
中国 (深セン) | ||
中国 (ウランチャブ) | ||
中国 (香港) | 2025 年 3 月 5 日 | 2025 年 11 月 27 日 |
日本 (東京) | 2025 年 3 月 5 日 | |
シンガポール | 2025 年 3 月 20 日 | |
インドネシア (ジャカルタ) | ||
ドイツ (フランクフルト) | 2025 年 3 月 31 日 | |
米国 (シリコンバレー) | ||
米国 (バージニア) |
注記
新規のインタラクティブ クォータグループは、デフォルトで MaxQA モードになります。既存の MaxQA には影響しません。
MaxQA の基本操作
MaxQA インスタンスの作成
MaxQA は、サブスクリプション課金方法を使用する MaxCompute プロジェクトでのみ利用可能です。MaxQA インスタンスを作成するには、次の手順を実行します。
MaxCompute コンソールにログインし、左上隅でリージョンを選択します。
左側のナビゲーションウィンドウで、 を選択します。
クォータ管理 ページで、対象クォータの 操作 列にある クォータ設定 をクリックします。
基本構成
クォータ設定 ページで、基本設定 タブを選択し、基本設定の編集 をクリックします。
新しいレベル2クォータ をクリックし、クォータ名 を入力し、データ型 として インタラクティブ を選択します。
MaxQA を使用する際は、クォータ名 を指定する必要があります。複数のインスタンスを区別しやすくするため、ビジネス属性に関連した名前を使用することを推奨します。
インタラクティブ クォータは、クエリアクセラレーション(MaxQA)ジョブの実行専用です。
決定 をクリックします。
インスタンスを作成後、対応するインタラクティブ クォータグループのステータスは 開始 に変化します。ステータスが 操作中 に変わるまで 5~8 分ほどお待ちください。その後、インスタンスを使用できます。
MaxQA インスタンスの削除
クォータ管理 ページで、対象クォータの 操作 列にある クォータ設定 をクリックします。
クォータ設定 ページで、基本設定 タブを選択し、対象のインタラクティブ クォータの 操作 列にある 削除 をクリックします。
削除操作はバックグラウンドで実行されます。ページにはステータスの更新や削除の進捗状況は表示されません。
MaxQA インスタンスのスケーリング
ビジネスニーズに応じて、インタラクティブ クォータグループをスケールアウトまたはスケールインできます。次の手順を実行してください。
クォータ管理 ページで、対象クォータの 操作 列にある クォータ設定 をクリックします。
クォータ設定 ページで、基本設定 タブを選択し、基本設定の編集 をクリックします。
新しいレベル2クォータ をクリックし、スケールアップまたはスケールダウンするインタラクティブ クォータグループの 予約cu数量 [mincu、maxcu] を調整します。値を大きくするとスケールアップ、小さくするとスケールダウンになります。
説明CU の最小増分は 25 です。
CU の最小値は 25 以上である必要があります。インタラクティブ リソースが不要になった場合は、値を
0に設定するか、対応するクォータグループを削除してください。インタラクティブ クォータに対して 予約弾性cu を設定することはできません。
決定 をクリックします。
インタラクティブ クォータグループの予約 CU 調整が開始されます。
インタラクティブ クォータグループの 操作 列に プロセスの拡張 または ボリュームを縮小する が表示されます。スケールアウトには約 5~8 分かかります。スケールインは、現在実行中のジョブの完了タイミングによって時間がかかる場合があります。最悪の場合、削除対象マシン上のジョブがタイムアウトするまで待機する必要があり、スケールイン操作開始前にすべてのジョブが完了することを保証します。スケーリング操作中もジョブに影響はありません。
MaxQA の時間ベーススケーリングの構成
スケジュールされたスケーリングを行うには、時間ベーススケーリングプラン を構成します。次の手順を実行してください。
クォータ管理 ページで、対象クォータの 操作 列にある クォータ設定 をクリックします。
クォータ設定 ページで、スケーリング設定 タブを選択します。
時間ベーススケーリングプランの構成
スケーリング設定 タブで、新しい構成スキーム をクリックします。新しい構成スキーム ダイアログボックスで、構成スキーム名 を入力し、レベル 2 クォータの 予約cu数量 [mincu、maxcu] を構成します。
既存の構成プランを変更する場合:
スケーリング設定 タブで、対象プランの 操作 列にある 編集 をクリックして更新します。
時間ベーススケジュールの構成
スケーリング設定 タブで、タイムシェアリング管理 セクションの タイムプランの編集 をクリックします。
[有効期間を追加]をクリックし、次に[開始時刻] と[設定シナリオプラン]を選択します。
これにより、1 日の異なる時間帯に異なるクォータ構成プランをアクティブ化できます。詳細については、「計算リソースとクォータの管理」をご参照ください。
スケジューリングポリシー
ジョブを送信する際は、クライアントまたは JDBC 接続文字列で、明示的にインタラクティブ クォータグループの名前を指定する必要があります。これにより、ジョブは対応する MaxQA インスタンス上でスケジューリングされて実行されます。
フォールバックポリシー
MaxQA は自動フォールバックポリシーをサポートしていません。MaxQA ジョブが使用量制限などの理由で失敗した場合は、手動で再送信するか、バッチ クォータグループに送信する必要があります。
アクセス方法
MaxQA には、次の方法でアクセスできます。
MaxCompute クライアントの使用
MaxCompute クライアント(odpscmd)v0.51.1 以降をインストールおよび構成します。詳細については、「ローカルクライアント(odpscmd)を使用した接続」をご参照ください。
(任意)クライアントのインストールディレクトリ内の
confディレクトリで、odps_config.iniファイルの最終行に次のコマンドを追加します。-- MaxQA 接続情報のキャッシュを有効化します。 enable_quota_cache=truebinディレクトリ内のスクリプトファイルを実行して、MaxCompute クライアントを起動します。重要Linux/macOS システムの場合:
odpscmdスクリプトファイルを実行します。Windows の場合:
odpscmd.batファイルをダブルクリックします。
ジョブを実行する前に、次のコマンドを実行します。これにより、クライアントから送信される後続のジョブは、インタラクティブ クォータグループに対応する MaxQA インスタンス上で MaxQA モードで実行されます。
USE QUOTA <name_of_the_interactive_quota_group>;または、セッションレベルで現在のジョブに MaxQA インスタンスを指定することもできます。
SET odps.task.wlm.quota=<name_of_the_interactive_quota_group>;
DataWorks DataStudio の使用
MaxQA は、パブリックプレビュー中の新しいバージョンの DataStudio を使用するワークスペースでのみサポートされています。旧バージョンの DataStudio を使用している場合は、MaxQA を使用するために新しいバージョンにアップグレードする必要があります。詳細については、「新しいバージョンの DataStudio を有効化する」をご参照ください。
DataWorks コンソールにログインし、左上隅でリージョンを選択します。
左側のナビゲーションウィンドウで、 を選択します。
ワークスペースを選択する をクリックし、Go to Data Studio をクリックします。
データ開発ページで、右側の Run Configuration をクリックします。
デバッグ構成ページで、計算リソースとしてこのワークスペースにバインドされている MaxCompute プロジェクトリソースを選択します。次の表は、さまざまなシナリオにおける計算クォータの選択方法を示しています。
説明実行環境:データ分析またはデータ開発モジュールでジョブを実行します。インタラクティブからオフラインへのフォールバックは適用されません。
フォールバック実行環境:スケジューリングモジュールでジョブを実行します。インタラクティブモードを指定した場合、インタラクティブモードが失敗した際にオフラインモードへのフォールバックを構成することもできます。
計算クォータの選択
指定されたクォータ / ルーティングルール
期待される実行モード
スケジューリング構成と期待されるフォールバック
プロジェクトデフォルトクォータ
オフラインルーティングルールが存在する場合、そのルールが適用されます。インタラクティブルーティングルールは適用されません。
プロジェクトデフォルトクォータはオフラインクォータです。ジョブはオフラインクォータ上で実行されます。
ジョブはオフラインクォータ上で実行されます。フォールバックは適用されません。
指定クォータ
オフラインクォータを選択します。
ジョブはオフラインクォータ上で実行されます。
ジョブはオフラインクォータ上で実行されます。フォールバックは適用されません。
指定クォータ
インタラクティブクォータを選択します。
ジョブは、インタラクティブ クォータグループに対応する MaxQA インスタンス上で実行されます。
スケジューリング構成において:フォールバックが無効の場合、フォールバックは試行されません。プロジェクトデフォルトクォータが選択されている場合、プロジェクトデフォルトクォータがフォールバックに使用されます(フォールバック時にはオフラインルーティングルールは適用されません)。特定のクォータが選択されている場合、指定されたオフラインクォータがフォールバックに使用されます。
インタラクティブモードルーティングルール
オフラインルーティングルールのみが存在し、一致するインタラクティブルーティングルールが見つかりません。
エラーが報告されます:
Cannot find MCQA quota to start connection on project *****。作成方法については、「計算リソースのクォータの使用」をご参照ください。フォールバックが無効の場合、フォールバックは試行されません。プロジェクトデフォルトクォータが選択されている場合、プロジェクトデフォルトクォータがフォールバックに使用されます。特定のクォータが選択されている場合、指定されたオフラインクォータがフォールバックに使用されます。
インタラクティブモードルーティングルール
一致するインタラクティブルーティングルールが存在します。
ジョブは、インタラクティブ クォータグループに対応する MaxQA インスタンス上で実行されます。
構成を完了すると、SQL ノード上で実行されるジョブは、インタラクティブ クォータグループに対応する MaxQA インスタンスにスケジューリングされます。
詳細については、「DataWorks での MaxCompute SQL ノードの作成」をご参照ください。
コンソールでの SQL 分析の使用
MaxCompute コンソールにログインし、左上隅でリージョンを選択します。
左側のナビゲーションウィンドウで、 を選択します。
SQL エディターに SQL ステートメントを入力したら、右側の[実行構成]をクリックして、[プロジェクト]と[コンピューティングクォータ]を設定します。
インタラクティブ クォータグループに対応する計算リソースを選択します。
構成を完了すると、SQL 分析ページで実行されるジョブは、インタラクティブ クォータグループに対応する MaxQA インスタンスにスケジューリングされます。
詳細については、「SQL 分析」をご参照ください。
MaxCompute Studio の使用
MaxCompute Studio がインストール済みで、MaxCompute プロジェクトに接続済みであることを確認してください。MaxQA を使用するには、次の手順でスクリプトを実行します。
MaxCompute Studio v4.3.2 以降をインストールおよび構成します。詳細については、「MaxCompute Studio のインストール」をご参照ください。
MaxCompute Studio プロジェクトを作成し、MaxCompute プロジェクトに接続します。詳細については、「プロジェクト接続の管理」をご参照ください。
プロジェクト内に MaxCompute SQL スクリプトを作成します。詳細については、「SQL スクリプトの開発と送信」をご参照ください。
MaxCompute SQL スクリプトに SQL ステートメントを入力し、Execution Mode ドロップダウンリストから MaxQA を選択します。
Specify additional parameters
ボタンをクリックし、インタラクティブ クォータグループ名を入力して、[OK] をクリックします。スクリプトを実行します。これにより、ジョブは MaxQA クエリアクセラレーション機能を使用します。
JDBC の使用
JDBC を使用して MaxCompute に接続する際に MaxQA を有効にするには、次の手順を実行します。JDBC 接続の詳細については、「ユーザーガイド」をご参照ください。
MaxQA サポート付きのソースコードをダウンロードします。
Maven で POM 依存関係を構成します。
<dependency> <groupId>com.aliyun.odps</groupId> <artifactId>odps-jdbc</artifactId> <version>${Latest Version}</version> </dependency>重要上記コード中の
Latest Versionはプレースホルダーです。プロジェクトを正常にコンパイルするには、具体的な SDK バージョン番号に置き換える必要があります。Maven Central Repository にアクセスして、リリース済みの odps-jdbc の全バージョンを確認してください。最新バージョンの使用を推奨します。バージョン番号の形式は X.X.X です。ソースコードから Java プログラムを作成し、環境に合わせて調整します。詳細については、「MaxCompute JDBC」をご参照ください。以下のコードはその例です。
import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class MaxCompute { private static final String DRIVER_NAME = "com.aliyun.odps.jdbc.OdpsDriver"; // Alibaba Cloud アカウントの AccessKey ID には、すべての API オペレーションを呼び出す権限があります。これは高リスク操作です。API オペレーションの呼び出しや日常的な O&M には、RAM ユーザーを作成して使用することを推奨します。RAM ユーザーの作成方法については、RAM コンソールにログインしてください。 // この例では、AccessKey ID と AccessKey Secret を環境変数に格納しています。ビジネスニーズに応じて、設定ファイルに格納することもできます。 // AccessKey ID と AccessKey Secret をコード内にハードコードしないことを強く推奨します。これはセキュリティリスクを伴います。 private static String accessId = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"); private static String accessKey = System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"); public static void main(String[] args) throws SQLException { try { Class.forName(DRIVER_NAME); } catch (ClassNotFoundException e) { e.printStackTrace(); System.exit(1); } Connection conn = DriverManager.getConnection( "jdbc:odps:https://service.cn-hangzhou.maxcompute.aliyun.com/api?project=maxqatomax&charset=UTF-8&interactiveMode=true"aName=maxfor1&autoSelectLimit=1000000000", MaxCompute.accessId, MaxCompute.accessKey); // テーブルの作成 Statement stmt = conn.createStatement(); final String tableName = "jdbc_test11"; stmt.execute("DROP TABLE IF EXISTS " + tableName); stmt.execute("CREATE TABLE " + tableName + " (key BIGINT, value STRING)"); // メタデータの取得 DatabaseMetaData metaData = conn.getMetaData(); System.out.println("product = " + metaData.getDatabaseProductName()); System.out.println("jdbc version = " + metaData.getDriverMajorVersion() + ", " + metaData.getDriverMinorVersion()); ResultSet tables = metaData.getTables(null, "default", tableName, null); while (tables.next()) { String name = tables.getString("TABLE_NAME"); System.out.println("inspecting table: " + name); ResultSet columns = metaData.getColumns(null, null, name, null); while (columns.next()) { System.out.println( columns.getString("COLUMN_NAME") + "\t" + columns.getString("TYPE_NAME") + "(" + columns.getInt("DATA_TYPE") + ")"); } columns.close(); } tables.close(); stmt.close(); conn.close(); } }
以下のコードは、JDBC 接続文字列の例を示しています。
// your_quota_group_name は、使用するインタラクティブ クォータグループの名前です。
jdbc:odps:<MaxCompute_endpoint>?
project=<MaxCompute_project_name>&interactiveMode=true"aName=your_quota_group_name&enableLimit=false&enableOdpsLogger=true"パラメーター | 説明 |
MaxCompute_endpoint | MaxCompute サービスが配置されているリージョンのエンドポイント。詳細については、「エンドポイント」をご参照ください。 |
MaxCompute_project_name | MaxCompute プロジェクトの名前。 |
interactiveMode | MaxQA 機能のスイッチ。 |
quotaName | 使用するインタラクティブ クォータグループの名前。 |
enableLimit | 10,000 行を超えるデータのダウンロードを許可するかどうかを指定します。 |
enableOdpsLogger | ログ出力を有効化します。SLF4J が構成されていない場合に推奨されます。 |
BI ツールの使用
Tableau、Quick BI、Guandata BI、SQL Workbench/J などの BI ツールを使用して MaxQA に接続できます。以下のセクションで手順を説明します。
Tableau
MaxQA 機能を有効にするには、サーバー URL パスに interactiveMode=true プロパティおよび quotaName=your_quota_nick_name プロパティを追加します。ログ出力を有効にするために、enableOdpsLogger=true プロパティの追加も推奨します。詳細な手順については、「Tableau で JDBC を構成する」をご参照ください。
URL 形式:
<MaxCompute_endpoint>?project=<MaxCompute_project_name>&charset=UTF-8&interactiveMode=true"aName=<your_quota_group_name>&autoSelectLimit=1000000000パラメーター
必須
説明
MaxCompute_endpoint
はい
MaxCompute サービスが配置されているリージョンのエンドポイント。詳細については、「エンドポイント」をご参照ください。たとえば、中国 (杭州) リージョンのエンドポイントは
https://service.cn-hangzhou.maxcompute.aliyun.com/apiです。MaxCompute_project_name
はい
MaxCompute プロジェクトの名前(例:
maxqatomax)。your_quota_group_name
はい
インタラクティブ クォータグループの名前(例:
maxfor1)。Alibaba MaxCompute 接続ダイアログボックスの General タブで、構築した URL を Server フィールドに入力します。Username フィールドに AccessKey ID を、Password フィールドに AccessKey Secret を入力し、Sign In をクリックします。
URL の例:
https://service.cn-hangzhou.maxcompute.aliyun.com/api?project=maxqatomax&charset=UTF-8&interactiveMode=true"aName=maxfor1&autoSelectLimit=1000000000
Quick BI
Quick BI コンソールにログインします。
左側のナビゲーションウィンドウで Data Sources を選択し、右上隅で Create Data Source をクリックします。
Create data source ページで、MaxCompute を選択します。
Configure connection ページで、Quota computing resource group に MaxQA クォータ計算リソースの名前を入力して MaxQA 機能を有効にし、MaxQA 計算リソースを使用します。詳細については、「Quick BI による MaxCompute への接続」をご参照ください。
たとえば、Quota Computing Resource Group フィールドに maxqa(MaxQA クォータ名)を入力します。
Guandata BI
ドライバーの追加
Guandata BI に MaxCompute JDBC ドライバー v3.8.5 以降をアップロードします。詳細については、「MaxCompute JDBC」および「リリースノート」をご参照ください。
Guandata BI コンソールの右上隅で
アイコンをクリックし、管理センター に移動します。システム設定 > 一般設定 をクリックし、ドライバーとコネクタ ページに移動します。
ドライバー管理 タブで、ドライバーの追加 をクリックし、ドライバー名 を入力して構成を保存します。
新規ドライバーの名前をクリックします。ドライバーリスト セクションで、ファイルのアップロード をクリックして MaxCompute JDBC ドライバーをアップロードします。次に、ドライバー として com.aliyun.odps.jdbc.OdpsDriver を選択し、適用 をクリックします。
MaxQA を使用して MaxCompute データソースに接続するデータアカウントを作成します。
トップメニューバーで、データ準備 をクリックします。
左側のウィンドウで、データアカウント タブをクリックします。右上隅で、新規データアカウント をクリックし、指示に従ってアカウントを構成します。
パラメーター
説明
コネクタの選択
MaxCompute を選択します。
データアカウントの構成
接続方法
JDBC URL を選択します。
ログイン ID
ご利用の Alibaba Cloud アカウントの AccessKey ID。
ログインキー
ご利用の Alibaba Cloud アカウントの AccessKey Secret。
JDBC URL
MaxQA JDBC 接続文字列の URL 形式は次のとおりです:
jdbc:odps:<maxcompute_endpoint>?project=<maxcompute_projectName>&charset=UTF-8&interactiveMode=true"aName=<your_quota_nickName>&autoSelectLimit=1000000000。以下の表はパラメーターの説明です。
maxcompute_endpoint:MaxCompute サービスが配置されているリージョンのエンドポイント。詳細については、「エンドポイント」をご参照ください。たとえば、中国 (杭州) リージョンのエンドポイントはhttps://service.cn-hangzhou.maxcompute.aliyun.com/apiです。maxcompute_projectName:MaxCompute プロジェクト名(例:maxqatomax)。your_quota_nickName:使用するインタラクティブ クォータグループの名前(例:maxfor1)。インタラクティブ クォータグループの作成方法については、「計算リソース - クォータ管理」をご参照ください。
例:
jdbc:odps:https://service.cn-hangzhou.maxcompute.aliyun.com/api?project=maxqatomax&charset=UTF-8&interactiveMode=true"aName=maxfor1&autoSelectLimit=1000000000SQL バージョン
2.0/hive 互換モード を選択します。
最大接続数
デフォルト値は 16 です。
driver
カスタム を選択し、作成したドライバーを選択します。
接続テスト をクリックします。Connection Successful メッセージが表示されたら、次へ をクリックします。
データアカウント情報を確認し、カスタムの 表示名 を入力して、確認して作成 をクリックします。
SQL Workbench/J
SQL Workbench/J で MaxQA を有効にするには、プロファイル構成インターフェイスで JDBC URL を変更します。詳細については、「JDBC を使用した SQL Workbench/J の構成」をご参照ください。
URL 形式:
jdbc:odps:<MaxCompute_endpoint>? project=<MaxCompute_project_name>&charset=UTF-8&interactiveMode=true"aName=<your_quota_group_name>&autoSelectLimit=1000000000"パラメーター
必須
説明
MaxCompute_endpoint
はい
MaxCompute サービスリージョンのエンドポイント。詳細については、「エンドポイント」をご参照ください。たとえば、中国 (杭州) リージョンの場合、エンドポイントは
https://service.cn-hangzhou.maxcompute.aliyun.com/apiです。MaxCompute_project_name
はい
MaxCompute プロジェクト名(例:
maxqatomax)。your_quota_group_name
はい
使用するインタラクティブ クォータグループの名前(例:
maxfor1)。URL の例:
jdbc:odps:https://service.cn-hangzhou.maxcompute.aliyun.com/api?project=maxqatomax&charset=UTF-8&interactiveMode=true"aName=maxfor1&autoSelectLimit=1000000000
Java SDK の使用
Java SDK の詳細については、「Java SDK の概要」をご参照ください。
Maven で POM 依存関係を構成します。以下のコードはその例です。
<dependency> <groupId>com.aliyun.odps</groupId> <artifactId>odps-sdk-core</artifactId> <version>${Latest Version}</version> </dependency>重要上記コード中の
Latest Versionはプレースホルダーです。プロジェクトを正常にコンパイルするには、具体的な SDK バージョン番号に置き換える必要があります。Maven Central Repository にアクセスして、リリース済みの odps-sdk-core の全バージョンを確認してください。最新バージョンの使用を推奨します。バージョン番号の形式は X.X.X-public です。Java プログラムを作成します。以下のコードはその例です。
import com.aliyun.odps.Odps; import com.aliyun.odps.OdpsException; import com.aliyun.odps.account.Account; import com.aliyun.odps.account.AliyunAccount; import com.aliyun.odps.sqa.ExecuteMode; import com.aliyun.odps.sqa.SQLExecutor; import com.aliyun.odps.sqa.SQLExecutorBuilder; import java.util.HashMap; import java.util.Map; public class MaxCompute { public static void main(String args[]) { // アカウントおよびプロジェクト情報を設定します。 // Alibaba Cloud アカウントの AccessKey ID には、すべての API オペレーションを呼び出す権限があります。これは高リスク操作です。API オペレーションの呼び出しや日常的な O&M には、RAM ユーザーを作成して使用することを推奨します。RAM ユーザーの作成方法については、RAM コンソールにログインしてください。 // この例では、AccessKey ID と AccessKey Secret を環境変数に格納しています。ビジネスニーズに応じて、設定ファイルに格納することもできます。 // AccessKey ID と AccessKey Secret をコード内にハードコードしないことを強く推奨します。これはセキュリティリスクを伴います。 Account account = new AliyunAccount(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); Odps odps = new Odps(account); odps.setDefaultProject("maxqatomax"); odps.setEndpoint("https://service.cn-hangzhou.maxcompute.aliyun.com/api"); // SQLExecutor の構築を準備します。 SQLExecutorBuilder builder = SQLExecutorBuilder.builder(); SQLExecutor sqlExecutor = null; try { // MaxQA モードをデフォルトで使用するエグゼキュータを作成します。 // enableMcqaV2(true) で MaxQA モードを有効化します sqlExecutor = builder.odps(odps) .executeMode(ExecuteMode.INTERACTIVE) .quotaName("maxfor1") .enableMcqaV2(true) .build(); // 必要に応じて、クエリのカスタム設定を渡すことができます。 Map<String, String> queryHint = new HashMap<>(); queryHint.put("odps.sql.mapper.split.size", "128"); // クエリジョブを送信します。ヒントワードを渡すことができます。 sqlExecutor.run("select count(1) from test_table;", queryHint); // 現在のクエリジョブの Logview。 System.out.println("Logview:" + sqlExecutor.getLogView()); // 現在のクエリジョブのインスタンス ID。 System.out.println("InstanceId:" + sqlExecutor.getQueryId()); } catch (OdpsException e) { e.printStackTrace(); } finally { if (sqlExecutor != null) { // リソースを解放するためにエグゼキュータをクローズします。 sqlExecutor.close(); } } } }
PyODPS の使用
PyODPS v0.12.1 以降は MaxQA をサポートしています。以下のコードはその例です。
import os
from odps import ODPS
# アカウントおよびプロジェクト情報を設定します。
# ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET
# 環境変数が、ご利用の AccessKey ID および AccessKey Secret に設定されていることを確認してください。
# AccessKey ID および AccessKey Secret 文字列を直接使用することは推奨しません。
o = ODPS(
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
project='maxto****',
endpoint='https://service.cn-hangzhou.maxcompute.aliyun.com/api',
)
# 必要に応じて、クエリのカスタム設定を渡すことができます。
hints = {"odps.sql.mapper.split.size": "128"}
inst = o.execute_sql_interactive(
'select count(1) from test_table',
use_mcqa_v2=True,
quota_name='maxfor1',
# quota_name には、MaxQA インスタンスのインタラクティブ クォータグループの名前を設定します。
hints=hints,
)
# 現在のクエリジョブの Logview。
print(inst.get_logview_address())
# 現在のクエリジョブのインスタンス ID。
print(inst.id)
# 行単位でデータを読み取ります。
with inst.open_reader() as reader:
result = [res.values for res in reader]SQLAlchemy または SQLAlchemy をサポートするサードパーティ製ツールと PyODPS を使用したクエリアクセラレーション
PyODPS v0.12.2 以降では、SQLAlchemy を使用して MaxQA 経由で MaxCompute データをクエリできます。接続文字列で次のパラメーターを指定する必要があります。
パラメーター | 必須 | 説明 |
interactive_mode=v2 | はい | クエリアクセラレーション機能のメインスイッチ。 |
quota_name=<YOUR_INTERACTIVE_QUOTA_GROUP_NAME> | はい | インタラクティブ クォータグループの名前。 |
reuse_odps=true | いいえ | 強制的な接続の再利用を有効化します。Apache Superset などの一部のサードパーティ製ツールでは、このオプションによりパフォーマンスが向上します。 |
たとえば、次の接続文字列は MaxQA と強制的な接続の再利用を有効化します。
odps://<access_id>:<ACCESS_KEY>@<project>/?endpoint=<endpoint>"a_name=<YOUR_INTERACTIVE_QUOTA_GROUP_NAME>&interactive_mode=v2&reuse_odps=trueジョブが MaxQA モードを使用しているかどうかの確認
Logview ページから
ジョブ完了後、その Logview ページにアクセスして MaxQA モードを使用していたかどうかを確認します。以下の点をチェックしてください。
MaxCompute InstanceId が
_mcqaで終わっていること。クォータ ニックネームは、指定されたインタラクティブなクォータの名前です。
[概要] タブで、ジョブの実行モードが
mcqa 2.0であること。
ジョブ O&M ページから
MaxCompute コンソールにログインし、左上隅でリージョンを選択します。
左側のナビゲーションウィンドウで、 を選択します。
操作とメンテナンス ページで、共通リスト タブをクリックし、ジョブタイプ を MCQA2 に設定して、指定された 時間範囲 内の MaxQA ジョブを表示します。