このガイドでは、Dataplex メタデータと、Dataplex API を使用してそれを管理する方法について説明します。
概要
Dataplex は次の対象をスキャンします。
- データレイク内の構造化と半構造化のデータアセット(テーブルのエンティティにテーブルのメタデータを抽出するため)
- 画像、テキストなどの非構造化データ(ファイルセットのメタデータをファイルセットのエンティティに抽出するため)
Dataplex Metadata API を使用すると、次のことができます。
- テーブルとファイルセットのエンティティのメタデータの表示、編集、削除
- 独自のテーブルまたはファイルセットのエンティティのメタデータの作成
Dataplex メタデータは、次の方法で分析できます。
- Data Catalog(検索とタグ付けのため)
- Dataproc Metastore と BigQuery(テーブルのメタデータのクエリと分析処理のため)
Dataplex API
このセクションでは、Dataplex API とそれと使用する主なリソースの概要を説明します。
コントロール プレーンの API
Dataplex コントロール プレーン API によって、レイク、ゾーン、アセット リソースを作成、管理できます。
レイク: 組織内のプロジェクトにわたってストレージ リソースを管理できる Dataplex サービス インスタンス。
ゾーン: レイク内のアセットを論理グループ化したもの。レイク内の複数のゾーンを使用して、準備状況、ワークロード、または組織構造に基づいてデータを整理します。
アセット: レイク内のゾーンにアタッチされたストレージ リソース。データは Cloud Storage バケットまたは BigQuery データセットに保存されます。
Metadata API
Dataplex Metadata API を使用して、テーブルとファイルセットのエンティティとパーティション内でメタデータを作成、管理します。Dataplex は、レイク内のまたはユーザーが指定したのいずれかのデータアセットをスキャンして、エンティティとパーティションを作成します。エンティティとパーティションは、関連するアセットと物理ストレージ ロケーションへの参照を維持します。
主なコンセプト
- テーブル エンティティ:
適切に定義されたスキーマを持つ構造化データのメタデータ。テーブル エンティティは、エンティティ ID とデータのロケーションによって一意に識別されます。テーブル エンティティのメタデータは、BigQuery と Dataproc Metastore でクエリできます。
- Cloud Storage オブジェクト: Cloud Storage API を介してアクセスされる Cloud Storage オブジェクトのメタデータ。
- BigQuery テーブル: BigQuery API を介してアクセスされる BigQuery テーブルのメタデータ。
- ファイルセット エンティティ:
非構造化データ(通常はスキーマレス)に関するメタデータ。ファイルセットは、エンティティ ID とデータ ロケーションによって一意に識別されます。各 fileset にはデータ形式があります。
- パーティション:
テーブルまたはファイルセットのエンティティ内のデータのサブセットのメタデータ。一連の Key-Value ペアとデータ ロケーションによって識別されます。
Try the API
Dataplex の lakes.zones.entities と lakes.zones.partitions の API リファレンス ドキュメント ページを使用して、各 API に関連付けられたパラメータとフィールドを表示します。各 API メソッドのリファレンス ドキュメントに付属する [この API を試す] パネルを使用して、さまざまなパラメータとフィールドを使用して API リクエストを行います。認証情報を生成する必要なしでリクエストを作成、表示、送信でき、その後、サービスから返されたレスポンスを表示できます。
以下の各セクションでは、Dataplex Metadata API を理解して使用する際に活用できる情報を示します。
エンティティ
エンティティの一覧表示
サービスから返されるエンティティのリストを制限するには、list entities
リクエスト URL にフィルタ クエリ パラメータを追加します。
エンティティの取得
デフォルトでは、Get Entity
レスポンスには基本的なエンティティ メタデータが含まれます。追加のスキーマ メタデータを取得するには、リクエスト URL に view クエリ パラメータを追加します。
互換性の詳細: Dataplex メタデータはメタデータ API に集中的に登録されますが、BigQuery と Apache Hive Metastore と互換性のあるエンティティ テーブル メタデータのみが BigQuery と Dataproc Metastore に公開されます。Get Entity
API は、CompatibilityStatus
メッセージを返します。これは、テーブル メタデータが BigQuery と Hive Metastore と互換性があるかどうかと、互換性がない場合はその理由を示します。
Update エンティティ
この API を使用して、エンティティ メタデータを編集します。これには、ユーザーまたは Dataplex がエンティティのメタデータを管理するかどうかも含まれます。
- この API は、すべての可変エンティティ フィールドの完全な置換を実行します。次のエンティティ フィールドは変更不可であり、更新リクエストで指定された場合は無視されます。
- すべての可変エンティティ フィールドの値を指定します。これには、値が変更されていない場合でも、すべてのスキーマ フィールドを含みます。
- etag フィールドを指定します。etag を取得するには、まず entities.get リクエストを送信します。このリクエストによって、レスポンスにエンティティの
etag
が返されます。 - スキーマ フィールドの更新: Dataplex が検出したテーブル スキーマを更新して、精度を改善できます。
- スキーマが fileset の場合は、すべてのスキーマ フィールドを空のままにします。
- 繰り返しフィールドを定義するには、モードを
REPEATED
に設定します。構造体フィールドを定義するには、型をRECORD
に設定します。 - スキーマの
userManaged
フィールドを設定して、ユーザーまたは Dataplex がテーブルのメタデータを管理するかどうかを指定できます。デフォルトの設定は Dataplex マネージドです。userManaged
が true に設定されている場合、この設定は、EntityView がSCHEMA
またはFULL
に設定されている場合にentities.get
リクエストから返される情報に含まれます。
- パーティション フィールドの更新:
- Hive スタイル以外のパーティション分割データの場合、Dataplex ディスカバリはパーティション キーを自動生成します。たとえば、データパス
gs://root/2020/12/31
の場合、パーティション キーp0
、p1
、p2
が生成されます。クエリをより直感的にするために、次のように更新できます。p0
、p1
、p2
をそれぞれyear
、month
、day
に更新できます。 - パーティション スタイルを HIVE スタイルに更新すると、パーティション フィールドは変更不可になります。
- Hive スタイル以外のパーティション分割データの場合、Dataplex ディスカバリはパーティション キーを自動生成します。たとえば、データパス
- 他のメタデータ フィールドの更新: 自動生成された mimeType、CompressionFormat、CsvOptions、JsonOptions フィールドを更新して、Dataplex の検出を支援できます。Dataplex の検出は、次の実行時に新しい値を使用します。
エンティティを作成
entities.create
API を使用して、テーブルまたはファイルセットのメタデータ エンティティを作成します。必須フィールドと関連するオプション フィールドに入力するか、Dataplex 検出サービスにオプション フィールドに入力させます。
エンティティの削除
- etag フィールドを指定します。etag を取得するには、まず entities.get リクエストを送信します。このリクエストによって、レスポンスにエンティティの
etag
が返されます。
未加工のゾーン内のテーブルまたはファイルセットの基になるデータが削除されると、次の Discovery スキャン時に、テーブルまたはファイルセットのメタデータは自動的に削除されます。キュレートされたゾーン内のテーブルの基になるデータが削除された場合、それに応じてテーブル メタデータは削除されませんが、欠落しているデータ アクションが報告されます。この問題を解決するには、メタデータ API を介してテーブル メタデータ エンティティを明示的に削除します。
パーティション
パーティションを一覧表示する
サービスから返されるパーティションのリストを制限するには、list partitions
リクエスト URL にフィルタ クエリ パラメータを追加します。
例:
?filter="Country=US AND State=CA AND City=Sunnyvale"
?filter="year < 2000 AND month > 12 AND Date > 10"
パーティションの取得
パーティションを取得するには、partitions/value1/value2/…./value10
として読まれるようにフォーマットして、パーティション キー値を URL の末尾に追加して、リクエスト URL を完成させる必要があります。
例: パーティションに値 {Country=US, State=CA, City=Sunnyvale}
がある場合、取得リクエスト URL の末尾は /partitions/US/CA/Sunnyvale
になる必要があります。
重要: 追加する URL の値は二重エンコードする必要があります。たとえば、url_encode(url_encode(value))
を使用して「US:CA/CA#Sunnyvale」をエンコードして、リクエスト URL の末尾が /partitions/US%253ACA/CA%2523Sunnyvale
となるようにできます。レスポンスの名前フィールドには、エンコードされた形式が保持されます。
パーティションの作成
データソース用にカスタマイズされたパーティションを作成するには、partitions.create
API を使用します。必須の location フィールドに Cloud Storage パスを指定します。
パーティションの削除
partitions/value1/value2/…./value10
として読まれるようにフォーマットして、リクエスト URL の末尾にパーティション Key-Value を追加して、リクエスト URL を完成させます。
例: パーティションに値 {Country=US, State=CA, City=Sunnyvale}
がある場合、リクエスト URL の末尾は /partitions/US/CA/Sunnyvale
になる必要があります。
重要: 追加する URL 値は RFC-1034 に準拠しているか、二重エンコードする(US:/CA#/Sunnyvale
を US%3A/CA%3A/Sunnyvale
とするなど)必要があります。
次のステップ
- Apache Spark でメタデータにアクセスする方法の詳細を確認する。