AnalyticDB for MySQL Data Warehouse Edition (V3.0) クラスターから、外部テーブルを経由して MaxCompute のパーティションテーブルへデータをエクスポートします。まず、送信先の MaxCompute テーブルに対応する外部テーブルを作成し、その後 INSERT 文を実行して対象のパーティションにデータを書き込みます。
前提条件
開始する前に、以下の条件を満たしていることを確認してください。
MaxCompute 内に送信先テーブルが作成済みであること。はじめに、「Alibaba Cloud アカウントの作成」をご参照ください。テーブルの作成については、「テーブルの作成」をご参照ください。参考として、以下に MaxCompute のパーティションテーブルを作成する例を示します。詳細については、「テーブル操作」をご参照ください。
ハッシュパーティションを指定したテーブルの作成:
CREATE TABLE IF NOT EXISTS odps_table ( uid STRING ) PARTITIONED BY (ds STRING) LIFECYCLE 3;リストパーティションを指定したテーブルの作成:
CREATE TABLE IF NOT EXISTS odps_table ( uid STRING ) PARTITIONED BY (ds STRING,other STRING) LIFECYCLE 3;
AnalyticDB for MySQL Data Warehouse Edition (V3.0) クラスターが存在し、ホワイトリストが設定済みで、データベースアカウントおよびデータベースが作成済みであること。「クラスターの作成」をご参照ください。
(弾性モードを使用する場合)「ネットワーク情報」セクションの「クラスター情報」ページで、Elastic Network Interface (ENI) が有効化されていること。
各エクスポート操作は、単一のパーティションに対してデータを書き込みます。複数のパーティションにデータをエクスポートするには、各パーティションごとに個別の INSERT 文を実行してください。MaxCompute では、最大 6 段階のパーティションレベルがサポートされています。
仕組み
各エクスポート処理は、以下の 3 つのステップで実行されます。
AnalyticDB for MySQL クラスターに接続します。
AnalyticDB for MySQL 内に、送信先の MaxCompute テーブルに対応する外部テーブルを作成します。
INSERT 文を実行して、AnalyticDB for MySQL のテーブルから MaxCompute のパーティションへデータを書き込みます。
この外部テーブルでは、ENGINE='ODPS' および TABLE_PROPERTIES JSON オブジェクトを用いて接続を確立します。AnalyticDB for MySQL は、パブリックエンドポイントではなく、VPC エンドポイントを介してのみ MaxCompute にアクセスできます。
ハッシュパーティションを備えた MaxCompute テーブルへのデータエクスポート
この例では、AnalyticDB for MySQL の adb_table から、odps_table(ds 列に基づく単一レベルのハッシュパーティションを備えた MaxCompute テーブル)へデータをエクスポートします。
ステップ 1:ご利用の AnalyticDB for MySQL クラスターに接続
「AnalyticDB for MySQL クラスターへの接続」をご参照ください。
ステップ 2:外部テーブルの作成
CREATE TABLE odps_external_table
(
uid string,
ds string
)
ENGINE='ODPS'
TABLE_PROPERTIES='{
"endpoint":"http://service.odps.aliyun-inc.com/api",
"accessid":"<your-accesskey-id>",
"accesskey":"<your-accesskey-secret>",
"project_name":"<your-maxcompute-project>",
"table_name":"odps_table",
"partition_column":"ds"
}'| パラメーター | 説明 |
|---|---|
ENGINE='ODPS' | エンジンを MaxCompute に設定します。 |
TABLE_PROPERTIES | AnalyticDB for MySQL が MaxCompute にアクセスし、データを書き込むために使用する接続詳細です。 |
endpoint | MaxCompute の VPC エンドポイントです。リージョンごとのエンドポイント値については、「エンドポイント」をご参照ください。 |
accessid | 送信先 MaxCompute テーブルにアクセスするために使用する AccessKey ID です。 |
accesskey | 送信先 MaxCompute テーブルにアクセスするために使用する AccessKey Secret です。 |
project_name | 送信先テーブルを含む MaxCompute プロジェクトです。 |
table_name | MaxCompute 内の送信先テーブルの名前です。 |
partition_column | パーティション列です。ハッシュパーティションテーブルの場合、単一のパーティション列を指定します。 |
ステップ 3:対象パーティションへのデータエクスポート
INSERT [OVERWRITE] INTO odps_external_table PARTITION(ds='20200401')
SELECT [adb_table_column, ...] FROM adb_table [WHERE ...]SELECT 句の列リストには、パーティション列(ds)を含めないでください。PARTITION 句によってパーティション値が指定されます。
リストパーティションを備えた MaxCompute テーブルへのデータエクスポート
この例では、AnalyticDB for MySQL の adb_table から、odps_table(ds および other 列に基づく 2 段階のリストパーティションを備えた MaxCompute テーブル)へデータをエクスポートします。
ステップ 1:ご利用の AnalyticDB for MySQL クラスターに接続
「AnalyticDB for MySQL クラスターへの接続」をご参照ください。
ステップ 2:外部テーブルの作成
CREATE TABLE odps_external_table
(
uid string,
ds string,
other string
)
ENGINE='ODPS'
TABLE_PROPERTIES='{
"endpoint":"http://service.odps.aliyun-inc.com/api",
"accessid":"<your-accesskey-id>",
"accesskey":"<your-accesskey-secret>",
"project_name":"<your-maxcompute-project>",
"table_name":"odps_table",
"partition_column":"ds,other"
}'複数段階のリストパーティションを備えたテーブルでは、partition_column を、パーティションレベル順にカンマ区切りで並べたパーティション列のリストとして指定します。
ステップ 3:対象パーティションへのデータエクスポート
INSERT [OVERWRITE] INTO odps_external_table PARTITION(ds='20200401',other='hangzhou')
SELECT [adb_table_column, ...] FROM adb_table [WHERE ...]SELECT 句の列リストには、パーティション列(ds、other)を含めないでください。PARTITION 句によってパーティション値が指定されます。