すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:StarRocks コネクタ

最終更新日:Nov 09, 2025

StarRocks コネクタは、データをインポートしたり外部テーブルを作成したりすることなく、外部カタログを使用して MaxCompute データソースにシームレスにアクセスし、複雑な SQL クエリを実行します。これにより、データ分析の効率が向上し、運用の難しさとコストが削減されます。このトピックでは、StarRocks コネクタを使用して MaxCompute にアクセスする方法について説明します。

背景情報

StarRocks は、次世代の高速 Massively Parallel Processing (MPP) データベースです。StarRocks は、多次元分析、カスタムレポート作成、リアルタイムデータ分析、アドホックデータ分析など、さまざまなエンタープライズレベルの分析要件を満たします。StarRocks の詳細については、「StarRocks とは」をご参照ください。StarRocks はデータカタログ機能をサポートしています。データカタログ機能を使用すると、同じシステム内で内部データと外部データを管理できます。これにより、さまざまな外部データソースからデータに簡単にアクセスしてクエリを実行できます。詳細については、「カタログの概要」をご参照ください。

前提条件

制限事項

  • 標準テーブル、パーティションテーブル、クラスター化テーブル、Delta テーブル、マテリアライズドビューからデータを読み取ることができます。外部テーブルや論理ビューからデータを読み取ることはできません。

  • JSON データを読み取ることはできません。

  • スキーマ機能が有効になっていない MaxCompute プロジェクトのみがサポートされます。スキーマ機能の詳細については、「スキーマ関連の操作」をご参照ください。

MaxCompute カタログの作成

StarRocks クラスターにログインし、MaxCompute カタログを作成します。外部カタログの詳細については、「CREATE EXTERNAL CATALOG」をご参照ください。

構文

CREATE EXTERNAL CATALOG <catalog_name>
[COMMENT <comment>]
PROPERTIES
(
    "type" = "odps",
    CatalogParams,
    ScanParams,
    CachingMetaParams
)

パラメーター

  • 共通パラメーター

    パラメーター

    必須

    説明

    catalog_name

    はい

    MaxCompute カタログの名前。名前は次の要件を満たす必要があります:

    • 名前には、文字 (a~z または A~Z)、数字 (0~9)、またはアンダースコア (_) のみを含めることができ、文字で始まる必要があります。

    • 名前の長さは 1,023 文字を超えることはできません。

    • カタログ名では大文字と小文字が区別されます。

    type

    はい

    データソースのタイプ。このパラメーターを odps に設定します。

    comment

    いいえ

    MaxCompute カタログの説明。

    CatalogParams

    はい

    StarRocks が MaxCompute に接続するために使用されるパラメーター。

    ScanParams

    いいえ

    StarRocks が MaxCompute ファイルストレージに接続するために使用されるパラメーター。

    CachingMetaParams

    いいえ

    メタデータキャッシュポリシーを定義するパラメーター。

  • CatalogParams で設定可能なパラメーター

    パラメーター

    必須

    説明

    odps.endpoint

    はい

    MaxCompute サービスのエンドポイント。このパラメーターは、MaxCompute プロジェクトを作成する際に選択したリージョンとネットワーク接続モードに基づいて設定する必要があります。さまざまなリージョンとネットワーク接続モードに対応するエンドポイントの詳細については、「エンドポイント」をご参照ください。

    重要

    Alibaba Cloud VPC ネットワークのみがサポートされています。

    odps.project

    はい

    MaxCompute プロジェクトの名前。MaxCompute コンソールにログインし、左側のナビゲーションウィンドウで [ワークスペース] > [プロジェクト管理] を選択して MaxCompute プロジェクト名を取得します。

    説明

    ワークスペースが標準モードの場合、このパラメーターを設定する際に、開発環境 (_dev) のプロジェクト名と本番環境のプロジェクト名を区別する必要があります。

    odps.access.id

    はい

    Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID。AccessKey 管理ページに移動して AccessKey ID を取得できます。

    odps.access.key

    はい

    AccessKey ID に対応する AccessKey Secret。

    odps.tunnel.quota

    はい

    MaxCompute へのアクセスに使用されるクォータの名前。MaxCompute へのアクセスには、Data Transmission Service (サブスクリプション) の専用リソースグループとオープンストレージ (従量課金) の 2 種類のリソースがサポートされています。クォータ名は 1 つだけ指定できます。

    • サブスクリプション: MaxCompute コンソールにログインし、左上のリージョンを切り替えてから、左側のナビゲーションウィンドウで [ワークスペース] > [クォータ管理] を選択して、利用可能なクォータのリストを表示します。詳細については、「コンピューティングリソース - クォータ管理」をご参照ください。

    • 従量課金: MaxCompute コンソールにログインし、左上のリージョンを切り替えてから、左側のナビゲーションウィンドウで [テナント管理] > [テナントプロパティ] を選択します。[オープンストレージ (ストレージ API)] スイッチをオンにして、必要な権限を付与します。

  • ScanParams で設定可能なパラメーター

    パラメーター

    必須

    説明

    odps.split.policy

    いいえ

    データスキャン中に使用されるデータシャーディングポリシー。有効な値:

    • size: データはデータサイズによってシャーディングされます。これはデフォルト値です。シャーディングのデフォルトサイズは 256 MB です。

    • row_offset: データは行数によってシャーディングされます。

    説明

    シャーディングポリシーは、コンピュートエンジンのデータスキャン同時実行性に大きく影響します。デフォルトのポリシーがビジネス要件を満たさない場合は、row_offset ポリシーを odps.split.row.count パラメーターと組み合わせて使用して、必要に応じて調整できます。

    odps.split.row.count

    いいえ

    各シャードに含まれるデータの最大行数。デフォルト値: 4194304。値の範囲: 0 より大きい値。

    説明

    このパラメーターは、odps.split.policy パラメーターを row_offset に設定した場合にのみ必須です。

  • CachingMetaParams で設定可能なパラメーター

    パラメーター

    必須

    説明

    odps.cache.table.enable

    いいえ

    テーブルメタデータをキャッシュするかどうかを指定します。有効な値:

    • true: テーブルメタデータをキャッシュします。これはデフォルト値です。テーブルメタデータのキャッシュは、メタデータの取得と更新の速度を向上させるのに役立ちます。テーブルメタデータのキャッシュは、DDL 操作を頻繁に実行する必要があるシナリオ、複数のユーザーが関与する大規模な環境が使用されるシナリオ、または複雑なクエリを最適化したいシナリオに適しています。

    • false: テーブルメタデータをキャッシュしません。キャッシュリソースは限られており、キャッシュに過度に依存するとメモリリソースが枯渇する可能性があります。データを頻繁にクエリする必要がないシナリオや、テーブルメタデータが頻繁に変更されるシナリオでは、テーブルメタデータのキャッシュを無効にできます。

    odps.cache.table.expire

    いいえ

    キャッシュされたテーブルメタデータが自動的に削除されるまでの期間。単位: 秒 (s)。デフォルト値: 86400 (24 時間に相当)。値の範囲: 0 以上。

    odps.cache.table.size

    いいえ

    メタデータをキャッシュする必要があるテーブルの数。デフォルト値: 1000。

    odps.cache.partition.enable

    いいえ

    目的のテーブル内のすべてのパーティションのメタデータをキャッシュするかどうかを指定します。有効な値:

    • true: 目的のテーブル内のすべてのパーティションのメタデータをキャッシュします。これはデフォルト値です。

    • false: 目的のテーブル内のどのパーティションのメタデータもキャッシュしません。

    説明

    odps.cache.partition.enable パラメーターは、パーティション化されていないテーブルには効果がありません。

    odps.cache.partition.expire

    いいえ

    キャッシュされたすべてのパーティションのメタデータが自動的に削除されるまでの期間。単位: 秒 (s)。デフォルト値: 86400 (24 時間に相当)。値の範囲: 0 以上。

    odps.cache.partition.size

    いいえ

    キャッシュできるパーティションテーブルの数。デフォルト値: 1000。

    odps.cache.table-name.enable

    いいえ

    MaxCompute プロジェクト内のすべてのテーブルの名前をキャッシュするかどうかを指定します。有効な値:

    • true: MaxCompute プロジェクト内のすべてのテーブルの名前をキャッシュします。

    • false: MaxCompute プロジェクト内のすべてのテーブルの名前をキャッシュしません。これはデフォルト値です。

    odps.cache.table-name.expire

    いいえ

    MaxCompute プロジェクト内のテーブルのキャッシュされた名前が自動的に削除されるまでの期間。単位: 秒 (s)。デフォルト値: 86400 (24 時間に相当)。値の範囲: 0 以上。

このセクションでは、odps_catalog という名前の MaxCompute カタログを作成する例を示します。この例では、MaxCompute プロジェクト mf_mc_bj を使用します。

-- カタログを作成します。
CREATE EXTERNAL CATALOG odps_catalog PROPERTIES(
    "type"="odps",
    "odps.access.id"="<yourAccessKeyId>",
    "odps.access.key"="<yourAccessKeySecret>",
    "odps.endpoint"="http://service.cn-beijing.maxcompute.aliyun.com/api",
    "odps.tunnel.quota"="pay-as-you-go",
    "odps.project"="mf_mc_bj"
);

MaxCompute へのアクセス

  1. 作成した MaxCompute カタログとプロジェクトに切り替えます。この例では、MaxCompute カタログ odps_catalog と MaxCompute プロジェクト mf_mc_bj を使用します。

    • 構文

      • 方法 1

        -- カタログを指定します。
        SET CATALOG <catalog_name>;
        -- MaxCompute プロジェクトを指定します。
        USE <project_name>;
      • 方法 2

        USE <catalog_name>.<project_name>;
    • SET CATALOG odps_catalog;
      USE mf_mc_bj;
  2. データをクエリします。この例では、src テーブルを使用します。

SELECT * FROM src LIMIT 10;

次の結果が返されます。

+------+-------+
| key  | value |
+------+-------+
| 1    | 1     |
| 3    | 3     |
| 2    | 2     |
| 4    | 100   |
| 5    | 200   |
| 6    | 300   |
| 3    | 400   |
+------+-------+

その他の操作

MaxCompute カタログの表示

  • 現在の StarRocks クラスター内のすべてのカタログをクエリします。

    SHOW CATALOGS;

    次の結果が返されます。

    +-----------------+----------+------------------------------------------------------------------+
    | Catalog         | Type     | Comment                                                          |
    +-----------------+----------+------------------------------------------------------------------+
    | default_catalog | Internal | An internal catalog contains this cluster‘s self-managed tables. |
    | odps_catalog    | Odps     | NULL                                                             |
    +-----------------+----------+------------------------------------------------------------------+
  • 特定のカタログの作成ステートメントをクエリします。

    SHOW CREATE CATALOG odps_catalog;

    次の結果が返されます。

    +--------------+--------------------------------------------------------------------------+
    | Catalog      | Create Catalog                                                           |
    +--------------+--------------------------------------------------------------------------+
    | odps_catalog | CREATE EXTERNAL CATALOG `odps_catalog`
                     PROPERTIES ("odps.endpoint"  =  "http://service.cn-beijing.maxcompute.aliyun.com/api",
                     "odps.access.id"  =  "<yourAccessKeyId>",
                     "odps.access.key"  =  "<yourAccessKeySecret>",
                     "odps.project"  =  "odps_project",
                     "type"  =  "odps"
                    )|
    +-----------------------------------------------------------------------------------------+

MaxCompute テーブルのテーブルスキーマの表示

  • MaxCompute テーブルのスキーマをクエリします。

    • 構文

      DESC[RIBE] <catalog_name>.<database_name>.<table_name>;
    • パラメーター

      • catalog_name: 必須。カタログの名前。

      • database_name: 必須。カタログ内の MaxCompute プロジェクトの名前。

      • table_name: 必須。MaxCompute プロジェクト内のテーブルの名前。

    • DESC odps_catalog.mf_mc_bj.src;

      次の結果が返されます。

      +-------+------+------+-------+---------+-------+
      | Field | Type | Null | Key   | Default | Extra |
      +-------+------+------+-------+---------+-------+
      | id    | INT  | Yes  | false | NULL    |       |
      | a     | INT  | Yes  | false | NULL    |       |
      +-------+------+------+-------+---------+-------+
  • MaxCompute テーブルのスキーマとその作成ステートメントをクエリします。

    • 構文

      SHOW CREATE TABLE <catalog_name>.<database_name>.<table_name>;
    • パラメーター

      • catalog_name: 必須。カタログの名前。

      • database_name: 必須。カタログ内の MaxCompute プロジェクトの名前。

      • table_name: 必須。MaxCompute プロジェクト内のテーブルの名前。

    • SHOW CREATE TABLE odps_catalog.mf_mc_bj.src;

      次の結果が返されます。

      +-------+--------------------------------------------------------------------------------+
      | Table | Create Table                                                                   |
      +-------+--------------------------------------------------------------------------------+
      | src   | CREATE TABLE `src` (
        `id` int(11) DEFAULT NULL,
        `a` int(11) DEFAULT NULL
      ) |
      +-------+--------------------------------------------------------------------------------+

MaxCompute カタログの削除

次のコマンドを実行して、MaxCompute カタログを削除できます。

DROP CATALOG odps_catalog;

コストベースオプティマイザー (CBO) の統計情報の収集

StarRocks は、MaxCompute テーブルの統計情報の自動収集をサポートしていません。次のコマンドを実行して、統計情報を収集するタスクを手動で作成できます。

-- <table_name> を MaxCompute テーブルの名前に置き換えます。
ANALYZE TABLE <table_name>;
説明

StarRocks コストベースオプティマイザー (CBO) は、さまざまな種類の統計情報に基づいて SQL クエリの実行コストを推定し、数万の潜在的な実行計画の中から最もコストの低い実行計画を選択します。これにより、複雑なクエリの効率とパフォーマンスが向上します。詳細については、「CBO の統計情報を収集する」をご参照ください。

キャッシュされたメタデータの手動更新

デフォルトでは、StarRocks はクエリのパフォーマンスを向上させるために MaxCompute メタデータをキャッシュします。テーブルスキーマを変更したり、テーブル内のデータを更新したりした場合は、テーブルのメタデータを手動で更新できます。これにより、StarRocks は最新のメタデータキャッシュをできるだけ早く取得できます。

-- <table_name> を MaxCompute テーブルの名前に置き換えます。
REFRESH EXTERNAL TABLE <table_name>;

よくある質問

データ読み取り中に「Your slot quota is exceeded」というエラーメッセージが報告される。

  • 問題分析

    このエラーは、データ読み取り操作が Data Transmission Service のクォータを超えた場合に発生します。StarRocks がデータを読み取る際、テーブルを複数のシャードに分割し、それらをバックエンド (BE) ノードに分散します。その後、BE ノードはスレッドプールを使用してデータを同時に読み取ります。したがって、読み取り操作中に占有されるスロット数は、通常、次のように計算されます: Max(シャード数, BE 数 × BE スレッドプールの同時実行数)

  • 解決策

    • 高い同時実行性をサポートする Data Transmission Service の専用リソースグループを購入します。詳細については、「Data Transmission Service の専用リソースグループの購入と使用」をご参照ください。

    • ScanParams パラメーターを設定して、シャードの数を調整します。row_offset シャーディングポリシーを使用する場合は、odps.split.row.count パラメーターの値を増やす必要もあります。

    • scanner_thread_pool_queue_size および scanner_thread_pool_thread_num パラメーターを変更して、StarRocks BE スレッドプールのスレッド数を変更します。これらのパラメーターの変更方法の詳細については、「StarRocks とは」をご参照ください。

付録: データの型のマッピング

MaxCompute のフィールドデータの型

StarRocks のフィールドデータの型

BOOLEAN

BOOLEAN

TINYINT

TINYINT

SMALLINT

SMALLINT

INT

INT

BIGINT

BIGINT

FLOAT

FLOAT

DOUBLE

DOUBLE

DECIMAL(p, s)

DECIMAL(p, s)

STRING

VARCHAR(1073741824)

VARCHAR(n)

VARCHAR(n)

CHAR(n)

CHAR(n)

JSON

VARCHAR(1073741824)

BINARY

VARBINARY

DATE

DATE

DATETIME

DATETIME

TIMESTAMP

DATETIME

重要

StarRocks は TIMESTAMP データの型をサポートしていません。StarRocks が TIMESTAMP 型のデータを読み取る際、StarRocks はデータのデータ型を DATETIME に変換するため、データの精度が失われます。

ARRAY

ARRAY

MAP

MAP

STRUCT

STRUCT