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

MaxCompute:OSS 外部テーブルのデータをフィールド名でマッピングする

最終更新日:Nov 09, 2025

Object Storage Service (OSS) を使用すると、異なるスキーマのデータファイルを OSS ディレクトリにアップロードできます。このトピックでは、MaxCompute で OSS 外部テーブルを作成し、フィールド名をマッピングしてこのデータを読み書きする方法について説明します。

前提条件

  • MaxCompute を有効化し、プロジェクトを作成済みであること。 詳細については、「MaxCompute プロジェクトの作成」をご参照ください。

  • OSS を有効化し、バケットを作成済みであること。 詳細については、「バケットの作成」をご参照ください。

フィールド名によるデータの読み書き

  1. 指定された OSS ディレクトリに Optimized Row Columnar (ORC) データをアップロードします。

    この例では、demo7 という名前のディレクトリが OSS に作成され、2 つのデータファイルがアップロードされます。

    説明

    具体的な手順は、お使いの OSS とファイルのステータスによって異なります。

    • orc_file_with_schema0:

      -- フィールド情報
      `#id` bigint,`#name` string
      -- データ:
      {`#id`:1,`#name`:"a"}
      {`#id`:2,`#name`:null}
    • orc_file_with_schema1:

      -- フィールド情報
      age bigint,`#name` string,`#id` string
      -- データ:
      {age:10,`#name`:"c",`#id`:"3"}
      {age:20,`#name`:"d",`#id`:"4"}
  2. 開発ツールにログオンし、MaxCompute に接続します。

    次の表で説明する開発ツールのいずれかを使用して、OSS 外部テーブルを作成できます。

    作成方法

    プラットフォーム

    MaxCompute SQL を使用して OSS 外部テーブルを作成する

    MaxCompute クライアント

    DataWorks を使用した接続

    DataWorks コンソール - ODPS SQL ノード

    MaxCompute Studio - SQL プログラム

    UI を使用して OSS 外部テーブルを作成する

    MaxCompute Studio - SQL プログラム

    DataWorks コンソール - 外部テーブル

  3. MaxCompute に OSS 外部テーブルを作成します。

    次のコマンドを実行して、OSS 外部テーブルを作成します。 CREATE EXTERNAL TABLE 文の構文の詳細については、「OSS 外部テーブルの作成」をご参照ください。

    CREATE EXTERNAL TABLE mf_oss_diff_schm
    (
        `#name` string, `#id` string, age bigint
    )
    ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
    WITH SERDEPROPERTIES (
        'mcfed.orc.schema.resolution'='name'
    )
    STORED AS ORC
    LOCATION 'oss://oss-cn-beijing-internal.aliyuncs.com/mfoss*******/demo7/';
  4. データをクエリします。

    SET odps.ext.oss.orc.native=true;
    
    -- データをクエリします。
    SELECT * FROM mf_oss_diff_schm;
    
    -- 次の結果が返されます。
    +------------+------------+------------+
    | #name      | #id        | age        |
    +------------+------------+------------+
    | a          | 1          | NULL       |
    | NULL       | 2          | NULL       |
    | c          | 3          | 10         |
    | d          | 4          | 20         |
    +------------+------------+------------+
  5. OSS 外部テーブルにデータを書き込み、データをクエリします。

    INSERT into TABLE mf_oss_diff_schm values("e","5",30);
    
    -- データをクエリします。
    SELECT * FROM mf_oss_diff_schm;
    
    -- 次の結果が返されます。
    +------------+------------+------------+
    | #name      | #id        | age        |
    +------------+------------+------------+
    | a          | 1          | NULL       |
    | NULL       | 2          | NULL       |
    | e          | 5          | 30         |
    | c          | 3          | 10         |
    | d          | 4          | 20         |
    +------------+------------+------------+