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

MaxCompute:UNLOAD

最終更新日:Mar 25, 2026

UNLOAD コマンドは、MaxCompute プロジェクト内のデータを外部ストレージ(OSS または Hologres)にエクスポートし、他のコンピューティングエンジンで利用できるようにします。

権限要件

  • MaxCompute の権限:エクスポート対象の MaxCompute テーブルに対して、アカウントが Select 権限を持っている必要があります。権限付与手順については、「MaxCompute の権限」をご参照ください。

  • 外部ストレージの権限:MaxCompute から外部ストレージ(OSS や Hologres など)へデータをエクスポートする前に、MaxCompute が当該外部ストレージにアクセスできるよう、事前に権限付与を行う必要があります。

    • OSS への権限付与:OSS では、セキュリティレベルの高いワンクリック権限付与方式がサポートされています。詳細については、「STS モードでの RAM ロールの権限付与」をご参照ください。本トピックの例では、このワンクリック権限付与方式を採用しており、使用する RAM ロールの名前は AliyunODPSDefaultRole です。

    • Hologres への権限付与:権限付与を完了するには、RAM ロールを作成し、Hologres へのアクセス権限を付与したうえで、そのロールを Hologres インスタンスに追加する必要があります。詳細については、「Hologres 外部テーブルの作成(STS モード)」をご参照ください。

外部ストレージへのエクスポート

UNLOAD コマンドは追加モード(append mode)で動作します。同一の宛先パスに対して複数回エクスポートを実行すると、既存ファイルを上書きせず、新しいファイルがそのパス内に生成されます。データを上書きする場合は、UNLOAD コマンドを実行する前に宛先パスをクリアしてください。

OSS へのエクスポート

テキスト形式(CSV または TSV)

この方法では、組み込みの StorageHandler を使用してデータをエクスポートし、デフォルトでファイルに .csv または .tsv の拡張子が付与されます。

構文

UNLOAD FROM {<select_statement>|<table_name> [PARTITION (<pt_spec>)]} 
INTO 
LOCATION <oss_location>
STORED BY <StorageHandler>
[WITH SERDEPROPERTIES ('<property_name>'='<property_value>',...)];

主なパラメーター

パラメーター

説明

oss_location

宛先 OSS パス。形式は oss://<oss_endpoint>/<bucket>/<object_path> です。

StorageHandler

組み込みハンドラを指定します:

  • 'com.aliyun.odps.CsvStorageHandler':CSV 形式でデータをエクスポートします。

  • 'com.aliyun.odps.TsvStorageHandler':TSV 形式でデータをエクスポートします。

SERDEPROPERTIES

エクスポートプロパティを設定します。代表的なプロパティは以下のとおりです:

  • 'odps.properties.rolearn':必須。OSS へのアクセスに使用する RAM ロールの Alibaba Cloud リソースネーム(ARN)です。

  • 'odps.text.option.gzip.output.enabled'='true':エクスポートファイルを GZIP 形式で圧縮します。

例 1:GZIP 圧縮 CSV としてエクスポート

MaxCompute プロジェクト内の sale_detail テーブルから OSS へデータをエクスポートします。以下のサンプルデータは sale_detail テーブルからのものです:

-- パーティションフィールド:sale_date、region
+------------+-------------+-------------+------------+------------+
| shop_name  | customer_id | total_price | sale_date  | region     |
+------------+-------------+-------------+------------+------------+
| s1         | c1          | 100.1       | 2013       | china      |
| s2         | c2          | 100.2       | 2013       | china      |
| s3         | c3          | 100.3       | 2013       | china      |
| null       | c5          | NULL        | 2014       | shanghai   |
| s6         | c6          | 100.4       | 2014       | shanghai   |
| s7         | c7          | 100.5       | 2014       | shanghai   |
+------------+-------------+-------------+------------+------------+

操作手順

  1. OSS でOSS コンソールにログインし、mc-unload/data_location/ ディレクトリを oss-cn-hangzhou リージョンのバケット内に作成した後、OSS パスを構築します。「バケットの作成方法」については、「コンソールでのバケットの作成」をご参照ください。バケット、リージョン、エンドポイント情報をもとに OSS パスを構築します:

    oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location
  2. MaxCompute でMaxCompute クライアントにログインし、UNLOAD コマンドを実行します。

    方法 1:SELECT クエリを使用

    -- 単一ワーカーが MaxCompute テーブルから読み取るデータ量を 256 MB に設定します。この設定により、出力ファイル数が制御されます。
    SET odps.stage.mapper.split.size=256;
    
    UNLOAD FROM (SELECT * FROM sale_detail)
    INTO
    LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location'
    STORED BY 'com.aliyun.odps.CsvStorageHandler'
    WITH SERDEPROPERTIES (
        'odps.properties.rolearn'='acs:ram::<uid>:role/AliyunODPSDefaultRole', 
        'odps.text.option.gzip.output.enabled'='true'
    );

    方法 2:テーブル名を直接指定(クエリ料金は発生しません)

    -- 単一ワーカーが MaxCompute テーブルから読み取るデータ量を 256 MB に設定します。この設定により、出力ファイル数が制御されます。
    SET odps.stage.mapper.split.size=256;
    
    UNLOAD FROM sale_detail 
    INTO
    LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location'
    STORED BY 'com.aliyun.odps.CsvStorageHandler'
    WITH SERDEPROPERTIES (
        'odps.properties.rolearn'='acs:ram::<uid>:role/AliyunODPSDefaultRole', 
        'odps.text.option.gzip.output.enabled'='true'
    );
  3. 結果の確認OSS コンソールにログインし、宛先 OSS パス内のエクスポート済みファイルを確認します。データは CSV 形式でエクスポートされ、GZIP 形式で圧縮されます。

例 2:パーティションデータを圧縮 TSV としてエクスポート

sale_date='2013' および region='china' のパーティションを持つ sale_detail テーブルから、TSV 形式でデータをエクスポートし、GZIP で圧縮します。

-- パーティションフィールド:sale_date、region
+------------+-------------+-------------+------------+------------+
| shop_name  | customer_id | total_price | sale_date  | region     |
+------------+-------------+-------------+------------+------------+
| s1         | c1          | 100.1       | 2013       | china      |
| s2         | c2          | 100.2       | 2013       | china      |
| s3         | c3          | 100.3       | 2013       | china      |
| null       | c5          | NULL        | 2014       | shanghai   |
| s6         | c6          | 100.4       | 2014       | shanghai   |
| s7         | c7          | 100.5       | 2014       | shanghai   |
+------------+-------------+-------------+------------+------------+

操作手順

  1. OSS でOSS コンソールにログインし、mc-unload/data_location/ ディレクトリを oss-cn-hangzhou リージョンのバケット内に作成した後、OSS パスを構築します。「バケットの作成方法」については、「コンソールでのバケットの作成」をご参照ください。バケット、リージョン、エンドポイント情報をもとに OSS パスを構築します:

    oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location
  2. MaxCompute でMaxCompute クライアントにログインし、UNLOAD コマンドを実行します。

    SET odps.stage.mapper.split.size=256;
    
    UNLOAD FROM sale_detail PARTITION (sale_date='2013',region='china')
    INTO
    LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location'
    STORED BY 'com.aliyun.odps.TsvStorageHandler'
    WITH SERDEPROPERTIES (
        'odps.properties.rolearn'='acs:ram::<uid>:role/AliyunODPSDefaultRole', 
        'odps.text.option.gzip.output.enabled'='true'
    );
  3. 結果の確認OSS コンソールにログインし、宛先 OSS パス内のエクスポート済みファイルを確認します。データは TSV 形式でエクスポートされ、GZIP 形式で圧縮されます。

オープンソース形式(Parquet または ORC)

この方法では、カラム指向ストレージや構造化データ形式など、さまざまなオープンソース形式へのデータエクスポートをサポートします。

構文

UNLOAD FROM {<select_statement>|<table_name> [PARTITION (<pt_spec>)]}
INTO 
LOCATION <oss_location>
[ROW FORMAT SERDE '<serde_class>' 
  [WITH SERDEPROPERTIES ('<property_name>'='<property_value>',...)]
]
STORED AS <file_format>
[PROPERTIES ('<tbproperty_name>'='<tbproperty_value>')];

主なパラメーター

パラメーター

説明

oss_location

宛先 OSS パス。形式は oss://<oss_endpoint>/<bucket>/<object_path> です。

serde_class

シリアル化/デシリアライズ(SerDe)ライブラリを指定します。たとえば Parquet の場合、org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe を指定します。

SERDEPROPERTIES

'odps.properties.rolearn':必須。OSS へのアクセスに使用する RAM ロールの ARN です。

file_format

必須。PARQUETORCTEXTFILEJSON などのファイル形式を指定します。

PROPERTIES

- 'mcfed.parquet.compression'='SNAPPY':Parquet ファイルの圧縮コーデックを指定します。サポートされるコーデックは SNAPPY および LZO です。
- 'odps.text.option.gzip.output.enabled'='true':TEXTFILE 形式に対する GZIP 圧縮を有効化します。

サポートされる形式と圧縮

ファイル形式

サポートされる圧縮コーデック

説明

PARQUET

SNAPPY、LZO

分析クエリに適したカラム指向ストレージ形式です。

ORC

SNAPPY、LZO

Hadoop エコシステムに適したカラム指向ストレージ形式です。

TEXTFILE

GZIP

カスタム区切り文字をサポートするテキスト形式です。

RCFILE

-

行・列ハイブリッド型のストレージ形式です。

SEQUENCEFILE

-

Hadoop シーケンスファイル形式です。

AVRO

-

データシリアル化形式です。

JSON

-

JSON 形式です。

例 1:SNAPPY 圧縮 Parquet としてエクスポート

MaxCompute プロジェクト内の sale_detail テーブルから OSS へデータをエクスポートします。以下のサンプルデータは sale_detail テーブルからのものです:

-- パーティションフィールド:sale_date、region
+------------+-------------+-------------+------------+------------+
| shop_name  | customer_id | total_price | sale_date  | region     |
+------------+-------------+-------------+------------+------------+
| s1         | c1          | 100.1       | 2013       | china      |
| s2         | c2          | 100.2       | 2013       | china      |
| s3         | c3          | 100.3       | 2013       | china      |
| null       | c5          | NULL        | 2014       | shanghai   |
| s6         | c6          | 100.4       | 2014       | shanghai   |
| s7         | c7          | 100.5       | 2014       | shanghai   |
+------------+-------------+-------------+------------+------------+

操作手順

  1. OSS でOSS コンソールにログインし、mc-unload/data_location/ ディレクトリを oss-cn-hangzhou リージョンのバケット内に作成した後、OSS パスを構築します。「バケットの作成方法」については、「コンソールでのバケットの作成」をご参照ください。バケット、リージョン、エンドポイント情報をもとに OSS パスを構築します:

    oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location
  2. MaxCompute でMaxCompute クライアントにログインし、UNLOAD コマンドを実行します。

    -- 単一ワーカーが MaxCompute テーブルから読み取るデータ量を 256 MB に設定します。この設定により、出力ファイル数が制御されます。
    SET odps.stage.mapper.split.size=256;
    
    UNLOAD FROM (SELECT * FROM sale_detail) 
    INTO  
    LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location' 
    ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' 
    WITH SERDEPROPERTIES (
        'odps.properties.rolearn'='acs:ram::<uid>:role/AliyunODPSDefaultRole'
    ) 
    STORED AS PARQUET 
    PROPERTIES('mcfed.parquet.compression'='SNAPPY');
  3. 結果の確認OSS コンソールにログインし、宛先 OSS パス内のエクスポート済みファイルを確認します。データは PARQUET 形式でエクスポートされ、SNAPPY で圧縮されます。

例 2:パーティションデータを Parquet としてエクスポート

MaxCompute の sale_detail テーブルの sale_date='2013' および region='china' のパーティションから、SNAPPY 圧縮付き PARQUET 形式でデータをエクスポートします。sale_detail のデータは以下のとおりです:

-- パーティションフィールド:sale_date、region
+------------+-------------+-------------+------------+------------+
| shop_name  | customer_id | total_price | sale_date  | region     |
+------------+-------------+-------------+------------+------------+
| s1         | c1          | 100.1       | 2013       | china      |
| s2         | c2          | 100.2       | 2013       | china      |
| s3         | c3          | 100.3       | 2013       | china      |
| null       | c5          | NULL        | 2014       | shanghai   |
| s6         | c6          | 100.4       | 2014       | shanghai   |
| s7         | c7          | 100.5       | 2014       | shanghai   |
+------------+-------------+-------------+------------+------------+

操作手順

  1. OSS でOSS コンソールにログインし、mc-unload/data_location/ ディレクトリを oss-cn-hangzhou リージョンのバケット内に作成した後、OSS パスを構築します。「バケットの作成方法」については、「コンソールでのバケットの作成」をご参照ください。バケット、リージョン、エンドポイント情報をもとに OSS パスを構築します:

    oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location
  2. MaxCompute でMaxCompute クライアントにログインし、UNLOAD コマンドを実行します。

    -- 単一ワーカーが MaxCompute テーブルから読み取るデータ量を 256 MB に設定します。この設定により、出力ファイル数が制御されます。
    SET odps.stage.mapper.split.size=256;
    
    UNLOAD FROM sale_detail PARTITION (sale_date='2013',region='china') 
    INTO 
    LOCATION 'oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location' 
    ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' 
    WITH SERDEPROPERTIES ('odps.properties.rolearn'='acs:ram::<uid>:role/AliyunODPSDefaultRole') 
    STORED AS PARQUET 
    PROPERTIES('mcfed.parquet.compression'='SNAPPY');
  3. 結果の確認OSS コンソールにログインし、宛先 OSS パス内のエクスポート済みファイルを確認します。データは PARQUET 形式でエクスポートされ、SNAPPY で圧縮されます。

例 3:カスタム区切り文字付きテキストファイルとしてエクスポート

sale_detail テーブルのデータを TXT ファイルとしてエクスポートし、カンマを区切り文字として指定します。

-- パーティションフィールド:sale_date、region
+------------+-------------+-------------+------------+------------+
| shop_name  | customer_id | total_price | sale_date  | region     |
+------------+-------------+-------------+------------+------------+
| s1         | c1          | 100.1       | 2013       | china      |
| s2         | c2          | 100.2       | 2013       | china      |
| s3         | c3          | 100.3       | 2013       | china      |
| null       | c5          | NULL        | 2014       | shanghai   |
| s6         | c6          | 100.4       | 2014       | shanghai   |
| s7         | c7          | 100.5       | 2014       | shanghai   |
+------------+-------------+-------------+------------+------------+

操作手順

  1. OSS でOSS コンソールにログインし、mc-unload/data_location/ ディレクトリを oss-cn-hangzhou リージョンのバケット内に作成した後、OSS パスを構築します。「バケットの作成方法」については、「コンソールでのバケットの作成」をご参照ください。バケット、リージョン、エンドポイント情報をもとに OSS パスを構築します:

    oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location
  2. MaxCompute でMaxCompute クライアントにログインし、UNLOAD コマンドを実行します。

    -- 単一ワーカーが MaxCompute テーブルから読み取るデータ量を 256 MB に設定します。この設定により、出力ファイル数が制御されます。
    SET odps.sql.allow.fullscan=true; 
    
    UNLOAD FROM (SELECT * FROM sale_detail)
    INTO
    LOCATION 'oss://oss-cn-beijing-internal.aliyuncs.com/mc-unload/data_location/'
    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
    WITH SERDEPROPERTIES ('field.delim'=',')
    STORED AS TEXTFILE
    PROPERTIES ('odps.external.data.enable.extension'='true');
  3. 結果の確認OSS コンソールにログインし、宛先 OSS パス内のエクスポート済みファイルを確認します。エクスポートされたファイルは TXT 形式であり、データはカンマで区切られます。

ファイル名のカスタマイズ

OSS へ UNLOAD 実行時に、PROPERTIES または SERDEPROPERTIES 内のプロパティを使用して、出力ファイルのプレフィックス、サフィックス、拡張子をカスタマイズできます。

構文

UNLOAD FROM {<select_statement>|<table_name> [PARTITION (<pt_spec>)]}
INTO 
LOCATION <oss_location>
[ROW FORMAT SERDE '<serde_class>' 
  [WITH SERDEPROPERTIES ('<property_name>'='<property_value>',...)]
]
STORED AS <file_format>
[PROPERTIES ('<tbproperty_name>'='<tbproperty_value>',...)];

主なパラメーター

property_name/tbproperty_name

説明

例の値

odps.external.data.output.prefix

1~10 文字のファイル名プレフィックス。英字、数字、アンダースコア(_)のみ使用可能です。

'mc_'

odps.external.data.output.suffix

英字、数字、アンダースコア(_)を含むファイル名サフィックス。

'_hangzhou'

odps.external.data.enable.extension

デフォルトのファイル拡張子(例:.tx.parquet)を表示するかどうかを指定します。

'true'

odps.external.data.output.explicit.extension

デフォルトの拡張子をオーバーライドするカスタムファイル拡張子。

'jsonl'

拡張機能

odps.external.data.enable.extension=true を設定した場合、異なる外部テーブルのファイル拡張子は自動的に以下のように生成されます。

ファイル形式

SerDe

拡張子

SEQUENCEFILE

org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe

.sequencefile

TEXTFILE

org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe

.txt

RCFILE

org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe

.rcfile

ORC

org.apache.hadoop.hive.ql.io.orc.OrcSerde

.orc

PARQUET

org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe

.parquet

AVRO

org.apache.hadoop.hive.serde2.avro.AvroSerDe

.avro

JSON

org.apache.hive.hcatalog.data.JsonSerDe

.json

CSV

org.apache.hadoop.hive.serde2.OpenCSVSerde

.csv

説明

SNAPPY または LZO 圧縮でデータをエクスポートする場合、ファイル名に .snappy.lzo の拡張子は自動的に付与されません。

例 1:テキストファイル名のカスタマイズ

MaxCompute プロジェクト内の sale_detail テーブルから OSS へ TXT ファイルとしてデータをエクスポートし、ファイル名を mc_<system-generated>_beijing.txt とします。sale_detail のデータは以下のとおりです:

-- パーティションフィールド:sale_date、region
+------------+-------------+-------------+------------+------------+
| shop_name  | customer_id | total_price | sale_date  | region     |
+------------+-------------+-------------+------------+------------+
| s1         | c1          | 100.1       | 2013       | china      |
| s2         | c2          | 100.2       | 2013       | china      |
| s3         | c3          | 100.3       | 2013       | china      |
| null       | c5          | NULL        | 2014       | shanghai   |
| s6         | c6          | 100.4       | 2014       | shanghai   |
| s7         | c7          | 100.5       | 2014       | shanghai   |
+------------+-------------+-------------+------------+------------+

操作手順

  1. OSS でOSS コンソールにログインし、mc-unload/data_location/ ディレクトリを oss-cn-hangzhou リージョンのバケット内に作成した後、OSS パスを構築します。「バケットの作成方法」については、「コンソールでのバケットの作成」をご参照ください。バケット、リージョン、エンドポイント情報をもとに OSS パスを構築します:

    oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location
  2. MaxCompute でMaxCompute クライアントにログインし、UNLOAD コマンドを実行します。

    UNLOAD FROM (SELECT * FROM sale_detail) 
    INTO 
    LOCATION 'oss://oss-cn-beijing-internal.aliyuncs.com/***/textfile' 
    row format serde 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
    STORED AS textfile
    PROPERTIES (
        'odps.external.data.output.prefix'='mc_', 
        'odps.external.data.output.suffix'='_beijing',
        'odps.external.data.enable.extension'='true');
  3. 結果の確認OSS コンソールにログインし、宛先 OSS パス内のエクスポート済みファイルを確認します。エクスポートされたファイルの名前は mc_<system-generated_name>_beijing.txt です。

例 2:JSON ファイル拡張子のカスタマイズ

MaxCompute プロジェクト内の sale_detail テーブルから OSS へ JSON ファイルとしてデータをエクスポートし、ファイル名を mc_<system-generated file name>_beijing.json の形式にします。sale_detail のデータは以下のとおりです:

-- パーティションフィールド:sale_date、region
+------------+-------------+-------------+------------+------------+
| shop_name  | customer_id | total_price | sale_date  | region     |
+------------+-------------+-------------+------------+------------+
| s1         | c1          | 100.1       | 2013       | china      |
| s2         | c2          | 100.2       | 2013       | china      |
| s3         | c3          | 100.3       | 2013       | china      |
| null       | c5          | NULL        | 2014       | shanghai   |
| s6         | c6          | 100.4       | 2014       | shanghai   |
| s7         | c7          | 100.5       | 2014       | shanghai   |
+------------+-------------+-------------+------------+------------+

操作手順

  1. OSS でOSS コンソールにログインし、mc-unload/data_location/ ディレクトリを oss-cn-hangzhou リージョンのバケット内に作成した後、OSS パスを構築します。「バケットの作成方法」については、「コンソールでのバケットの作成」をご参照ください。バケット、リージョン、エンドポイント情報をもとに OSS パスを構築します:

    oss://oss-cn-hangzhou-internal.aliyuncs.com/mc-unload/data_location
  2. MaxCompute でMaxCompute クライアントにログインし、UNLOAD コマンドを実行します。

    UNLOAD FROM (SELECT * FROM sale_detail) 
    INTO 
    LOCATION 'oss://oss-cn-beijing-internal.aliyuncs.com/***/json' 
    ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
    WITH SERDEPROPERTIES (
        'odps.external.data.output.prefix'='mc_', 
        'odps.external.data.output.suffix'='_beijing',
        'odps.external.data.output.explicit.extension'='json')
    STORED AS JSON;
  3. 結果の確認OSS コンソールにログインし、宛先 OSS パス内のエクスポート済みファイルを確認します。エクスポートされたファイルの名前は mc_<system-generated-name>_beijing.json です。

Hologres へのエクスポート

制限事項

  • 二重署名による権限付与:Hologres へのデータエクスポートでは、二重署名による権限付与はサポートされていません。

  • パーティションテーブル:Hologres のパーティションテーブルへのデータエクスポートはサポートされていません。

  • データ型のマッピング:宛先 Hologres テーブルの列のデータ型は、ソース MaxCompute テーブルの列のデータ型と一致している必要があります。詳細については、「MaxCompute と Hologres 間のデータ型マッピング」をご参照ください。

構文

UNLOAD FROM {<select_statement>|<table_name> [PARTITION (<pt_spec>)]} 
INTO 
LOCATION <hologres_location>
STORED BY <StorageHandler>
[WITH SERDEPROPERTIES ('<property_name>'='<property_value>',...)];

主なパラメーター

パラメーター

説明

hologres_location

宛先 Hologres テーブルの JDBC 接続文字列。形式は 'jdbc:postgresql://<endpoint>:<port>/<database>?ApplicationName=MaxCompute&[currentSchema=<schema>&][useSSL={true|false}&]table=<holo_table_name>/' です。

StorageHandler

組み込みハンドラを指定します。JDBC 接続方式を使用する場合は、固定値 com.aliyun.odps.jdbc.JdbcStorageHandler を指定します。

SERDEPROPERTIES

以下の 3 つのプロパティを必ず含める必要があります:

  • 'odps.properties.rolearn'='<ram_arn>':Hologres へのアクセスに使用する RAM ロールの ARN です。

  • 'mcfed.mapreduce.jdbc.driver.class'='org.postgresql.Driver':Hologres の JDBC ドライバーです。

  • 'odps.federation.jdbc.target.db.type'='holo':宛先データベースのタイプです。

MaxCompute テーブル data_test を Hologres テーブル mc_2_holo へエクスポートします。data_test のデータは以下のとおりです:

+------------+------+
| id         | name |
+------------+------+
| 3          | rgege |
| 4          | Gegegegr |
+------------+------+

操作手順

  1. Hologres で:宛先テーブル mc_2_holo を作成します。

    CREATE TABLE mc_2_holo (id INT, name TEXT);
  2. MaxCompute でMaxCompute クライアントにログインし、UNLOAD コマンドを実行します。

    UNLOAD FROM (SELECT * FROM data_test) 
    INTO 
    LOCATION 'jdbc:postgresql://hgprecn-cn-5y**********-cn-hangzhou-internal.hologres.aliyuncs.com:80/test?ApplicationName=MaxCompute&currentSchema=public&useSSL=false&table=mc_2_holo/'  
    STORED BY 'com.aliyun.odps.jdbc.JdbcStorageHandler'
    WITH SERDEPROPERTIES ( 
      'odps.properties.rolearn'='acs:ram::13**************:role/aliyunodpsholorole',
      'mcfed.mapreduce.jdbc.driver.class'='org.postgresql.Driver', 
      'odps.federation.jdbc.target.db.type'='holo'
    );
  3. 結果の確認:Hologres 内でエクスポートされたデータを確認します。

    SELECT * FROM mc_2_holo;

    以下の結果が返されます:

    id	name
    4	Gegegegr
    3	rgege

課金

  • コマンド料金

    • UNLOAD コマンド自体は無料です。

    • クエリ句の料金UNLOAD コマンド内のクエリ句は、データをスキャンし、エクスポートデータを生成するためにコンピューティングリソースを消費します。そのため、クエリ句は標準 SQL ジョブとして課金されます。

  • コスト見積もり

    OSS と MaxCompute の両方にデータを保存する場合、それぞれ異なるコスト要素が関係します。MaxCompute からデータをエクスポートすることがコスト効率的であるかどうかを判断するには、ストレージコスト、データ量の変化、およびその後のクエリコストを含めた総コストを見積もる必要があります。

    • 直接的なストレージコスト

      • MaxCompute では、標準、低頻度アクセス、アーカイブの各ストレージクラスが提供されており、すべてゾーン冗長ストレージをサポートしています。ストレージ課金の詳細については、「ストレージ料金」をご参照ください。

      • OSS でも、標準、低頻度アクセス、アーカイブの各ストレージクラスが提供されており、ゾーン冗長ストレージをサポートし、MaxCompute のストレージ価格と同程度の価格設定となっています。さらに、OSS ではゾーン冗長ストレージをサポートしない、より低コストのコールドアーカイブおよびディープコールドアーカイブのストレージクラスも提供されています。詳細については、「OSS ストレージ料金」をご参照ください。

    • データ量の変化

      MaxCompute では、インポートされたデータが約 5:1 の比率で圧縮され、圧縮後のデータサイズに対して課金されます。

      OSS にデータを保存する場合、データ形式および圧縮方法を明示的に指定・管理する必要があります。「MaxCompute がデータエクスポートでサポートするデータ形式および圧縮方法」については、「OSS 外部テーブル」をご参照ください。圧縮を適用しない場合、OSS へのエクスポート時にデータ量が増加します。

    • その後のクエリコスト

      MaxCompute に保存されたデータはいつでもクエリ可能ですが、低頻度アクセスおよびアーカイブのストレージクラスでは、追加のデータアクセス料金が発生します。OSS の非標準ストレージクラスからデータを読み取る場合、データ取得料金または早期削除料金が発生する可能性があります

関連ドキュメント

OSS などの外部ストレージから CSV 形式またはその他のオープンソース形式のデータを MaxCompute へインポートする方法については、「LOAD」をご参照ください。