エンタープライズ サービスは、標準フォームやログファイルなどのデータファイルを定期的に OSS にアップロードします。 ただし、このデータにはメタデータ管理が欠けていることが多く、分析や計算が困難になります。AnalyticDB for MySQL のメタデータディスカバリー機能は、OSS パスの自動マッピング、ファイルのインテリジェントなグループ化、フィールド変更の動的検出をサポートし、データレイク メタデータを自動的に作成および更新します。 OSS メタデータディスカバリー ジョブを作成して、同じリージョンにある OSS バケットとデータファイルを自動的に検出し、OSS から AnalyticDB for MySQL にデータをインポートできます。
前提条件
AnalyticDB for MySQL Enterprise Edition、Basic Edition、または Data Lakehouse Edition クラスタが作成されていること。
AnalyticDB for MySQL クラスタ用にデータベースアカウントが作成されていること。
Alibaba Cloud アカウントを使用している場合は、特権アカウントを作成する だけで済みます。
Resource Access Management (RAM) ユーザーを使用している場合は、特権アカウントと標準アカウントを作成 し、標準アカウントを RAM ユーザーに関連付ける 必要があります。
AnalyticDB for MySQL クラスタと同じリージョンに Object Storage Service (OSS) バケットが作成されていること。
OSS バケットにデータファイルがアップロードされていること。 OSS パスは、次の条件を満たしている必要があります。
OSS パスは、
<BucketName>/directory/.../directory/table/fileまたは<BucketName>/directory/.../directory/table/partition/.../partition/file形式であること。OSS バケットに少なくとも 1 レベルの子ディレクトリがあること。
OSS パスの同じテーブルまたはパーティション内のファイルが同じ形式であること。
OSS パスの同じテーブルまたはパーティション内のファイルに、同じタイプと数のフィールドが含まれていること。
制限事項
同じ OSS パスにある各クラスタに対して、メタデータディスカバリー ジョブは 1 つだけ作成できます。
手順
AnalyticDB for MySQL コンソール にログオンします。 コンソールの左上隅で、リージョンを選択します。 左側のナビゲーションウィンドウで、クラスターリスト をクリックします。 管理するクラスタを見つけ、クラスタ ID をクリックします。
左側のナビゲーションウィンドウで、 を選択します。
メタデータの検出 ページの [OSS データソース] 領域で、ウィザードに入ります をクリックします。
説明ウィザードに入ります ボタンが選択不可になっている場合は、最初に 特権アカウントを作成する 必要があります。
[OSS データソース] タブで、次の表の説明に従ってパラメータを構成します。
構成項目
パラメータ
説明
[データソースの構成]
[データウェアハウス モード]
自動メタデータディスカバリーは、OSS ベースの標準データウェアハウス用に構築されており、高い識別精度を提供します。
説明フリーモードはサポートされていません。
[OSS ディレクトリの場所]
共通ファイル: ファイルの OSS ストレージパス。 パスはスラッシュ (
/) で終わる必要があります。マッピング結果は、[OSS ディレクトリの場所] パラメータの値によって異なります。 詳細については、「マッピング結果」をご参照ください。
重要[OSS ディレクトリの場所] パラメータを構成する際は、[OSS ディレクトリの場所] の後に少なくとも 1 レベルの子ディレクトリが存在することを確認してください。 ファイルの親ディレクトリは選択できません。
データレイク テーブル: データレイク テーブルの OSS ストレージパスの上位ディレクトリ。 ディレクトリはスラッシュ (
/) で終わる必要があります。 たとえば、Iceberg テーブルのディレクトリがoss://adb/testdb/iceberg_table/の場合、OSS ディレクトリの場所はoss://adb/testdb/に設定する必要があります。
[パスフィルタ ルール] (オプション)
AnalyticDB for MySQL にマッピングするファイルのストレージパスを指定します。
含める: 指定されたストレージパスに保存されているすべてのファイルが AnalyticDB for MySQL にマッピングされます。
重要選択したストレージパスに複数のファイルが保存されている場合、マッピングするには、ファイルが同じタイプであり、同じタイプと数の列が含まれている必要があります。
除外する: 指定されたストレージパスに保存されているファイルは、AnalyticDB for MySQL にマッピングされません。
[フォーマット リゾルバ]
ファイル形式に一致するフォーマット リゾルバを選択します。 共通のファイル形式の場合、フォーマット リゾルバは自動解析機能も提供します。この機能は、共通のファイル形式のリゾルバを順番に呼び出してファイルを解析します。
重要選択したリゾルバタイプがファイル形式と一致しない場合、マッピングは失敗します。
サポートされているリゾルバタイプ:
[共通ファイル]:
csv、json、parquet、avro、orc、automatic。[データレイク テーブル]:
iceberg。説明データレイク テーブル機能はパブリックプレビュー中です。 この機能を使用するには、チケットを起票 してテクニカルサポートに連絡してください。
[構成項目] (オプション)
高度なカスタム設定。 フォーマット リゾルバに CSV を選択した場合は、次のパラメータを設定できます。
列区切り文字: CSV データファイルの列区切り文字を指定します。
リファレンス識別子: 解析後の AnalyticDB for MySQL テーブルのリファレンス識別子を指定します。
テーブルヘッダー モード: CSV ファイルのテーブルヘッダーを識別して、テーブルの列名を決定します。
単一列フィールドを許可する: CSV データファイルのレコード行に 1 つの列のみを含めることを許可するかどうかを指定します。
[false]: いいえ。
[true]: はい。
その他の構成: CSV ファイルの最初の行を列名として使用するかどかを指定するパラメータを構成できます。 この要件がある場合は、テクニカルサポートに連絡してください。
[スケジューリングの構成]
[スケジューリング頻度]
データファイルの列またはデータへの変更を定期的に取得する場合は、スケジューリング頻度を設定して、メタデータディスカバリー ジョブを定期的に実行できます。
OSS ファイルのデータが変更された場合、AnalyticDB for MySQL に再マッピングされたテーブルのデータは、[宛先メタデータの構成] ルールに基づいて更新されます。
[宛先メタデータの構成]
[スキーマ名]
AnalyticDB for MySQL のデータベース名にマッピングされるスキーマ名を設定します。 デフォルトでは、ディスカバリー ジョブごとに新しいスキーマが作成されます。
データベース名を指定する場合は、次の項目に注意してください。
データベース名は、AnalyticDB for MySQL の既存のデータベースの名前と同じにすることはできません。
データベース名は、別のメタデータディスカバリー ジョブのデータベース名と同じにすることはできません。
[構成項目] (オプション)
OSS ファイルフィールドが変更された場合、または OSS ファイルが削除された場合に、AnalyticDB for MySQL にマッピングされたテーブルを更新する方法を指定します。
[ファイルフィールド変更ルール]:
[列のみを追加]: OSS ファイルに列が追加されると、メタデータディスカバリー ジョブが再実行された後に、AnalyticDB for MySQL にマッピングされたテーブルにも列が追加されます。
[テーブルの更新を無視]: OSS ファイルの列またはパーティションが変更された場合、メタデータディスカバリー ジョブが再実行された後に、パーティションのみが AnalyticDB for MySQL にマッピングされたテーブルに同期されます。 列は追加または削除されません。
[オブジェクト削除変更ルール]: [削除の更新を無視] のみがサポートされています。 これは、OSS ファイルが削除された場合、メタデータディスカバリー ジョブが再実行された後も、AnalyticDB for MySQL にマッピングされたテーブルは引き続き存在することを意味します。
重要AnalyticDB for MySQL にマッピングされたテーブルで DML 操作を実行できます。
AnalyticDB for MySQL テーブルに列を追加した場合、メタデータディスカバリー ジョブが再実行された後も、その列は上書きされずに存在し続けます。
AnalyticDB for MySQL にマッピングされたテーブルから列を削除した場合、メタデータディスカバリー ジョブが再実行された後に、削除された列が AnalyticDB for MySQL に再度マッピングされます。
パラメータを構成した後、[作成] をクリックします。
説明メタデータディスカバリー ジョブが作成されると、指定された間隔で自動的に実行されます。 ジョブをすぐに実行する場合は、ジョブリストでジョブを見つけ、[アクション] 列の [実行] をクリックします。
ジョブの開始後、[ジョブリスト] ページでジョブを管理できます。 ジョブの実行ステータスを表示したり、構成を変更したりできます。
説明ジョブが正常に実行された後、 ページに移動して、AnalyticDB for MySQL にマッピングされたデータベース、テーブル、およびパーティションを表示できます。
OSS パスから AnalyticDB for MySQL へのマッピングの例
OSS パスから AnalyticDB for MySQL へのマッピング結果は、次の 2 つの要因によって異なります。
OSS ファイルとそのパス。
メタデータディスカバリー ジョブで選択された [OSS ディレクトリの場所]。
選択した [OSS ディレクトリの場所] に基づいて、システムは [OSS ディレクトリの場所] の下の第 1 レベルのディレクトリをテーブル名に自動的にマッピングし、[OSS ディレクトリの場所] の下の後続のすべてのディレクトリをパーティションにマッピングします。 次に例を示します。
OSS パス | OSS ディレクトリの場所 | AnalyticDB for MySQL にマッピングされたテーブル |
oss://adb/Table1/file1.csv oss://adb/Table1/file2.json | oss://adb/ | テーブルをマッピングできません。 理由: Table1 ディレクトリ内のファイルは CSV フォーマットと JSON フォーマットです。ファイル形式が一致しないため、テーブルをマッピングできません。 重要 ファイルの形式が同じであっても、ファイル内のフィールドのデータ型が一致しない場合、テーブルをマッピングできません。 |
oss://adb/Table2/year/month/day/file3.json oss://adb/Table2/year/month/day/file4.json | oss://adb/ | AnalyticDB for MySQL にマップされているテーブルは、 説明 パーティションキーが存在しないため、partition_num が使用されます。 |
oss://adb/Table2/ | AnalyticDB for MySQL にマッピングされているテーブルは、 | |
oss://adb/Table2/year/month/ | AnalyticDB for MySQL にマッピングされているテーブルは、 | |
oss://adb/Table2/year/month/day/ | テーブルをマッピングできません。 理由: 選択した [OSSディレクトリの場所] の後に、他のディレクトリレベルが存在しません。 | |
oss://adb/Table3/year=2022/month=03/day=01/file5.csv oss://adb/Table3/year=2022/month=03/day=01/file6.csv | oss://adb/ | AnalyticDB for MySQL にマッピングされているテーブルは、 |
| テーブルをマッピングできません。 理由: year=2022 または month=03 は、AnalyticDB for MySQL のテーブルの命名規則に準拠していません。 | |
oss://adb/Table4/2020/03/30/file7.csv oss://adb/Table3/2020/03/30/file8.csv | oss://adb/ | AnalyticDB for MySQL にマッピングされているテーブルは、 説明 パーティションキーが存在しないため、partition_num が使用されます。 |
| テーブルをマッピングできません。 理由: 2020 または 03 は、AnalyticDB for MySQL のテーブルの命名規則に準拠していません。 |