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

MaxCompute:UNLOAD

最終更新日:Jul 30, 2026

UNLOAD コマンドは、MaxCompute プロジェクトから Object Storage Service (OSS) や Hologres などの外部ストレージにデータをエクスポートし、他のコンピュートエンジンで利用できるようにします。

権限

  • MaxCompute 権限:操作に使用するアカウントには、エクスポート対象のテーブルデータに対する読み取り (Select) 権限が必要です。権限の付与方法の詳細については、「MaxCompute 権限」をご参照ください。

  • 外部ストレージ権限:MaxCompute から外部ストレージにデータをエクスポートする前に、MaxCompute に外部ストレージ (OSS または Hologres) へのアクセス権限を付与する必要があります。

    • OSS 権限付与:より高いセキュリティを実現するために、ワンクリック認可がサポートされています。詳細については、「外部データソースへのアクセスに関する権限付与ソリューション」をご参照ください。この例では、ワンクリック認可を使用し、ロール名は AliyunODPSDefaultRole です。

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

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

UNLOAD コマンドは追加モードを使用します。同じ宛先パスに複数回データをエクスポートする場合、システムは既存のファイルを上書きせず、そのパスに新しいファイルを作成します。データを上書きするには、UNLOAD コマンドを実行する前に、手動で宛先パスをクリアする必要があります。

OSS へのデータエクスポート

テキスト形式 (CSV または TSV) でのデータエクスポート

このメソッドは、組み込みの StorageHandler を使用してデータをエクスポートします。デフォルトでは、出力ファイルに .csv または .tsv のファイル名拡張子が追加されます。

構文

UNLOAD FROM {<select_statement>|<table_name> [PARTITION (<pt_spec>)]} 
INTO | OVERWRITE
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:CSV 形式でデータをエクスポートし、GZIP ファイルに圧縮

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 コンソールにログインし、oss-cn-hangzhou リージョンにある OSS バケットに mc-unload/data_location/ フォルダを作成し、OSS パスを構築します。OSS バケットの作成方法の詳細については、「コンソールでのバケットの作成」をご参照ください。バケット、リージョン、エンドポイントの情報に基づいて OSS パスを構築します。例:

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

    方法 1:SELECT クエリの使用

    -- 1 つのワーカーが 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:テーブル名を直接指定 (クエリ料金は発生しません)

    -- 1 つのワーカーが 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 コンソールにログインし、oss-cn-hangzhou リージョンにある OSS バケットに mc-unload/data_location/ フォルダを作成し、OSS パスを構築します。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 | OVERWRITE
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

シリアル化・デシリアル化ライブラリを指定します。例えば、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 ファイルの圧縮形式を指定します。SNAPPYLZO がサポートされています。
- '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:PARQUET 形式でデータをエクスポートし、SNAPPY を使用して圧縮

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 コンソールにログインし、oss-cn-hangzhou リージョンにある OSS バケットに mc-unload/data_location/ フォルダを作成し、OSS パスを構築します。OSS バケットの作成方法の詳細については、「コンソールでのバケットの作成」をご参照ください。バケット、リージョン、エンドポイントの情報に基づいて OSS パスを構築します。例:

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

    -- 1 つのワーカーが 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 形式でエクスポート

sale_date='2013' および region='china' が指定されたパーティションのデータを MaxCompute の sale_detail テーブルから PARQUET 形式でエクスポートし、SNAPPY を使用してデータを圧縮します。次のコードは、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 コンソールにログインし、oss-cn-hangzhou リージョンにある OSS バケットに mc-unload/data_location/ フォルダを作成し、OSS パスを構築します。OSS バケットの作成方法の詳細については、「コンソールでのバケットの作成」をご参照ください。バケット、リージョン、エンドポイントの情報に基づいて OSS パスを構築します。例:

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

    -- 1 つのワーカーが 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:TEXTFILE 形式でデータをエクスポートし、区切り文字を指定

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 コンソールにログインし、oss-cn-hangzhou リージョンにある OSS バケットに mc-unload/data_location/ フォルダを作成し、OSS パスを構築します。OSS バケットの作成方法の詳細については、「コンソールでのバケットの作成」をご参照ください。バケット、リージョン、エンドポイントの情報に基づいて OSS パスを構築します。例:

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

    -- 1 つのワーカーが 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 形式で、区切り文字としてカンマを使用します。

ファイル名のプレフィックス、サフィックス、拡張子のカスタマイズ

UNLOAD コマンドを使用して OSS にデータをエクスポートする場合、PROPERTIES または SERDEPROPERTIES のプロパティを使用して、出力ファイルのプレフィックス、サフィックス、および拡張子をカスタマイズできます。

構文

UNLOAD FROM {<select_statement>|<table_name> [PARTITION (<pt_spec>)]}
INTO | OVERWRITE
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:TEXTFILE 形式のファイルをエクスポートし、プレフィックスとサフィックスを追加

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 コンソールにログインし、oss-cn-hangzhou リージョンにある OSS バケットに mc-unload/data_location/ フォルダを作成し、OSS パスを構築します。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>_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 コンソールにログインし、oss-cn-hangzhou リージョンにある OSS バケットに mc-unload/data_location/ フォルダを作成し、OSS パスを構築します。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 file 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 テーブルの Java Database Connectivity (JDBC) 接続文字列。形式は 'jdbc:postgresql://<endpoint>:<port>/<database>?ApplicationName=MaxCompute&[currentSchema=<schema>&][useSSL={true|false}&]table=<holo_table_name>/' です。

StorageHandler

組み込みのハンドラを指定します。値は com.aliyun.odps.jdbc.JdbcStorageHandler に固定されており、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 側: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 は、標準、低頻度アクセス (IA)、アーカイブのストレージクラスを提供します。すべてのストレージクラスはゾーン冗長ストレージをサポートしています。ストレージ課金の詳細については、「ストレージ料金」をご参照ください。

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

    • データ量の変動

      MaxCompute にインポートされたデータは、約 5:1 の圧縮率を持ちます。課金は圧縮後のデータ量に基づきます。

      OSS に保存されたデータについては、データ形式と圧縮方法を指定し、維持する必要があります。MaxCompute からのデータエクスポートでサポートされているデータ形式と圧縮方法の詳細については、「OSS 外部テーブル」をご参照ください。データが圧縮されていない場合、OSS にエクスポートされた後にデータ量は増加します。

    • 後続のクエリコスト

      MaxCompute に保存されたデータはいつでもクエリできます。ただし、低頻度アクセスやアーカイブなどのストレージクラスを使用する場合、データの読み取りに追加のデータアクセス料金を支払う必要があります。データが低頻度アクセス、アーカイブ、コールドアーカイブなどの非標準の OSS ストレージクラスに保存されている場合、データ取得料金も発生します。ストレージクラスで要求される最小保管期間が満たされる前にデータが削除または取得された場合、早期削除料金を支払う必要がある場合があります。

関連ドキュメント

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