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

MaxCompute:AVRO 外部テーブル

最終更新日:Jan 01, 2026

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

適用範囲

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

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

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

サポートされるデータの型

MaxCompute のデータの型の詳細については、「データの型 (V1.0)」および「データの型 (V2.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 <mc_oss_extable_name>
(
  <col_name> <data_type>,
  ...
)
[COMMENT <table_comment>]
[PARTITIONED BY (<col_name> <data_type>, ...)]
STORED AS avro
LOCATION '<oss_location>';

パラメーター

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

データの書き込み

MaxCompute から OSS にデータを書き込む構文の詳細については、「OSS へのデータの書き込み」をご参照ください。

クエリと分析

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

  1. 前提条件

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

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

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

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

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

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

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

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

  3. AVRO フォーマットの外部テーブルの作成

    CREATE EXTERNAL TABLE mc_oss_extable_name_avro_pt 
    (
      vehicleId STRING,
      recordId STRING,
      patientId STRING,
      calls STRING,
      locationLatitute STRING,
      locationLongtitue STRING,
      recordTime STRING,
      direction STRING
    ) 
    PARTITIONED BY (dt STRING) 
    STORED AS avro 
    LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/external-table-test/avro/';
  4. パーティションデータのインポート。OSS 外部テーブルがパーティションテーブルの場合、パーティションデータをインポートする必要があります。詳細については、「OSS 外部テーブルにパーティションデータを追加するための構文」をご参照ください。

    -- パーティションデータをインポートします。
    MSCK REPAIR TABLE mc_oss_extable_name_avro_pt ADD PARTITIONS;
  5. AVRO 外部テーブルからのデータの読み取り

    SELECT * FROM mc_oss_extable_name_avro_pt WHERE dt=20250521;

    次の結果が返されます:

    +------------+------------+------------+------------+------------------+-------------------+------------+------------+------------+
    | vehicleid  | recordid   | patientid  | calls      | locationlatitute | locationlongtitue | recordtime | direction  | dt         |
    +------------+------------+------------+------------+------------------+-------------------+------------+------------+------------+
    | 1          | 12         | 76         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:10 | SW         | 20250521   |
    | 1          | 1          | 51         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:00 | S          | 20250521   |
    | 1          | 2          | 13         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:01 | NE         | 20250521   |
    | 1          | 3          | 48         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:02 | NE         | 20250521   |
    | 1          | 4          | 30         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:03 | W          | 20250521   |
    | 1          | 5          | 47         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:04 | S          | 20250521   |
    | 1          | 6          | 9          | 1          | 46.81006         | -92.08174         | 9/14/2014 0:05 | S          | 20250521   |
    | 1          | 7          | 53         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:06 | N          | 20250521   |
    | 1          | 8          | 63         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:07 | SW         | 20250521   |
    | 1          | 9          | 4          | 1          | 46.81006         | -92.08174         | 9/14/2014 0:08 | NE         | 20250521   |
    | 1          | 10         | 31         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:09 | N          | 20250521   |
    +------------+------------+------------+------------+------------------+-------------------+------------+------------+------------+
  6. AVRO 外部テーブルへのデータの書き込み

    INSERT INTO mc_oss_extable_name_avro_pt PARTITION (dt='20250521') VALUES ('1','16','76','1','46.81006','-92.08174','9/14/2014 0:10','SW');
  7. 書き込まれたデータのクエリ

    SELECT * FROM mc_oss_extable_name_avro_pt WHERE dt=20250521;

    次の結果が返されます:

    +------------+------------+------------+------------+------------------+-------------------+------------+------------+------------+
    | vehicleid  | recordid   | patientid  | calls      | locationlatitute | locationlongtitue | recordtime | direction  | dt         |
    +------------+------------+------------+------------+------------------+-------------------+------------+------------+------------+
    | 1          | 16         | 76         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:10 | SW         | 20250521   |
    | 1          | 12         | 76         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:10 | SW         | 20250521   |
    | 1          | 1          | 51         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:00 | S          | 20250521   |
    | 1          | 2          | 13         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:01 | NE         | 20250521   |
    | 1          | 3          | 48         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:02 | NE         | 20250521   |
    | 1          | 4          | 30         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:03 | W          | 20250521   |
    | 1          | 5          | 47         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:04 | S          | 20250521   |
    | 1          | 6          | 9          | 1          | 46.81006         | -92.08174         | 9/14/2014 0:05 | S          | 20250521   |
    | 1          | 7          | 53         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:06 | N          | 20250521   |
    | 1          | 8          | 63         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:07 | SW         | 20250521   |
    | 1          | 9          | 4          | 1          | 46.81006         | -92.08174         | 9/14/2014 0:08 | NE         | 20250521   |
    | 1          | 10         | 31         | 1          | 46.81006         | -92.08174         | 9/14/2014 0:09 | N          | 20250521   |
    +------------+------------+------------+------------+------------------+-------------------+------------+------------+------------+