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

MaxCompute:RCFILE 外部テーブル

最終更新日:Nov 09, 2025

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

前提条件

  • Alibaba Cloud アカウント、RAM ユーザー、または RAM ロールには、OSS 外部テーブルにアクセスするために必要な権限が必要です。権限付与の詳細については、「OSS の STS 権限付与」をご参照ください。

  • (オプション) OSS バケット、OSS ディレクトリ、および OSS データファイルを作成済みであること。詳細については、「バケットの作成」、「ディレクトリの管理」、および「簡易アップロード」をご参照ください。

    MaxCompute は OSS 内にディレクトリを自動的に作成できます。単一の SQL 文を使用して、外部テーブルと UDF の両方を含む読み取りおよび書き込み操作を実行できます。手動でのディレクトリ作成は不要になりましたが、従来の方法も引き続きサポートされています。
  • MaxCompute プロジェクトを作成済みであること。詳細については、「MaxCompute プロジェクトの作成」をご参照ください。

    MaxCompute は特定のリージョンにのみデプロイされます。リージョン間のデータ接続性の問題を回避するため、MaxCompute プロジェクトと同じリージョンにあるバケットを使用してください。
  • Alibaba Cloud アカウントまたは RAM ユーザーが、プロジェクトに対する CreateTable 権限を持っていること。テーブル操作の権限の詳細については、「MaxCompute の権限」をご参照ください。

制限事項

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

  • 単一ファイルのサイズは 3 GB を超えることはできません。ファイルが 3 GB を超える場合は、分割する必要があります。

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

説明

MaxCompute のデータの型の詳細については、「MaxCompute V1.0 データ型エディション」および「MaxCompute 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 [IF NOT EXISTS] mc_oss_rcfile_extable
(
  <col_name> <data_type>,
  ...
)
[COMMENT <table_comment>]
[PARTITIONED BY (<col_name> <data_type>, ...)]
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe'
STORED AS rcfile
LOCATION 'oss_location';

パラメーター

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

データの書き込み

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

クエリ分析

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

  1. データを準備します。

    OSS コンソールにログインし、テスト用の RCFILE データファイルを OSS バケットの oss-mc-test/Demo_rcfile+pt/dt=20250521/ ディレクトリにアップロードします。詳細については、「OSS へのファイルのアップロード」をご参照ください。

  2. RCFILE 外部テーブルを作成します。

    CREATE EXTERNAL TABLE  mc_oss_rcfile_extable2_pt
    (
      vehicleId STRING ,
      recordId STRING,
      patientId STRING,
      calls STRING,
      locationLatitute STRING,
      locationLongtitue STRING,
      recordTime STRING,
      direction STRING
    )
    PARTITIONED BY (dt STRING)
    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe'
    STORED AS rcfile
    LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/oss-mc-test/Demo_rcfile+pt/';
  3. パーティションデータをインポートします。OSS 外部テーブルがパーティションテーブルの場合、パーティションデータをインポートするために追加のステップを実行する必要があります。詳細については、「OSS 外部テーブルにパーティションデータを追加するための構文」をご参照ください。

    -- パーティションデータをインポートします。
    MSCK REPAIR TABLE mc_oss_rcfile_extable2_pt ADD PARTITIONS;
  4. RCFILE 外部テーブルをクエリします。

    SELECT * FROM mc_oss_rcfile_extable2_pt WHERE dt=20250521;
  5. RCFILE 外部テーブルにデータを書き込みます。

    INSERT INTO TABLE mc_oss_rcfile_extable2_pt PARTITION (dt=20250521) VALUES ('1','13','76','1','46.81006','-92.08174','9/14/2014 0:10','SW');
  6. データが書き込まれたことを確認します。

    SELECT * FROM mc_oss_rcfile_extable2_pt WHERE dt=20250521 AND recordId='13';