メインコンテンツまでスキップ

MaxComputeからDorisへ

この文書では、MaxCompute カタログを使用して、Alibaba Cloud MaxComputeからApache Dorisにデータを迅速にインポートする方法について説明します。

この文書はApache Dorisバージョン2.1.9に基づいています。

環境準備

01 MaxCompute Open Storage APIの有効化

MaxCompute Consoleの左側ナビゲーションバーからテナント管理 -> テナントプロパティ -> Open Storage (Storage API) スイッチをオンにしてください。

02 MaxCompute権限の有効化

DorisはAK/SKを使用してMaxComputeサービスにアクセスします。AK/SKに対応するIAMユーザーが、対応するMaxComputeサービスに対して以下のロールまたは権限を持っていることを確認してください:

{
"Statement": [{
"Action": ["odps:List",
"odps:Usage"],
"Effect": "Allow",
"Resource": ["acs:odps:*:regions/*/quotas/pay-as-you-go"]}],
"Version": "1"
}

03 DorisとMaxComputeのネットワーク環境の確認

DorisクラスターとMaxComputeサービスが同一VPC内にあり、正しいセキュリティグループが設定されていることを強く推奨します。

本ドキュメントの例は、同一VPCネットワーク環境でテストされています。

MaxComputeデータのインポート

01 Catalogの作成

CREATE CATALOG mc PROPERTIES (
"type" = "max_compute",
"mc.default.project" = "xxx",
"mc.access_key" = "AKxxxxx",
"mc.secret_key" = "SKxxxxx",
"mc.endpoint" = "xxxxx"
);

サポートスキーマレベル (3.1.3+):

CREATE CATALOG mc PROPERTIES (
"type" = "max_compute",
"mc.default.project" = "xxx",
"mc.access_key" = "AKxxxxx",
"mc.secret_key" = "SKxxxxx",
"mc.endpoint" = "xxxxx",
'mc.enable.namespace.schema' = 'true'
);

詳細についてはMaxCompute Catalogのドキュメントを参照してください。

02 TPCHデータセットのインポート

MaxComputeのパブリックデータセット内のTPCH 100データセットを例として使用し(データはすでにMaxComputeにインポート済み)、CREATE TABLE AS SELECT文を使用してMaxComputeのデータをDorisにインポートします。

このデータセットには7つのテーブルが含まれています。最大のテーブルであるlineitemは16列、600,037,902行を持ち、約30GBのディスク容量を占有します。

-- switch catalog
SWITCH internal;
-- create database
CREATE DATABASE tpch_100g;
-- ingest data
CREATE TABLE tpch_100g.lineitem AS SELECT * FROM mc.selectdb_test.lineitem;
CREATE TABLE tpch_100g.nation AS SELECT * FROM mc.selectdb_test.nation;
CREATE TABLE tpch_100g.orders AS SELECT * FROM mc.selectdb_test.orders;
CREATE TABLE tpch_100g.part AS SELECT * FROM mc.selectdb_test.part;
CREATE TABLE tpch_100g.partsupp AS SELECT * FROM mc.selectdb_test.partsupp;
CREATE TABLE tpch_100g.region AS SELECT * FROM mc.selectdb_test.region;
CREATE TABLE tpch_100g.supplier AS SELECT * FROM mc.selectdb_test.supplier;

16C 64GスペックのBEが1台のDorisクラスターにおいて、上記の操作はシリアルに実行すると約6〜7分かかります。

03 Github Event Datasetのインポート

MaxComputeのパブリックデータセットのGithub Event datasetを例として使用し(データは既にMaxComputeにインポート済み)、CREATE TABLE AS SELECT文を使ってMaxComputeのデータをDorisにインポートします。

ここでは、dwd_github_events_odpsテーブルから'2015-01-01'から'2016-01-01'までの365パーティションのデータを選択します。このデータは32列、212,786,803行で、約10GBのディスク容量を占有します。

-- switch catalog
SWITCH internal;
-- create database
CREATE DATABASE github_events;
-- ingest data
CREATE TABLE github_events.dwd_github_events_odps
AS SELECT * FROM mc.github_events.dwd_github_events_odps
WHERE ds BETWEEN '2015-01-01' AND '2016-01-01';

16C 64Gスペックの単一BEを持つDorisクラスタでは、上記の操作に約2分かかります。