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

MaxCompute:Hudi 外部テーブル

最終更新日:Jan 01, 2026

このトピックでは、Hudi フォーマットの OSS 外部テーブルを作成し、データの読み書きを行う方法について説明します。

重要

MaxCompute は、公開されている Hudi ソフトウェア開発キット (SDK) バージョンの外部テーブル機能のみをサポートしており、今後のバージョンアップや機能拡張は提供されません。データレイクテーブル形式のデータを読み取るにはPaimon 外部テーブルを使用してください

適用範囲

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

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

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

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

  • MaxCompute に統合されているデフォルトの Hudi SDK バージョンは org.apache.hudi:hudi-hadoop-mr-bundle:0.12.2-emr-1.0.6 です。MaxCompute は Hudi SDK の上位互換性または下位互換性を保証しません。互換性については、オープンソースコミュニティが責任を負います。

サポートされるデータ型

MaxCompute のデータ型に関する詳細については、「データ型 (Version 1.0)」および「データ型 (Version 2.0)」をご参照ください。

データ型

サポート

データ型

サポート

TINYINT

Activated

STRING

Not Enabled

SMALLINT

Enabled

DATE

Not enabled

INT

Enabled

DATETIME

Not enabled

BIGINT

Enabled

TIMESTAMP

Not enabled

BINARY

Enabled

TIMESTAMP_NTZ

Not enabled

FLOAT

Not enabled

BOOLEAN

Activated

DOUBLE

Not activated

ARRAY

Enabled

DECIMAL(precision,scale)

Enabled

MAP

Not enabled

VARCHAR(n)

Not activated

STRUCT

Not enabled

CHAR(n)

Not enabled

JSON

Not Activated

外部テーブルの作成

構文

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 'org.apache.hudi.hadoop.HoodieParquetInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION 'oss_location';

パラメーター

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

クエリと分析

利用シナリオ

組み込みのオープンソースデータパーサーを使用して Hudi フォーマットの外部テーブルを作成し、OSS にデータを書き込み、そのデータをクエリします。

  1. 前提条件

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

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

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

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

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

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

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

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

  3. Delta Lake 外部テーブルを作成できます。

    CREATE EXTERNAL TABLE vehicle_hudi_pt (
      _hoodie_commit_time  string,
      _hoodie_commit_seqno string,
      _hoodie_record_key string,
      _hoodie_partition_path string,
      _hoodie_file_name STRING ,
      id STRING ,
      name STRING 
    )
    PARTITIONED BY (ds STRING )
    ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
    STORED AS
    INPUTFORMAT 'org.apache.hudi.hadoop.HoodieParquetInputFormat'
    OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
    LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/oss-mc-test/Demo_hudi_pt/';
  4. パーティションデータをインポートします。パーティション化された OSS 外部テーブルを作成した後、そのパーティションを追加する必要があります。詳細については、「OSS 外部テーブルにパーティションデータを追加するための構文」をご参照ください。

    MSCK REPAIR TABLE vehicle_hudi_pt ADD PARTITIONS;
  5. Hudi 外部テーブルの読み取り

    SELECT * FROM vehicle_hudi_pt WHERE ds='20250612';