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

MaxCompute:Delta Lake 外部テーブル

最終更新日:Jan 01, 2026

このトピックでは、Delta Lake フォーマットの OSS 外部テーブルの作成、読み取り、書き込み方法について説明します。

重要

MaxCompute は、特定のバージョンの Delta Lake ソフトウェア開発キット (SDK) でのみ外部テーブル機能をサポートします。MaxCompute は SDK バージョンの更新や、この機能のさらなる開発は行いません。データレイクテーブルフォーマットのデータを読み取るには、Paimon 外部テーブルを使用してください。

適用範囲

  • OSS 外部テーブルは、クラスタープロパティをサポートしていません。

  • 単一ファイルのサイズは 2 GB を超えることはできません。ファイルが大きすぎる場合は、分割してください。

  • MaxCompute と OSS は同じリージョンにある必要があります。

  • Delta Lake 外部テーブルは、外部テーブルにマッピングされたファイルからの全データ読み取りのみをサポートします。システム列の自動非表示、増分読み取り、スナップショット読み取り、書き込み操作はサポートしていません。原子性、一貫性、分離性、永続性 (ACID) をサポートする読み取りおよび書き込み操作を実行するには、MaxCompute Delta テーブルや Paimon 外部テーブルなどの機能を使用してください。

  • MaxCompute に統合されているデフォルトの Delta Lake SDK バージョンは io.delta:delta-core_2.11:0.2.0.5 です。Delta Lake SDK の上位互換性または下位互換性は保証されていません。互換性はオープンソースコミュニティによって維持されます。

サポートされるデータ型

MaxCompute のデータ型の詳細については、「データ型 (バージョン 1.0)」および「データ型 (バージョン 2.0)」をご参照ください。

データ型

サポート

データ型

サポート

TINYINT

有効

STRING

有効

SMALLINT

有効

DATE

有効

INT

有効

DATETIME

無効

BIGINT

有効

TIMESTAMP

有効

BINARY

有効

TIMESTAMP_NTZ

無効

FLOAT

有効

BOOLEAN

有効

DOUBLE

有効

ARRAY

有効

DECIMAL(precision,scale)

無効

MAP

有効

VARCHAR(n)

有効

STRUCT

有効

CHAR(n)

有効化済み

JSON

無効

外部テーブルの作成

構文

CREATE EXTERNAL TABLE [IF NOT EXISTS] <mc_oss_extable_name>
(
   <col_name> <data_type>,
   ...
)
[COMMENT <table_comment>]
[PARTITIONED BY (<col_name> <data_type>, ...)]
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS
INPUTFORMAT 'io.delta.hive.DeltaInputFormat'
OUTPUTFORMAT 'io.delta.hive.DeltaOutputFormat'
LOCATION 'oss_location';

パラメーター

詳細については、「基本的な構文パラメーター」をご参照ください。

クエリと分析

この例では、組み込みのオープンソースデータリゾルバーを使用して Delta Lake 外部テーブルを作成し、OSS にデータを書き込み、そのデータをクエリする方法を示します。

  1. 前提条件

    • MaxCompute プロジェクトが作成されていること

    • OSS バケットとフォルダーが利用可能であること。詳細については、「バケットの作成」および「フォルダーの管理」をご参照ください。

      MaxCompute は OSS でのフォルダーの自動作成をサポートしています。SQL 文に外部テーブルとユーザー定義関数 (UDF) が含まれている場合、単一の文を使用してテーブルの読み取りと書き込み、および UDF の使用が可能です。フォルダーは手動で作成することもできます。

      MaxCompute は特定のリージョンにのみデプロイされます。リージョン間のデータ接続で発生する可能性のある問題を回避するため、OSS バケットが MaxCompute プロジェクトと同じリージョンにあることを確認してください。
    • 権限付与

      • OSS にアクセスする権限が必要です。Alibaba Cloud アカウント、Resource Access Management (RAM) ユーザー、または RAM ロールを使用して OSS 外部テーブルにアクセスできます。権限付与の詳細については、「OSS への STS モードでのアクセス権限付与」をご参照ください。

      • MaxCompute プロジェクトで CreateTable 権限が必要です。テーブル権限の詳細については、「MaxCompute 権限」をご参照ください。

  2. テストデータのアップロード

    OSS コンソールにログインし、Delta Lake フォーマットのテストデータファイルを OSS バケットの oss-mc-test/Demo_delta_pt/dt=20250612/ フォルダーにアップロードします。詳細については、「OSS へのファイルのアップロード」をご参照ください。

  3. Delta Lake 外部テーブルの作成

    CREATE EXTERNAL TABLE test_delta_pt (
        id INT
    )
    PARTITIONED BY (dt STRING )
    ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
    STORED AS
    INPUTFORMAT 'io.delta.hive.DeltaInputFormat'
    OUTPUTFORMAT 'io.delta.hive.DeltaOutputFormat'
    LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/oss-mc-test/Demo_delta_pt/';
  4. パーティションデータのインポート。作成した OSS 外部テーブルがパーティションテーブルの場合、パーティションデータもインポートする必要があります。詳細については、「OSS 外部テーブルへのパーティションデータの追加構文」をご参照ください。

    MSCK REPAIR TABLE test_delta_pt ADD PARTITIONS;
  5. Delta Lake 外部テーブルのクエリ。

    SELECT * FROM test_delta_pt WHERE dt='20250612';