メインコンテンツまでスキップ
バージョン: 26.x

MaxCompute カタログ

MaxComputeは、Alibaba Cloud上のエンタープライズレベルのSaaS(Software as a Service)クラウドデータウェアハウスです。MaxComputeが提供するオープンストレージSDKを通じて、DorisはMaxComputeTable情報にアクセスし、クエリを実行できます。

適用シナリオ

シナリオ説明
データ統合MaxComputeデータを読み取り、Doris内部Tableに書き込む。
データ書き戻しサポートされていません。

注意事項

  1. バージョン2.1.7以降、MaxCompute Catalogはopen storage SDKに基づいて開発されています。それ以前は、Tunnel APIに基づいて開発されていました。

  2. open storage SDKの使用には一定の制限があります。このドキュメントUsage Restrictionsセクションを参照してください。

  3. Dorisバージョン3.1.3より前では、MaxComputeのProjectはDorisのDatabaseに相当します。3.1.3以降では、mc.enable.namespace.schemaパラメータを使用してMaxComputeスキーマレベルを導入できます。

Catalogの設定

構文

CREATE CATALOG [IF NOT EXISTS] catalog_name PROPERTIES (
'type' = 'max_compute',
{McRequiredProperties},
{McOptionalProperties},
{CommonProperties}
);
  • {McRequiredProperties}

    Property NameデスクリプションSupported Doris Version
    mc.default.projectアクセスしたいMaxComputeプロジェクト名。MaxCompute Project Listで作成・管理できます。
    mc.access_keyAccessKey。Alibaba Cloud Consoleで作成・管理できます。
    mc.secret_keySecretKey。Alibaba Cloud Consoleで作成・管理できます。
    mc.regionMaxComputeが有効になっているリージョン。Endpointから対応するリージョンを見つけることができます。Before 2.1.7
    mc.endpointMaxComputeが有効になっているリージョン。Endpointと Quotaの取得方法については以下のセクションを参照してください。2.1.7 and later
  • {McOptionalProperties}

    Property Nameデフォルト値デスクリプションSupported Doris Version
    mc.tunnel_endpointNone付録のカスタムサービスアドレスを参照してください。Before 2.1.7
    mc.odps_endpointNone付録のカスタムサービスアドレスを参照してください。Before 2.1.7
    mc.quotapay-as-you-goQuota名。Endpointと Quotaの設定取得方法についてはセクションを参照してください。2.1.7 and later
    mc.split_strategybyte_size分割戦略を設定します。byte_size(バイトサイズで分割)またはrow_count(行数で分割)に設定できます。2.1.7 and later
    mc.split_byte_size268435456各分割で読み取るファイルサイズ(バイト)。デフォルトは256 MB。"mc.split_strategy" = "byte_size"の場合のみ有効。2.1.7 and later
    mc.split_row_count1048576各分割で読み取る行数。"mc.split_strategy" = "row_count"の場合のみ有効。2.1.7 and later
    mc.split_cross_partitionfalse生成された分割がパーティションを跨ぐかどうか。2.1.8 and later
    mc.connect_timeout10sMaxComputeへの接続タイムアウト。2.1.8 and later
    mc.read_timeout120sMaxComputeからの読み取りタイムアウト。2.1.8 and later
    mc.retry_count4タイムアウト後の再試行回数。2.1.8 and later
    mc.datetime_predicate_push_downtruetimestamp/timestamp_ntz型の述語条件のプッシュダウンを許可するかどうか。Dorisはこれら2つの型を同期する際に精度を失います(9 -> 6)。そのため、元データの精度が6桁より高い場合、条件プッシュダウンが不正確な結果を招く可能性があります。2.1.9/3.0.5 and later
    mc.account_formatnameAlibaba Cloud InternationalとChinaのアカウントシステムは異なります。Internationalサイトのユーザーの場合、user 'RAM$xxxxxx:xxxxx' is not a valid aliyun accountなどのエラーが発生したら、このパラメータをidに指定できます。3.0.9/3.1.1 later
    mc.enable.namespace.schemafalseMaxComputeのschemaレベルがサポートされているかどうか。詳細は:https://help.aliyun.com/zh/maxcompute/user-guide/schema-related-運用3.1.3 and later
  • [CommonProperties]

CommonPropertiesセクションは共通プロパティの記入に使用されます。カタログ OverviewセクションのCommon Propertiesを参照してください。

サポートされているMaxComputeバージョン

MaxComputeのパブリッククラウド版のみサポートされています。プライベートクラウド版のサポートについては、Dorisコミュニティにお問い合わせください。

サポートされているMaxComputeフォーマット

  • パーティションTable、クラスターTable、マテリアライズドビューの読み取りをサポートします。

  • MaxCompute外部Table、論理ビュー、Delta Tablesの読み取りはサポートしていません。

階層マッピング

  • mc.enable.namespace.schema is false

    DorisMaxCompute
    カタログN/A
    DatabaseProject
    TableTable
  • mc.enable.namespace.schema is true

    DorisMaxCompute
    カタログProject
    DatabaseSchema
    TableTable

列型マッピング

MaxCompute タイプDoris タイプComment
boleanboolean
tinytinyint
tinyinttinyint
smallintsmallint
intint
bigintbigint
floatfloat
doubledouble
decimal(P, S)decimal(P, S)
char(N)char(N)
varchar(N)varchar(N)
stringstring
datedate
datetimedatetime(3)精度3への固定マッピング。SET [GLOBAL] time_zone = 'Asia/Shanghai'を使用してタイムゾーンを指定できます。
timestamp_ntzdatetime(6)MaxComputeのtimestamp_ntzの精度は9ですが、DorisのDATETIMEは最大精度6をサポートします。そのため、データ読み取り時に余分な部分は直接切り捨てられます。
timestampdatetime(6)Since 2.1.9 & 3.0.5. MaxComputeのtimestampの精度は9ですが、DorisのDATETIMEは最大精度6をサポートします。そのため、データ読み取り時に余分な部分は直接切り捨てられます。
arrayarray
mapmap
structstruct
otherUNSUPPORTED

CREATE CATALOG mc_catalog PROPERTIES (
'type' = 'max_compute',
'mc.default.project' = 'project',
'mc.access_key' = 'sk',
'mc.secret_key' = 'ak',
'mc.endpoint' = 'http://service.cn-beijing-vpc.MaxCompute.aliyun-inc.com/api'
);

バージョン2.1.7より前(2.1.7を含まない)を使用している場合は、以下のステートメントを使用してください。(使用にあたっては2.1.8以降へのアップグレードを推奨します)

CREATE CATALOG mc_catalog PROPERTIES (
'type' = 'max_compute',
'mc.region' = 'cn-beijing',
'mc.default.project' = 'project',
'mc.access_key' = 'ak',
'mc.secret_key' = 'sk'
'mc.odps_endpoint' = 'http://service.cn-beijing.maxcompute.aliyun-inc.com/api',
'mc.tunnel_endpoint' = 'http://dt.cn-beijing.maxcompute.aliyun-inc.com'
);

サポートスキーマ:

CREATE CATALOG mc_catalog PROPERTIES (
'type' = 'max_compute',
'mc.region' = 'cn-beijing',
'mc.default.project' = 'project',
'mc.access_key' = 'ak',
'mc.secret_key' = 'sk'
'mc.odps_endpoint' = 'http://service.cn-beijing.maxcompute.aliyun-inc.com/api',
'mc.tunnel_endpoint' = 'http://dt.cn-beijing.maxcompute.aliyun-inc.com',
'mc.enable.namespace.schema' = 'true'
);

Query 運用

Basic Query

-- 1. Switch to catalog, use database, and query
SWITCH mc_ctl;
USE mc_ctl;
SELECT * FROM mc_tbl LIMIT 10;

-- 2. Use mc database directly
USE mc_ctl.mc_db;
SELECT * FROM mc_tbl LIMIT 10;

-- 3. Use fully qualified name to query
SELECT * FROM mc_ctl.mc_db.mc_tbl LIMIT 10;

付録

Endpoint と Quota の取得方法(Doris 2.1.7 以降)

  1. Data Transmission Service (DTS) 専用リソースグループを使用する場合

    **「専用データサービスリソースグループの使用」「2. 認可」セクションについて、ドキュメントを参照して、必要な権限を有効化してください。次に、「Quota Management」**リストに移動して、対応するQuotaNameを表示・コピーし、"mc.quota" = "QuotaName"を使用して指定します。この時点で、VPC または公衆ネットワーク経由でMaxComputeにアクセスできます。ただし、VPCは帯域幅が保証されているのに対し、公衆ネットワークの帯域幅は制限されています。

  2. pay-as-you-goを使用する場合

    **「オープンストレージの使用(Pay-As-You-Go)」**セクションについて、ドキュメントを参照して、オープンストレージ(Storage API)スイッチを有効化し、AkとSKに対応するユーザーに権限を付与してください。この場合、mc.quotaはデフォルトでpay-as-you-goとなり、追加の値を指定する必要はありません。pay-as-you-goモデルを使用する場合、MaxComputeにはVPC経由でのみアクセス可能で、公衆ネットワークアクセスは利用できません。前払いユーザーのみが公衆ネットワーク経由でMaxComputeにアクセスできます。

  3. Alibaba Cloud Endpoints Documentationに基づいてmc.endpointを設定します

    VPC経由でアクセスするユーザーは、**「リージョナルエンドポイントTable(Alibaba Cloud VPCネットワーク接続方式)」「VPCネットワークエンドポイント」**列を参照してmc.endpointを設定してください。

    公衆ネットワーク経由でアクセスするユーザーは、**「リージョナルエンドポイントTable(Alibaba Cloudクラシックネットワーク接続方式)」「クラシックネットワークエンドポイント」列、または「リージョナルエンドポイントTable(外部ネットワーク接続方式)」「外部ネットワークエンドポイント」**列から選択してmc.endpointを設定できます。

カスタムサービスアドレス(Doris 2.1.7 以前のバージョン)

Doris 2.1.7以前のバージョンでは、MaxComputeとの相互作用にTunnel SDKが使用されます。そのため、以下の2つのエンドポイントプロパティを設定する必要があります:

  • mc.odps_endpoint:MaxCompute Endpoint。MaxComputeメタデータ(データベースやTable情報など)の取得に使用されます。
  • mc.tunnel_endpoint:Tunnel Endpoint。MaxComputeデータの読み取りに使用されます。

デフォルトでは、MaxCompute Catalogはmc.regionmc.public_accessの値に基づいてエンドポイントを生成します。

生成されるエンドポイントの形式は以下の通りです:

mc.public_accessmc.odps_endpointmc.tunnel_endpoint
falsehttp://service.{mc.region}.maxcompute.aliyun-inc.com/apihttp://dt.{mc.region}.maxcompute.aliyun-inc.com
truehttp://service.{mc.region}.maxcompute.aliyun.com/apihttp://dt.{mc.region}.maxcompute.aliyun.com

ユーザーはmc.odps_endpointmc.tunnel_endpointを手動で指定してサービスアドレスをカスタマイズすることもできます。これは、MaxCompute環境のプライベートデプロイメントにおいて特に有用です。

MaxCompute EndpointとTunnel Endpointの設定詳細については、異なるリージョンとネットワーク接続方式のエンドポイントに関するドキュメントを参照してください。