重要 Data Lakehouse Edition は新規購入が終了しています。すでに Data Lakehouse Edition クラスターをご購入済みの場合、本トピックの手順に従ってご利用いただけます。
事前準備
Alibaba Cloud アカウントをお持ちです。
お持ちでない場合は、 または Alibaba Cloud ウェブサイト から登録してください。組織内で複数のユーザーがリソースを共同で利用する必要がある場合は、Alibaba Cloud アカウント(ルートアカウント)配下に Resource Access Management (RAM) ユーザーを作成し、必要な権限を割り当ててください。これにより、各 RAM ユーザー が、必要なリソースのみにアクセスできるようになります。
初めて AnalyticDB for MySQL Enterprise Edition、Basic Edition、またはData Lakehouse Edition を使用する場合は、「プロダクトの概要」を参照して、AnalyticDB for MySQL のプロダクトの概念、メリット、および一般的なシナリオについて学んでください。
操作手順
ステップ 1:クラスターの作成
AnalyticDB for MySQL コンソール にログインします。ページ右上隅の 作成クラスタ をクリックします。
購入ページで、クラスタータイプを素早く選択できるよう、主要パラメーターを設定します。その他のパラメーターはデフォルト値のままとします。各パラメーターの詳細については、「クラスターの作成」をご参照ください。
設定項目 | 説明 |
プロダクトタイプ | |
バージョン | Enterprise Edition および Basic Edition の詳細については、「エディション」をご参照ください。 |
デプロイモード | |
地域: | クラスターが実行される地理的場所です。購入後にリージョンを変更することはできません。アクセス速度を向上させるため、ビジネスに最も近いリージョンを選択してください。 |
プライマリゾーン | クラスターのプライマリゾーンを選択します。 |
セカンダリゾーン | クラスターのセカンダリゾーンを選択します。プライマリゾーンが障害を起こした場合、サービスは自動的にセカンダリゾーンに切り替わります。この切り替え中、クラスターは読み取り/書き込み不可状態になったり、タイムアウトが発生したりする可能性があります。
重要 このパラメーターを設定するのは、デプロイモード を マルチゾーンデプロイメント に設定した場合のみです。 |
仮想プライベートクラウド(VPC) プライマリゾーンの vSwitch セカンダリゾーンの vSwitch | ネットワークプランに合致する VPC を既に作成済みの場合は、それを選択します。たとえば、ネットワークプランに合致する VPC 内に ECS インスタンスを作成済みの場合は、その VPC を選択します。 ネットワークプランに合致する VPC をまだ作成していない場合は、デフォルト VPC および vSwitch を使用します。 デフォルト VPC および vSwitch が要件を満たさない場合は、独自の VPC および vSwitch を作成します。
重要 Elastic Compute Service (ECS) や ApsaraDB RDS などの他の Alibaba Cloud サービスを利用する場合、AnalyticDB for MySQL クラスターとそれらのサービスが同じ VPC 内にあることを確認してください。そうでないと、内部ネットワーク経由での相互接続が不可能となり、最適なパフォーマンスが得られません。 セカンダリゾーンの vSwitch を設定するのは、デプロイモード を マルチゾーンデプロイメント に設定した場合のみです。
|
予約済みリソースノード仕様 | デフォルトの予約済みリソースノード仕様は 8 ACU です。これにより以下が可能になります: |
予約済みリソースノード数 | |
コンソールに表示される残りの購入手順に従って、購入手続きを完了します。
支払いが完了すると、約 10~15 分待ちます。クラスターリスト ページで、クラスターのステータスが 操作中 に変化すれば、クラスターの作成が完了しています。
ステップ 2:データベースアカウントの作成
重要 AnalyticDB for MySQL では、以下のデータベースアカウントがサポートされています:
この Topic では、特権アカウントを例に、その作成ステップを説明します。
クラスター一覧ページで、対象のクラスター ID をクリックして、クラスター詳細ページを開きます。
左側のナビゲーションウィンドウで、アカウント管理 をクリックします。
ユーザーアカウント タブで、アカウントの作成 をクリックします。
アカウントの作成 パネルで、パラメーターを設定します。
パラメーター | 説明 |
データベースアカウント | 特権アカウントの名前です。画面の指示に従って有効な名前を入力してください。 |
アカウントタイプ | 高特権アカウント を選択します。 |
新しいパスワード | 特権アカウントのパスワードです。画面の指示に従って有効なパスワードを入力してください。 |
パスワードの確認 | 特権アカウントのパスワードを再入力します。 |
記述 | 今後の管理を容易にするための、アカウントに関する任意の備考です。 |
を決定 をクリックしてアカウントを作成します。
説明 標準アカウントを作成した後は、アカウント横の 操作 をクリックし、権限 をクリックして、その権限を設定してください。
ステップ 3:リソースグループの作成
AnalyticDB for MySQL では、リソースグループ間で計算リソースが分離されており、コアワークロードが複雑な計算や予期しない負荷の急増から保護されます。
今後のジョブ開発およびテストを容易にするため、本セクションでは ジョブリソースグループ を例として、その作成手順を説明します。また、ジョブ開発の種類に応じて、対応するエンジン用のリソースグループを作成することもできます。サポートされているリソースグループの種類を以下に示します。「リソースグループおよび計算エンジン」の詳細については、「リソースグループの作成と管理」および「機能」をご参照ください。
種類 | 実行されるタスク | 一般的なユースケース |
インタラクティブリソースグループ | 作成時にエンジンを指定する必要があります。サポートされるタスクは以下のとおりです: | 高 QPS、低応答時間(RT)のオンラインまたはインタラクティブ分析シナリオ。 |
ジョブリソースグループ | 作成時にエンジンは不要です。以下のタスクをサポートします: | スループット重視のオフラインシナリオ。 |
AI リソースグループ | MLSQL モデル実行および Ray 管理コンピューティング。 | 異種コンピューティングシナリオ。 |
クラスター詳細ページの左側ナビゲーションウィンドウで、 > リソース管理 をクリックします。
タブをクリックします。リソースグループ一覧の左上隅にある 新規リソースグループ をクリックします。
リソースグループ名 を入力します。タスクタイプ には ジョブ を選択します。
説明 本チュートリアルでは、最小リソースを計算する を 0 ACU、最大リソースの計算 を 8 ACU に設定します。これらの値はクイックスタートのテスト専用です。
を決定 をクリックします。
ステップ 4:(任意)SQL エディターで組み込みテストスクリプトを実行
説明 クラスターを素早く試すかテストするだけの場合は、本セクションの手順に従って、組み込みデータセットを読み込んで分析してください。
クラスター詳細ページの左側ナビゲーションウィンドウで、 をクリックします。
ライブラリテーブル タブで、組み込みデータセットの読み込み をクリックします。
スクリプト タブで、スクリプトをダブルクリックし、SQLConsole で SQL 文を実行してクラスターをテストします。
ステップ 5:ジョブの開発
ジョブ開発(外部テーブル)
Spark SQL を使用した外部テーブルジョブの開発
以下の手順に従います:

AnalyticDB for MySQL クラスターと同じリージョンで OSS バケットおよびディレクトリを作成します。詳細については、「OSS の有効化」、「OSS バケットの作成(コンソール)」、「ディレクトリの作成」をご参照ください。
OSS Hudi 外部テーブルを作成します。
クラスター詳細ページの左側ナビゲーションウィンドウで、 をクリックします。
SQLConsole ウィンドウで、Spark エンジン、ジョブリソースグループ、または Spark エンジン付きインタラクティブリソースグループを選択します。
以下の文を入力し、SQL の実行 (F8) をクリックして、Hudi データを格納する外部データベース spark_external_db を作成します。この例ではパス oss://testBucketName/adb-test-1/ を使用します。
CREATE DATABASE spark_external_db
LOCATION 'oss://testBucketName/adb-test-1/';
spark_hudi_table という名前の外部テーブルを spark_external_db データベース内に作成し、Hudi データを格納します。この例ではパス oss://testBucketName/adb-test-1/spark_external_db/ を使用します。
CREATE TABLE spark_external_db.spark_hudi_table
(id int,
name string,
score int,
city string
)
using hudi
partitioned by (id)
tblproperties
(primaryKey = 'id',
preCombineField = 'city')
LOCATION 'oss://testBucketName/adb-test-1/spark_external_db/';
データを挿入します。
INSERT OVERWRITE spark_external_db.spark_hudi_table PARTITION(id) VALUES
(001,'Anna',99,'London'),
(002,'Bob',67,'USA'),
(003,'Cindy',78,'Spain'),
(004,'Dan',100,'China');
OSS Hudi 外部テーブルのデータをクエリします。
以下の文を入力し、SQL の実行 (F8) をクリックして、外部テーブル spark_hudi_table のデータをクエリします。
SELECT * FROM spark_external_db.spark_hudi_table;
説明 Data Lakehouse Edition クラスターに計算予約リソースが設定されている場合、または Enterprise Edition クラスターに予約済みリソースが設定されている場合、Xihe MPP SQL オンラインモード(Xihe エンジンおよびインタラクティブリソースグループを選択)を使用して外部テーブルのデータをクエリできます。
ページの アプリケーションリスト 一覧で、SQL クエリの横にある 操作 をクリックし、ログ をクリックします。ログでテーブルのデータを確認します。
Xihe BSP SQL を使用した外部テーブルジョブの開発
以下の手順に従います:

AnalyticDB for MySQL クラスターと同じリージョンで OSS バケットおよびディレクトリを作成します。詳細については、「OSS の有効化」、「OSS バケットの作成(コンソール)」、「ディレクトリの作成」をご参照ください。
サンプルデータをアップロードします。
この例では、データファイル xihe_oss.txt を OSS パス oss://adb-test-1/test_xihe/ にアップロードします。行は改行で区切られ、列はカンマ(,)で区切られます。サンプルデータは以下のとおりです:
001,Anna,99,London
002,Bob,67,USA
003,Cindy,78,Spain
004,Dan,100,China
OSS 外部テーブルを作成します。
クラスター詳細ページの左側ナビゲーションウィンドウで、 をクリックします。
SQLConsole ウィンドウで、ジョブリソースグループおよび Xihe エンジンを選択します。
以下の文を入力し、SQL の実行 (F8) をクリックして、外部データベース xihe_external_db を作成します。
CREATE EXTERNAL DATABASE xihe_external_db;
以下の文を入力し、SQL の実行 (F8) をクリックして、外部テーブル xihe_oss_table を作成します。
CREATE EXTERNAL TABLE xihe_external_db.xihe_oss_table
(
id int ,
name string ,
score int,
city string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION 'oss://adb-test-1/test_xihe/xihe_oss.txt';
OSS 外部テーブルをクエリします。
以下の文を入力し、SQL の実行 (F8) をクリックして、外部テーブル xihe_oss_table のデータをクエリします。
SELECT * FROM xihe_external_db.xihe_oss_table;
説明 Data Lakehouse Edition クラスターに計算予約リソースが設定されている場合、または 、Xihe MPP SQL オンラインモード(Xihe エンジンおよびインタラクティブリソースグループを選択)を使用して外部テーブルのデータをクエリできます。
ジョブ開発(内部テーブル)
AnalyticDB for MySQL は、3 層構造のデータウェアハウスアーキテクチャを採用しています:
ODS レイヤー:運用データストア(ODS)レイヤー。ソースデータに対して抽出・変換・書き出し(ETL)を実行します。実際には、ODS がデータソースからデータをプルします。新規ユーザーが本チュートリアルを簡単に完了できるよう、本チュートリアルではテストデータを ODS レイヤーに読み込みます。
DWD レイヤー:データウェアハウス詳細(DWD)レイヤー。ODS レイヤーのデータをクリーニングおよびフィルター処理します。本チュートリアルでは、フィルター処理を例として使用します。
ADS レイヤー:アプリケーションデータサービス(ADS)レイヤー。ビジネス分析およびレポート生成に使用されるデータを格納します。
Spark SQL を使用した内部テーブルジョブの開発
ODS レイヤーのデータテーブルを作成します。
クラスター詳細ページの左側ナビゲーションウィンドウで、 をクリックします。
SQLConsole ウィンドウで、Spark エンジンおよびジョブリソースグループを選択します。
以下の文を入力し、SQL の実行 (F8) をクリックして、データベース test_spark_db を作成します。
CREATE DATABASE test_spark_db;
adb_spark_ods という名前のインデックスなしパーティションテーブルを test_spark_db データベース内に ODS レイヤー用に作成し、データを挿入します。
CREATE TABLE test_spark_db.adb_spark_ods
(id int,
name string,
age int)
USING adb
tblproperties (
'distributeType' = 'HASH',
'distributeColumns' = 'id',
'partitionType' = 'VALUE',
'partitionColumn' = 'age',
'partitionCount' = '200',
'indexAll' = 'false')
INSERT OVERWRITE test_spark_db.adb_spark_ods PARTITION(age) VALUES
(001,'Anna',18),
(002,'Bob',22),
(003,'Cindy',12),
(004,'Dan',25);
DWD レイヤーのデータテーブルを作成します。
本チュートリアルでは、ODS レイヤーのテーブルからデータを読み取り、フィルター処理した後、DWD レイヤーのテーブルに書き込みます。
adb_spark_dwd という名前のインデックスなしパーティションテーブルを test_spark_db データベース内に作成します。
CREATE TABLE test_spark_db.adb_spark_dwd (
id int,
name string,
age int
)
USING adb
TBLPROPERTIES(
'distributeType'='HASH',
'distributeColumns'='id',
'partitionType'='value',
'partitionColumn'='age',
'partitionCount'='200',
'indexAll'='false')
(任意)オフラインホットデータをクエリする前に、SQLConsole ウィンドウで Xihe エンジンおよび(インタラクティブ)user_default リソースグループを選択し、以下の文を実行します:
SET adb_config CSTORE_HOT_TABLE_ALLOW_SINGLE_REPLICA_BUILD=true;
SET adb_config ELASTIC_ENABLE_HOT_PARTITION_HAS_HDD_REPLICA=true;
SET adb_config ELASTIC_PRODUCT_ENABLE_MIXED_STORAGE_POLICY=true;
重要 オフラインホットデータをクエリする前にこれらのパラメーターを正しく設定しないと、その後の SQL 文が失敗します。
Spark エンジンに切り替え、adb_spark_ods の ODS レイヤーのテーブルから id 列が 002 でないデータを読み取り、DWD レイヤーのテーブルに書き込みます。
INSERT OVERWRITE test_spark_db.adb_spark_dwd partition(age)
SELECT
id,
name,
age
FROM test_spark_db.adb_spark_ods WHERE id != 002;
adb_spark_dwd テーブルのデータをクエリします。
SELECT * FROM test_spark_db.adb_spark_dwd;
説明 Spark SQL を使用して SELECT 文を実行すると、結果としてテーブルのデータは表示されません。テーブルのデータを表示するには、以下の任意の手順に従ってください。
任意:Spark JAR 開発 ページの アプリケーション 一覧で、SQL クエリの横にある 操作 をクリックし、ログ をクリックします。ログでテーブルのデータを確認します。
ADS レイヤーのデータを作成します。
ADS レイヤーのデータは、DWD レイヤーから精緻化されたフィルター処理を経て派生され、ビジネス分析に直接使用可能な状態です。ADS レイヤーのテーブルは高速なクエリ性能を必要とするため、ADS レイヤーのテーブルを作成する際にインデックスを追加する必要があります。このチュートリアルでは、adb_spark_dwd テーブル(`age` 列の値が 15 より大きい)からデータを読み取り、ADS レイヤーのテーブル adb_spark_ads に書き込みます。
adb_spark_ads という名前のインデックス付きパーティションテーブルを test_spark_db データベース内に作成します。
CREATE TABLE test_spark_db.adb_spark_ads (
id int,
name string,
age int
)
USING adb
TBLPROPERTIES(
'distributeType'='HASH',
'distributeColumns'='id',
'partitionType'='value',
'partitionColumn'='age',
'partitionCount'='200',
'indexAll'='true')
DWD レイヤーのデータテーブル adb_spark_dwd から age が 15 より大きいデータを読み取り、ADS レイヤーのデータテーブル adb_spark_ads に書き込みます。
INSERT OVERWRITE test_spark_db.adb_spark_ads partition(age)
SELECT
id,
name,
age
FROM test_spark_db.adb_spark_dwd WHERE age > 15;
ADS レイヤーのテーブルデータをクエリします。
AnalyticDB for MySQL Enterprise Edition、Basic Edition、および Data Lakehouse Edition クラスターでは、オフラインデータクエリ(Spark SQL または Xihe BSP SQL を使用)およびオンラインリアルタイムクエリ(Xihe MPP SQL を使用)の両方がサポートされています。リアルタイムの結果を保証するため、本チュートリアルでは Xihe MPP SQL オンラインモードを使用して ADS レイヤーのテーブルデータをクエリします。
SQLConsole ウィンドウで、Xihe エンジンおよび(インタラクティブ)user_default リソースグループを選択します。
以下の文を実行して、ADS レイヤーのテーブルデータをクエリします。
SELECT * FROM test_spark_db.adb_spark_ads;
結果:
+------+-------+------+
| id | name | age |
+------+-------+------+
| 4 | Dan | 25 |
| 1 | Anna | 18 |
+------+-------+------+
Xihe BSP SQL を使用したジョブの開発
ODS レイヤーのデータテーブルを作成します。
クラスター詳細ページの左側ナビゲーションウィンドウで、 をクリックします。
SQLConsole ウィンドウで、Xihe エンジンおよびジョブリソースグループを選択します。
以下の文を入力し、SQL の実行 (F8) をクリックします。test_xihe_db という名前のデータベースを作成します。
CREATE DATABASE test_xihe_db;
以下の文を入力し、SQL の実行 (F8) をクリックします。test_xihe_db データベース内に、ODS レイヤー用のインデックスなしパーティションテーブル adb_xihe_ods を作成し、データを挿入します。
CREATE TABLE test_xihe_db.adb_xihe_ods (id int, name string, age int)DISTRIBUTED BY HASH (id)PARTITION BY VALUE (age)LIFECYCLE 4INDEX_ALL='N';
INSERT INTO test_xihe_db.adb_xihe_ods(id,name,age) VALUES(001,'Anna',18),(002,'Bob',22),(003,'Cindy',12),(004,'Dan',25);
DWD レイヤーのデータテーブルを作成します。
本チュートリアルでは、ODS レイヤーのテーブルからデータを読み取り、フィルター処理した後、DWD レイヤーのテーブルに書き込みます。
以下の文を入力し、SQL の実行 (F8) をクリックします。test_xihe_db データベース内に、インデックスなしパーティションテーブル adb_xihe_dwd を作成します。
CREATE TABLE test_xihe_db.adb_xihe_dwd( id int, name string, age int)DISTRIBUTED BY HASH (id)PARTITION BY VALUE (age)LIFECYCLE 4INDEX_ALL = 'N';
以下の文を入力し、SQL の実行 (F8) をクリックします。運用データストア(ODS)レイヤーのテーブル adb_xihe_ods から id 列が 002 でないデータを読み取り、DWD レイヤーのテーブル adb_xihe_dwd に書き込みます。
INSERT INTO test_xihe_db.adb_xihe_dwd SELECT id, name, age FROM test_xihe_db.adb_xihe_ods where id != 002;
以下の文を入力し、SQL の実行 (F8) をクリックします。adb_xihe_dwd テーブルのデータをクエリします。
SELECT * FROM test_xihe_db.adb_xihe_dwd;
結果:
+------+-------+------+| id | name | age |+------+-------+------+| 4 | Ban | 25 || 1 | Anna | 18 || 3 | Cindy | 12 |+------+-------+------+
ADS レイヤーのデータテーブルを作成します。
ADS レイヤーのテーブルデータは、DWD レイヤーからさらに詳細なフィルター処理を経て書き込まれ、ビジネス分析に直接利用可能です。ADS レイヤーのテーブルは、高速なクエリ応答を実現するためにインデックスを備える必要があります。本チュートリアルでは、DWD レイヤーのテーブル adb_xihe_dwd から age 列の値が 15 より大きいデータを読み取り、ADS レイヤーのテーブル adb_xihe_ads に書き込みます。
以下の文を入力し、SQL の実行 (F8) をクリックします。test_xihe_db データベース内に、インデックス付きパーティションテーブル AnalyticDB for MySQL adb_xihe_ads を作成します。
CREATE TABLE test_xihe_db.adb_xihe_ads (id int, name string, age int)DISTRIBUTED BY HASH (id)PARTITION BY VALUE (age)LIFECYCLE 4;
以下の文を入力し、SQL の実行 (F8) をクリックします。DWD レイヤーのデータテーブル adb_xihe_dwd から age 列の値が 15 より大きいデータを読み取り、ADS レイヤーのデータテーブル adb_xihe_ads に書き込みます。
INSERT INTO test_xihe_db.adb_xihe_ads SELECT id, name, age FROM test_xihe_db.adb_xihe_dwd WHERE age > 15;
ADS レイヤーのデータをクエリします。
AnalyticDB for MySQL Data Lakehouse Edition クラスターでは、オフラインデータクエリ(Spark SQL または Xihe BSP SQL を使用)およびオンラインリアルタイムクエリ(Xihe MPP SQL を使用)の両方がサポートされています。リアルタイムの結果を保証するため、本チュートリアルでは Xihe MPP SQL オンラインモードを使用して ADS レイヤーのテーブルデータをクエリします。
SQLConsole ウィンドウで、Xihe エンジンおよび(インタラクティブ)user_default リソースグループを選択します。
以下の文を入力し、SQL の実行 (F8) をクリックします。ADS レイヤーのテーブルデータをクエリします。
SELECT * FROM test_xihe_db.adb_xihe_ads;
結果:
+------+-------+------+| id | name | age |+------+-------+------+| 4 | Ban | 25 || 1 | Anna | 18 |+------+-------+------+
次のステップ
本チュートリアルを完了した後は、「データのインポート」で、以降の手順について詳しくご確認ください。