MaxCompute は、Alibaba Cloud サービス Data Lake Formation (DLF)、ApsaraDB RDS、Realtime Compute for Apache Flink、および Object Storage Service (OSS) に基づく Delta Lake および Apache Hudi ストレージメカニズムをサポートするデータレイクハウス アーキテクチャを構築します。 Delta Lake および Hudi は、データレイク ソリューションで一般的に使用されるストレージメカニズムであり、データレイクにストリーム処理とバッチ処理の機能を提供します。 MaxCompute を介してリアルタイム データをクエリし、ビジネスデータの変更に関するタイムリーな洞察を得ることができます。
背景情報
ほとんどの場合、データレイクの作成と適用プロセスには、データの取り込み、データレイクのストレージと管理、データの探索と分析が含まれます。 MaxCompute は、Delta Lake および Apache Hudi をサポートするデータレイクハウス ソリューションを提供します。 このソリューションは、Alibaba Cloud サービス DLF、ApsaraDB RDS または Realtime Compute for Apache Flink、および OSS に基づいて開発されています。 次の図は、このようなデータレイクハウス ソリューションのアーキテクチャを示しています。

操作 | Alibaba Cloud サービス | 説明 |
オンライン データベース操作 | データレイクのデータソースとして機能します。 | |
リアルタイム コンピューティング | データレイクのデータソースとして機能します。 | |
データの取り込み | ApsaraDB RDS に接続し、データレイクのデータソースを管理します。 | |
データレイクのストレージと管理 | ApsaraDB RDS データベースのデータがデータレイクに取り込まれると、OSS がデータレイクのデータストアとして使用されます。 Delta Lake および Apache Hudi ストレージメカニズムがサポートされています。 DLF は、メタデータ管理機能を使用して、メタデータベースとメタデータテーブルを管理します。 | |
データレイクの探索と分析 |
| データレイクのデータを分析します。 |
前提条件
以下の条件が満たされています。
Data Transmission Service (DTS) がアクティブ化されている。
Resource Access Management (RAM) コンソールの クラウド リソースアクセス認可 ページでワンクリック認可を実行できます。 MaxCompute プロジェクトの Alibaba Cloud アカウントに AliyunDTSDefaultRole ロールを割り当てると、DTS サービスがアクティブ化されます。
ApsaraDB RDS for MySQL インスタンス またはフルマネージド Flink インスタンスが作成されている。
DLF、ApsaraDB RDS for MySQL、および OSS に基づいて Delta Lake または Apache Hudi ストレージメカニズムをサポートするデータレイクハウス ソリューションを実装する場合、ApsaraDB RDS for MySQL インスタンスを作成する必要があります。
DLF、Realtime Compute for Apache Flink、および OSS に基づいて Apache Hudi ストレージメカニズムをサポートするデータレイクハウス ソリューションを実装する場合、フルマネージド Flink インスタンスを作成する必要があります。 フルマネージド Flink インスタンスの作成方法の詳細については、「フルマネージド Flink をアクティブ化する」をご参照ください。
DLF がアクティブ化されている。
MaxCompute プロジェクトが作成されている。 このプロジェクトは外部プロジェクトではありません。
次の例は、中国 (上海) リージョンに属する
doc_test_prodという名前の MaxCompute プロジェクトを示しています。
制限事項
Delta Lake または Apache Hudi ストレージメカニズムに基づくデータレイクハウス ソリューションには、次の制限があります。
データレイクハウス ソリューションは、中国 (杭州)、中国 (上海)、中国 (北京)、中国 (張家口)、中国 (深圳)、中国 (香港)、シンガポール、およびドイツ (フランクフルト) リージョンでサポートされています。
MaxCompute は、DLF、OSS、および ApsaraDB RDS または Realtime Compute for Apache Flink と同じリージョンにデプロイする必要があります。
MaxCompute では、Apache Hudi または Delta Lake ファイルのすべてのカラムを読み取ることができます。 増分データ読み取り、スナップショット読み取り、データ書き込みなどの操作はサポートされていません。
DLF、ApsaraDB RDS、および OSS に基づく Delta Lake または Apache Hudi ストレージメカニズム
手順
ステップ 1: MaxCompute に DLF および OSS へのアクセス権限を付与する
MaxCompute プロジェクトを管理する Alibaba Cloud アカウントに、DLF および OSS へのアクセス権限を付与します。
データレイクの統一ストレージパスとして OSS バケットを作成します。
ApsaraDB RDS データベースを作成し、データレイクに取り込むデータを準備します。
ステップ 4: DLF にデータソースを追加し、メタデータベースを作成する
ApsaraDB RDS を DLF のデータソースとして追加します。
ステップ 5: DLF コンソールでデータ取り込みタスクを作成して開始する
DLF コンソールでデータ取り込みタスクを作成して、ApsaraDB RDS データベースからテーブルデータを同期し、データをリアルタイムでデータレイクに再生します。
ステップ 6: MaxCompute に基づいてデータレイクのデータを分析する
DataWorks コンソールの Lake and Warehouse Integration (Data Lakehouse) ページで外部プロジェクトを作成して、データレイクのデータを分析します。
ステップ 1: MaxCompute に DLF および OSS へのアクセス権限を付与する
MaxCompute プロジェクトを管理する Alibaba Cloud アカウントは、認可なしでは DLF または OSS にアクセスできません。 Alibaba Cloud アカウントを認可するには、次のいずれかの方法を使用できます。
ワンクリック認可: 同じアカウントを使用して MaxCompute プロジェクトを作成し、DLF および OSS をデプロイする場合、Resource Access Management (RAM) コンソールの クラウド リソースアクセス認可 ページでワンクリック認可を実行することをお勧めします。
カスタム認可: この方法は、同じアカウントを使用して MaxCompute プロジェクトを作成し、DLF および OSS をデプロイするかどうかに関係なく使用できます。 詳細については、「RAM ユーザーに DLF へのアクセスを認可する」をご参照ください。
ステップ 2: OSS でバケットとフォルダを作成する
データレイクの統一ストレージパスとして OSS バケットを作成します。
OSS コンソール にログインします。
左側のナビゲーションウィンドウで、[バケット] をクリックします。 [バケット] ページで、[バケットの作成] をクリックします。
[バケットの作成] パネルで、[バケット名] パラメータを構成し、リージョンを選択して、[作成] をクリックします。 たとえば、バケット名パラメータを
mc-dlf-ossに設定し、リージョン ドロップダウンリストから中国 (上海)リージョンを選択できます。
[バケット] ページで、作成したバケットの名前をクリックして、[オブジェクト] ページに移動します。
ページの右側にある [ディレクトリの作成] をクリックします。 [ディレクトリの作成] パネルで、[ディレクトリ名] (例: datalaketest) を指定し、[OK] をクリックします。

ステップ 3: データレイクに取り込むデータを準備する
ApsaraDB RDS データベースを構築し、テーブルを作成し、データレイクに取り込むデータを準備します。
ApsaraDB RDS コンソールの [インスタンス] ページに移動します。 上部のナビゲーションバーで、
中国 (上海)などのリージョンを選択します。 次に、インスタンスリストで使用したいインスタンスの ID をクリックします。 この例では、ApsaraDB RDS for MySQL インスタンスが使用されています。ApsaraDB RDS データベースアカウントを作成します。 インスタンス詳細ページの左側のナビゲーションウィンドウで、[アカウント管理] をクリックします。 [ユーザーアカウント] タブで、[アカウントを作成する] をクリックします。 [アカウントの作成] パネルで、パラメータを構成し、[OK] をクリックします。 次の表にパラメータを示します。

パラメータ
説明
例
[データベースアカウント]
ApsaraDB RDS データベースへのアクセスに使用するアカウント。 この情報は、データベースの作成時に ApsaraDB RDS データベースに関連付けられます。
datalake_mcdbuser
[アカウントタイプ]
アカウントのタイプ。 有効な値:
[一般アカウント]: このアカウントを ApsaraDB RDS データベースに関連付ける必要があります。
[特権アカウント]: このアカウントは、ApsaraDB RDS インスタンスのすべてのデータベースに対する権限を持っています。 特権アカウントに特定のデータベースに対する権限を付与する必要はありません。
一般アカウント
[新しいパスワード]
アカウントのパスワード。
なし
[パスワードの確認]
アカウントのパスワードを確認します。
なし
パラメータの詳細については、「ApsaraDB RDS for MySQL インスタンスのデータベースとアカウントを作成する」をご参照ください。
ApsaraDB RDS データベースを作成します。 インスタンス詳細ページの左側のナビゲーションウィンドウで、[データベース] をクリックします。 ページの右側にある [データベースの作成] をクリックします。「データベースの作成」パネルで、パラメータを構成し、「作成」をクリックします。 次の表にパラメータを示します。
パラメータ
説明
[データベース名]
名前は 2 ~ 64 文字の長さでなければなりません。
文字で始まり、文字または数字で終わる必要があります。
小文字、数字、アンダースコア (_)、またはハイフン (-) で構成できます。
データベース名はインスタンス内で一意である必要があります。
説明データベース名にハイフン (
-) が含まれている場合、作成されたデータベースの対応するフォルダ名は、ハイフン (-) を@002dに置き換えます。[サポートされている文字セット]
必要に応じて文字セットを選択します。
[認可者]
このデータベースにアクセスする必要があるアカウントを選択します。 このパラメータは空のままにすることができ、データベースの作成後にアカウントをバインドできます。 詳細については、「アカウント権限を変更する」をご参照ください。
説明高特権アカウントはすべてのデータベースに対するすべての権限を自動的に持つため、認可を必要としないため、ここに表示されるのは標準アカウントのみです。
[説明]
オプション。 このパラメータは、後続のデータベース管理を容易にするために、データベースに関する注釈を追加するために使用されます。 最大 256 文字まで入力できます。
ApsaraDB RDS データベースにテーブルを作成し、少量のテストデータをテーブルに挿入します。 詳細については、「DMS を使用して ApsaraDB RDS for MySQL インスタンスにログインする」をご参照ください。 この例では、anti_fraud_result という名前のテーブルが作成されます。 サンプルステートメント:
CREATE TABLE `anti_fraud_result` ( `transactionid` varchar(32) NOT NULL, `uid` varchar(32) DEFAULT NULL, `card` varchar(32) DEFAULT NULL, `longitude` double(12,8) DEFAULT '12.00000000', `latitude` double(12,8) DEFAULT '12.00000000', PRIMARY KEY (`transactionid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ; INSERT INTO `anti_fraud_result` values ("12489571","82005","123123",3.14592040,101.12315432); INSERT INTO `anti_fraud_result` values ("12489572","82005","123123",3.14592040,101.12315432); INSERT INTO `anti_fraud_result` values ("12489573","82005","123123",3.14592040,101.12315432); INSERT INTO `anti_fraud_result` values ("12489574","82005","123123",3.14592040,101.12315432);
(オプション) ステップ 4: DLF にデータソースを追加し、メタデータベースを作成する
このステップは、ステップ 5: DLF コンソールでデータ取り込みタスクを作成して開始する で単一テーブルのバッチ同期を使用する場合に必要です。 リアルタイム データベース同期を使用する場合は、このステップをスキップしてください。
DLF でデータレイクのデータを管理するためのメタデータベースを作成します。
DLF コンソール にログインします。 上部のナビゲーションバーで、
中国 (上海)などのリージョンを選択します。datalake メタデータベースなどのメタデータベースを作成します。
DLF コンソールの左側のナビゲーションウィンドウで、 > を選択します。 ページの Database タブで、Create Database をクリックします。
Create Database ダイアログボックスで、パラメータを構成します。 次の表にパラメータを示します。
パラメータ
説明
例
カタログ
データが保存されているデータベースカタログの名前。
default
データベース名
ターゲット メタデータベースの名前。
dlf_db
データベースの説明
作成するメタデータベースの説明。
データレイクハウス
パスの選択
データファイルが保存されている OSS ディレクトリ。 ディレクトリは
oss://<バケット名>/<OSS ディレクトリ名>形式である必要があります。oss://doc-test-01/datalake/
[OK] をクリックします。
ステップ 5: DLF コンソールでデータ取り込みタスクを作成して開始する
DLF のデータ取り込み機能は更新されなくなりました。 次のいずれかの方法を使用して、データを Delta Lake ファイルまたは Apache Hudi ファイルとしてデータレイクに取り込むことができます。
データを Delta Lake ファイルとして取り込むには、単一テーブルのバッチ同期ソリューションを選択できます。
データを Apache Hudi ファイルとして取り込むには、リアルタイム データベース同期ソリューションを選択することをお勧めします。 また、パーティション化されていない Apache Hudi ファイルとしてデータを取り込むために、単一テーブルのバッチ同期ソリューションを使用することもできます。 DataWorks コンソールの DataStudio ページでバッチ同期タスクを作成する必要はありません。 リレーショナルデータベースからデータレイクにすべてのデータを挿入するためのタスクを直接作成できます。 詳細については、このトピックの OSS データの形式変換 の説明をご参照ください。
単一テーブルのバッチ同期
DataWorks コンソールの [DataStudio] ページで、バッチ同期タスクを作成してデータレイクにデータを取り込みます。
バッチ同期タスクを作成します。
ApsaraDB RDS for MySQL データソースを準備します。
DataWorks で ApsaraDB RDS for MySQL を構成します。 詳細については、「MySQL データソースを追加する」をご参照ください。
OSS データソースを準備します。
DataWorks で OSS データソースを構成します。 詳細については、「OSS データソースを追加する」をご参照ください。
データ同期タスクを作成して実行します。
DataWorks コンソールの DataStudio ページで、バッチ同期タスクを作成します。 詳細については、「コードレス UI を使用してバッチ同期タスクを構成する」をご参照ください。 以下のコンテンツでは、構成する必要がある主要なパラメータについて説明します。
ネットワーク接続とリソースグループを構成します。

パラメータ
説明
ソース
ソース
MySQL を選択します。
データソース名
作成した ApsaraDB RDS for MySQL データソースの名前を選択します。
リソースグループ
リソースグループ
データ統合専用リソースグループを選択します。
ターゲット
ターゲット
OSS を選択します。
データソース名
作成した OSS データソースを選択します。
タスクを構成します。
[タスクの構成] ステップで、「テーブル」および「ファイル名 (パスを含む)」パラメータを指定します。
パラメータ
説明
テーブル
ApsaraDB RDS データベースに作成されたテーブルの名前を選択します。
ファイル名 (パスを含む)
ファイル名は、<OSS に作成されたファイルディレクトリ>/<OSS にエクスポートされるデータファイルの名前> 形式である必要があります。
例:
doc-test-01/datalake/anti.csv。バッチ同期タスクの構成ページの左上隅にある
アイコンをクリックして構成を保存し、
アイコンをクリックしてタスクを実行します。タスクが DataWorks で正常に実行された後、データが OSS ディレクトリにインポートされたかどうかを確認できます。
OSS データの形式を変換し、データをデータレイクに取り込みます。
DLF コンソール にログインします。 上部のナビゲーションバーで、[リージョン] を選択します。
左側のナビゲーションウィンドウで、[データの取り込み] > [取り込みタスク] を選択します。
[データ取り込みタスク] ページで、[取り込みタスクの作成] をクリックします。 表示されるページで、[OSS データ形式変換] を選択し、[次へ] をクリックします。
説明データ形式を Apache Hudi に変換する場合は、[タスクの種類] を [RDS フルデータインジェスチョン] に設定します。
表示されるページで、次の表に示すパラメータを構成し、その他のパラメータのデフォルト値を保持して、[OK] をクリックします。
OSS データ形式変換
セクション
パラメータ
説明
例
データソースの構成
OSS ストレージパス
データソースが保存されている OSS ディレクトリ。 ディレクトリは
oss://<バケット名>/<OSS ディレクトリ名>/形式である必要があります。oss:/doc-test-01/datalake/
ストレージ形式
ソーステーブルのデータ形式。
CSV
ターゲット データレイクの構成
ターゲット データベース
ターゲットテーブルを保存するデータベース。
datalake
ターゲット テーブル名
ジョブ用に作成するテーブルの名前。
anti_rds
ストレージ形式
ターゲットテーブルのデータ形式。
Delta
データレイクのストレージ場所
データが保存されている OSS ディレクトリ。 ディレクトリは
oss://<バケット名>/<OSS ディレクトリ名>/形式である必要があります。oss:/doc-test-01/dlf/
タスク情報の構成
タスクインスタンス名
データ取り込みタスクの名前。
OSS データ取り込みのための Delta 形式変換
最大リソース並列度
同時に実行できるワーカーノードの最大数。 DLF は、データの取り込みを完了するためにワーカーノードを起動します。
20
RDS フルデータ取り込み
セクション
パラメータ
説明
例
データソースの構成
データソース
同じリージョンおよび同じアカウントにある RDS インスタンスを表示します。 ドロップダウンリストからターゲット データソースを選択できます。
なし
テーブルパス
同期するソーステーブルのパス。 形式:
<データベース名>/<テーブル名>。なし
ターゲット データレイクの構成
ターゲット データベース
ターゲットテーブルを保存するデータベース。
database_1
ターゲット テーブル名
ジョブ用に作成するテーブルの名前。
anti_rds
ストレージ形式
ターゲットテーブルのデータ形式。
Hudi
データレイクのストレージ場所
データが保存されている OSS ディレクトリ。 ディレクトリは
oss://<バケット名>/<OSS ディレクトリ名>/形式である必要があります。oss:/doc-test-01/dlf/
パーティション情報
パーティションを追加できます。 データレイクに書き込まれたデータは、パーティションとして使用されます。
なし
タスク情報の構成
タスクインスタンス名
データ取り込みタスクの名前。
リレーショナルデータベースの Apache Hudi 形式のフルデータの取り込み
最大リソース並列度
同時に実行できるワーカーノードの最大数。 DLF は、データの取り込みを完了するためにワーカーノードを起動します。
20
DLF コンソールの [データ取り込みタスク] ページで、作成したタスクを見つけ、[操作] カラムの [実行] をクリックし、「OK」をクリックしてタスクを開始します。
タスクの [進捗状況] が 100% に達すると、OSS データ形式が変換されます。
[メタデータ] ページの [データベース] タブをクリックし、ターゲット データベースの名前をクリックします。 [テーブルリスト] タブで、テーブルが作成されているかどうかを確認します。
リアルタイムデータベース同期
[Data Integration] モジュールで、Apache Hudi 形式のデータをデータレイクに取り込むためのリアルタイムデータベース同期タスクを作成します。詳細については、「MySQL データベースのすべてのデータを OSS のデータレイクにリアルタイムで同期する」をご参照ください。以下の内容は、構成する必要がある主要なパラメーターについて説明しています。
ApsaraDB RDS for MySQL データソースを準備します。
DataWorks で ApsaraDB RDS for MySQL を構成します。詳細については、「MySQL データソースを追加する」をご参照ください。
OSS データソースを準備します。
DataWorks で OSS データソースを構成します。詳細については、「OSS データソースを追加する」をご参照ください。
同期タスクのページで、以下のパラメーターを構成します。
ネットワーク接続とリソースグループを構成します。
パラメーター
説明
ソース
ソース
MySQL を選択します。
データソース名
作成した ApsaraDB RDS for MySQL データソースの名前を選択します。
リソースグループ
データ同期用リソースグループ
データ統合専用リソースグループを選択します。
同期先
同期先
OSS を選択します。
データソース名
作成した OSS データソースを選択します。
データを同期するテーブルを選択します。
表示される構成ページの左側で、データを同期するデータベースとテーブルを検索するためのフィルター条件を指定できます。
表示される構成ページの右側で、データを同期するデータベースとテーブルをプレビューできます。
ソースデータベースとソーステーブルの数に基づいて、必要なデータベースとテーブルをすばやく選択するには、次の手順を参照できます。
少数のデータベースとテーブルからのみデータを同期する場合は、ソースデータベースとテーブルをプレビューし、データベースとテーブルを選択済みデータベースとテーブルに移動するときに、必要なデータベースとテーブルを手動で選択できます。その後、システムは構成ページの左側にフィルター条件を自動的に追加します。
複数のソース、ソースデータベース、およびソーステーブルからデータを同期する場合は、データを同期するデータベースとテーブルを検索するためのフィルター条件を手動で指定できます。構成ページの右側の検索ボックスにキーワードを指定して、必要なデータベースとテーブルを検索し、データベースとテーブルを追加または削除することもできます。
データインジェストタスクを構成します。
[OSS ストレージパス]: 同期データを格納する OSS パスを選択します。
[メタデータベースを作成する場所]: [DLF] を選択します。
[メタデータベース名のプレフィックス]: システムはソースデータベースの名前に基づいてメタデータベースを自動的に作成します。メタデータベース名のプレフィックスを手動で指定できます。指定されたプレフィックスは、作成されるメタデータベースとメタテーブルに自動的に追加されます。
[データレイク形式]: [Hudi] を選択します。
[パーティション情報]
以下の変数がサポートされています: ${yyyy}、${MM}、${dd}、および ${HH}。時間は時間単位までしか正確ではありません。
変数は文字列と連結できます。たとえば、アンダースコア (_) を使用して変数を連結して、${yyyy}_${MM}_${dd}_${HH} などの文字列を形成できます。
複数レベルのパーティションを指定できます。これにより、複数レベルのパーティションを含むテーブルにデータを書き込むことができます。パーティションのレベルは、指定するパーティションの順序と一致している必要があります。
同期データを格納するパーティションを指定できます。同期タスクが実行されると、同期データは、データが OSS に書き込まれた時間に基づいて、関連するパーティションに格納されます。パーティションを指定する場合は、次の項目に注意してください。
[完了] をクリックし、[OK] をクリックします。
作成した同期タスクを見つけ、[アクション] 列の [開始] をクリックします。次に、タスクステータスを表示します。
同期タスクが成功したら、DLF コンソールにログインし、左側のナビゲーションウィンドウで [メタデータ] > [メタデータ] を選択します。[メタデータ] ページで、新しく生成されたデータベースの名前をクリックします。[テーブルリスト] タブで、生成されたテーブルを表示します。
ステップ 6:MaxCompute に基づいてデータレイクのデータを分析する
作成済みの MaxCompute プロジェクト、DLF メタデータベース、および OSS バケットに基づいて、外部プロジェクトを作成できます。 この外部プロジェクトは MaxCompute プロジェクトにマッピングされ、MaxCompute を OSS および DLF に関連付けます。 その後、MaxCompute プロジェクトを使用して、外部プロジェクトのデータを分析できます。 MaxCompute プロジェクトのオーナー、または Admin ロールまたは Super_Administrator ロールが割り当てられているユーザーのみが、外部プロジェクトを作成できます。
MaxCompute コンソールの [ユーザー] タブで、テナントレベルの Super_Administrator ロールをユーザーに割り当てることができます。 テナントレベルの Super_Administrator ロールが割り当てられている Alibaba Cloud アカウントまたは RAM ユーザーのみが、ユーザーにロールを割り当てることができます。 詳細については、「プロジェクトレベルのロールに基づいてアクセス制御を実行する」の「ユーザーにロールを割り当てる」セクションをご参照ください。
DataWorks コンソールで外部プロジェクトを作成します。
DataWorks コンソール にログオンします。 上部のナビゲーションバーで、[中国 (上海)] リージョンを選択します。
DataWorks コンソールの左側のナビゲーションウィンドウで、 を選択します。
[Lake And Warehouse Integration (Data Lakehouse)] ページで、[開始] をクリックします。
[Data Lakehouse の作成] ページで、パラメーターを構成します。 次の表にパラメーターを示します。
表 1. データウェアハウスの作成手順のパラメーター
パラメーター
説明
外部プロジェクト名
ext_dlf_delta
MaxCompute プロジェクト
ms_proj1
表 2. データレイク接続の作成手順のパラメーター
パラメーター
説明
異種データプラットフォームタイプ
ドロップダウンリストから [Alibaba Cloud DLF + OSS] を選択します。
なし
Alibaba Cloud DLF + OSS
外部プロジェクトの説明
なし
DLF がアクティブ化されているリージョン
cn-shanghai
DLF エンドポイント
dlf-share.cn-shanghai.aliyuncs.com
DLF データベース名
datalake
DLF RoleARN
なし
[作成] をクリックします。 表示されるページで、[プレビュー] をクリックします。
DLF データベースのテーブル情報をプレビューできる場合、操作は成功です。
説明このステップでは、DataWorks コンソールで外部プロジェクトを作成する方法について説明します。 SQL 文を使用して外部プロジェクトを作成する方法の詳細については、「SQL 文を使用して外部プロジェクトを管理する」をご参照ください。
DataWorks コンソールの [アドホッククエリ] ページで、外部プロジェクトのテーブルを表示します。
サンプル文:
show tables in ext_dlf_delta;次の結果が返されます。
ALIYUN$***@aliyun.com:anti_rds説明DataWorks の DataStudio によって提供されるアドホッククエリ機能の詳細については、「アドホッククエリノードを使用して SQL 文を実行する (オプション)」をご参照ください。
DataWorks コンソールの [アドホッククエリ] ページで、外部プロジェクトのテーブルデータをクエリします。
説明クエリ結果が文字化けしている場合は、「バッチ同期」の「エンコード形式の構成の問題または文字化けによって発生するダーティデータエラーを処理するにはどうすればよいですか?」セクションの手順に従って問題を解決してください。
サンプル文:
select * from ext_dlf_delta.anti_rds;次の図は、返された結果を示しています。

DLF、Realtime Compute for Apache Flink、および OSS に基づく Apache Hudi ストレージメカニズム
手順
ステップ 1:MaxCompute に DLF および OSS へのアクセス権限を付与する
MaxCompute プロジェクトを管理する Alibaba Cloud アカウントに、DLF および OSS アクセス権限を付与します。
データレイクの統合ストレージパスとして OSS バケットを作成します。
Realtime Compute for Apache Flink コンソールで一時テーブルを作成し、データレイクに取り込むデータを準備します。
ステップ 4:DLF にデータソースを追加し、メタデータベースを作成する
DLF にデータソースを追加し、メタデータベースを作成します。
ステップ 5:DLF コンソールでメタデータ抽出タスクを作成して開始する
DLF コンソールでメタデータ抽出タスクを作成し、OSS ディレクトリのテーブルデータをデータレイクに抽出します。
ステップ 6:MaxCompute に基づいてデータレイクのデータを分析する
DataWorks コンソールの Lake and Warehouse Integration (Data Lakehouse) ページで外部プロジェクトを作成し、データレイクのデータを分析します。
ステップ 1:MaxCompute に DLF および OSS へのアクセス権限を付与する
MaxCompute プロジェクトを管理する Alibaba Cloud アカウントは、認証なしで DLF または OSS にアクセスすることはできません。Alibaba Cloud アカウントを承認するには、次のいずれかの方法を使用できます。
ワンクリック認証:同じアカウントを使用して MaxCompute プロジェクトを作成し、DLF および OSS をデプロイする場合は、Resource Access Management (RAM) コンソールの [クラウド リソースアクセス認証] ページでワンクリック認証を実行することをお勧めします。
カスタム認証:この方法は、同じアカウントを使用して MaxCompute プロジェクトを作成し、DLF および OSS をデプロイするかどうかに関係なく使用できます。詳細については、「RAM ユーザーに DLF へのアクセスを許可する」をご参照ください。
ステップ 2:OSS でバケットとフォルダを作成する
データレイクの統合ストレージパスとして OSS バケットを作成します。
[OSS コンソール] にログインします。
左側のナビゲーションウィンドウで、[バケット] をクリックします。[バケット] ページで、[バケットの作成] をクリックします。
[バケットの作成] パネルで、[バケット名] パラメータを設定し、リージョンを選択して、[作成] をクリックします。たとえば、「バケット名」パラメータを
mc-dlf-ossに設定し、リージョンドロップダウンリストから中国 (上海)リージョンを選択できます。
[バケット] ページで、作成したバケットの名前をクリックして、[オブジェクト] ページに移動します。
ページの右側で、[ディレクトリの作成] をクリックします。[ディレクトリの作成] パネルで、[ディレクトリ名] (例:datalaketest) を指定し、[OK] をクリックします。

ステップ 3:データレイクに取り込むデータを準備する
Hudi コネクタを使用して一時テーブルを作成し、Realtime Compute for Apache Flink コンソールでデータレイクに取り込むデータを準備します。詳細については、「SQL デプロイメントの概要」をご参照ください。
Realtime Compute for Apache Flink コンソールの [インスタンスリスト] に移動します。上部のナビゲーションバーで、Realtime Compute for Apache Flink インスタンスが配置されているリージョンを選択します。次に、インスタンスの ID をクリックします。
左側のナビゲーションウィンドウで、 を選択します。次に、[新規] をクリックして空のストリームドラフトを作成し、[次へ] をクリックします。
[新規ドラフト] ダイアログボックスで、ジョブ情報を指定し、[作成] をクリックします。
SQL エディターに次の文を入力します。構文の詳細については、「Hudi コネクタ (廃止予定)」をご参照ください。
-- Create a temporary table named datagen as the data source. CREATE TEMPORARY TABLE datagen( id INT NOT NULL PRIMARY KEY NOT ENFORCED, data STRING, ts TIMESTAMP(3) ) WITH ( 'connector' = 'datagen' , 'rows-per-second'='100' ); -- Create a temporary table named flink_hudi_tbl as the result table. The data store points to OSS and the data is stored in the Apache Hudi format. CREATE TEMPORARY TABLE flink_hudi_tbl ( id INT NOT NULL PRIMARY KEY NOT ENFORCED, data STRING, ts TIMESTAMP(3) ) WITH ( 'connector' = 'hudi', 'oss.endpoint' = 'oss-cn-beijing-internal.aliyuncs.com', 'accessKeyId' = '${secret_values.ak_id}', 'accessKeySecret' = '${secret_values.ak_secret}', 'path' = 'oss://<yourOSSBucket>/<Custom storage location>', 'table.type' = 'MERGE_ON_READ', 'hive_sync.enable' = 'true', 'hive_sync.mode' = 'hms', 'hive_sync.db' = 'flink_hudi', 'hive_sync.table' = 'flink_hudi_tbl', 'dlf.catalog.region' = 'cn-beijing', 'dlf.catalog.endpoint' = 'dlf-vpc.cn-beijing.aliyuncs.com' ); -- Write data from the source table to the result table. INSERT INTO flink_hudi_tbl SELECT * from datagen;パラメータ
パラメータ
説明
oss.endpoint
Flink インスタンスが存在するリージョンの内部エンドポイント。各リージョンのエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
accessKeyId
Alibaba Cloud アカウントの AccessKey ID。
accessKeySecret
Alibaba Cloud アカウントの AccessKey シークレット。
path
OSS バケットのパス。
dlf.catalog.region
Alibaba Cloud DLF のリージョン。詳細については、「サポートされているリージョンとエンドポイント」をご参照ください。
dlf.catalog.endpoint
DLF のエンドポイント。詳細については、「サポートされているリージョンとエンドポイント」をご参照ください。
説明このパラメーターは、DLF の VPC エンドポイントに設定することをお勧めします。中国 (杭州) リージョンを選択した場合は、このパラメーターを dlf-vpc.cn-hangzhou.aliyuncs.com に設定します。
構文チェックを実行し、ドラフトをデプロイします。詳細については、「SQL デプロイメントの概要」のステップ 4 と 6 をご参照ください。
SQL エディターページの右上隅にある [検証] をクリックして、構文チェックを実行します。構文チェックに合格すると、[成功] メッセージが表示されます。
SQL エディターページの右上隅にある [デプロイ] をクリックします。「ドラフトのデプロイ」ダイアログボックスで、関連パラメータを設定し、[確認] をクリックします。
ドラフトのデプロイメントを開始し、起動結果を表示します。詳細については、「SQL デプロイメントの概要」のステップ 7 をご参照ください。
左側のナビゲーションウィンドウで、[デプロイメント] をクリックします。
目的のデプロイメントを見つけ、[操作] 列の [開始] をクリックします。「ジョブの開始」ダイアログボックスで、[初期モード] を選択し、[開始] をクリックします。デプロイメントの [ステータス] が [実行中] に変わると、デプロイメントは想定どおりに実行されています。
「デプロイメント」ページで、計算結果を表示します。
デプロイメントが開始して一定期間実行された後、OSS コンソールにログインし、ディレクトリに書き込まれたデータファイルを表示します。
ステップ 4:DLF にデータソースを追加し、メタデータベースを作成する
DLF でデータレイクのデータを管理するためのメタデータベースを作成します。
[DLF コンソール] にログインします。上部のナビゲーションバーで、リージョンを選択します。
datalake メタデータベースなどのメタデータベースを作成します。
DLF コンソールの左側のナビゲーションウィンドウで、 > を選択します。 ページの Database タブで、Create Database をクリックします。
Create Database ダイアログボックスで、パラメータを設定します。次の表にパラメータを示します。
パラメータ
説明
例
カタログ
データが格納されているデータベースカタログの名前。
default
データベース名
デスティネーションメタデータベースの名前。
dlf_db
データベースの説明
作成するメタデータベースの説明。
Data lakehouse
パスの選択
データファイルが保存されている OSS ディレクトリ。ディレクトリは
oss://<バケット名>/<OSS ディレクトリ名>形式である必要があります。oss://doc-test-01/datalake/
[OK] をクリックします。
ステップ 5:DLF コンソールでメタデータ抽出タスクを作成して開始する
[DLF コンソール] の左側のナビゲーションウィンドウで、[Metadata] > [Metadata Discovery] を選択します。
[Metadata Discovery] ページで、「Extraction Task」タブの [Create Extraction Task] をクリックします。
「抽出タスクの作成」ページで、関連パラメータを設定します。詳細については、「メタデータディスカバリ」をご参照ください。
[保存して実行] をクリックします。
メタデータテーブルを表示します。抽出タスクの [実行の進捗状況] が 100% に達したら、左側のナビゲーションウィンドウの [メタデータ] をクリックします。[テーブルリスト] タブで、テーブルの詳細を表示します。
テーブルデータをクエリします。左側のナビゲーションウィンドウで、[データ探索] をクリックします。表示されるページで、SQL 文を実行してテーブルデータをクエリします。
ステップ 6:MaxCompute に基づいてデータレイクのデータを分析する
詳細については、このトピックの「ステップ 6:MaxCompute に基づいてデータレイクのデータを分析する」をご参照ください。
参考資料
MaxCompute と Hadoop クラスターを使用してデータレイクハウス ソリューションを構築する場合は、「Hadoop クラスターに基づく Delta Lake または Apache Hudi ストレージ メカニズム」をご参照ください。