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

MaxCompute カタログ

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

適用シナリオ

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

注意事項

  1. バージョン2.1.7以降、MaxCompute CatalogはオープンストレージSDKをベースに開発されています。それ以前は、Tunnel APIをベースに開発されていました。

  2. オープンストレージ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_endpointNoneCustom Service Addressに関する付録を参照してください。Before 2.1.7
    mc.odps_endpointNoneCustom Service Addressに関する付録を参照してください。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国際版と中国のアカウントシステムは異なります。国際版サイトのユーザーで、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-operations3.1.3 and later
  • [CommonProperties]

CommonPropertiesセクションは、共通プロパティを入力するために使用されます。Common PropertiesのCatalog Overviewセクションを参照してください。

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

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

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

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

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

階層マッピング

  • mc.enable.namespace.schemaがfalseの場合

    DorisMaxCompute
    カタログN/A
    DatabaseProject
    TableTable
  • mc.enable.namespace.schemaが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)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 運用

基本クエリ

-- 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;

付録

エンドポイントとクォータの取得方法(Doris 2.1.7以降)

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

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

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

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

  3. Alibaba Cloudエンドポイントドキュメントに基づいてmc.endpointを設定

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

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

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

Doris 2.1.7より前のバージョンでは、Tunnel SDK がMaxComputeとの相互作用に使用されます。そのため、以下の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の設定詳細については、異なるリージョンとネットワーク接続方法のエンドポイントのドキュメントを参照してください。