このガイドでは、Dataplex Universal Catalog Discovery を有効にして使用する方法について説明します。Discovery は、データレイク内のデータをスキャンしてメタデータを抽出し、分析、検索、データ探索のために Dataproc Metastore、BigQuery、Data Catalog(非推奨)に登録します。
自動検出を使用して、レイクに接続されていない Cloud Storage データを抽出してカタログ化する方法については、Cloud Storage データの検出とカタログ化をご覧ください。
概要
Discovery が有効になっている Dataplex Universal Catalog アセットごとに、Dataplex Universal Catalog は次の処理を行います。
- アセットに関連付けられているデータをスキャンします。
- 構造化ファイルと半構造化ファイルをテーブルにグループ化します。
- テーブル名、スキーマ、パーティション定義などの技術的なメタデータを収集します。
画像や動画などの非構造化データの場合、Dataplex Universal Catalog Discovery は、メディアタイプをファイルセットとして共有するファイルのグループを自動的に検出して登録します。たとえば、gs://images/group1
に GIF 画像が含まれていて、gs://images/group2
に JPEG 画像が含まれている場合、Dataplex Universal Catalog Discovery は 2 つのファイルセットを検出して登録します。Avro などの構造化データについては、ファイルが同じデータ形式とスキーマを含むフォルダにある場合のみ、Discovery はファイルを検出します。
検出されたテーブルとファイルセットは、検索と見つけやすさのために Data Catalog に登録されます。テーブルは、Dataproc Metastore では Hive スタイルのテーブルとして、BigQuery では外部テーブルとして表示されるため、データは自動的に分析に使用できるようになります。
Discovery は、次の構造化と半構造化のデータ形式をサポートします。
- Parquet
- Avro
- ORC
- JSON(改行区切り形式のみ)
- CSV(コメント行を含む CSV ファイルはサポートされていません)
Discovery では、構造化と半構造化のデータ用に次の圧縮形式がサポートされています。
次の形式の内部圧縮:
圧縮 ファイル拡張子のサンプル 使用可能な形式 gzip .gz.parquet Parquet LZ4 .lz4.parquet Parquet Snappy .snappy.parquet Parquet、ORC、Avro LZO .lzo.parquet Parquet、ORC JSON ファイルと CSV ファイルの外部圧縮:
- gzip
- bzip2
検出の構成
新しいゾーンまたはアセットを作成すると、Discovery はデフォルトで有効になります。ゾーンまたはアセットのレベルで Discovery を無効にできます。
ゾーンまたはアセットを作成する際に、ゾーンレベルで Discovery の設定を継承するか、アセットレベルで Discovery の設定をオーバーライドするかを選択できます。
ゾーンレベルとアセットレベルで使用可能な Discovery の構成オプションは次のとおりです。
Discovery のオンとオフ。
Discovery のスケジュール: このオプションは、事前定義されたスケジュール(たとえば、時間ごとまたは日ごと、あるいは cron 形式で定義されたカスタム スケジュールなど)に設定できます。新しいアセットは追加時にスキャンされます。詳細については、cron ジョブ スケジュールの構成をご覧ください。推奨: Discovery を 1 時間ごと、またはそれより低い頻度でスケジュール設定します。
包含パターンまたは除外パターン: 包含パスまたは除外パスで glob パターンを使用して、Discovery スキャンに含めるまたは除外するファイルを定義します。たとえば、
gs://test_bucket/foo/..
を Discovery から除外するには、除外パスとして**/foo/*
を入力します。引用符はエラーの原因となります。"**/foo/*"
ではなく、**/foo/*
と入力します。この機能は、Cloud Storage アセットでのみ使用できます。包含パターンと除外パターンの両方が同時に存在する場合は、先に除外パターンが適用されます。JSON または CSV の仕様: CSV や JSON などの半構造化データに関する追加情報を指定して、Discovery の結果の精度を高めることができます。
CSV ファイルの場合、次のどれでも指定できます。
区切り文字: このフィールドには
\r
と\n
を除く 1 文字を使用できます。複数の文字が指定されている場合は、文字列の最初の文字のみが使用されます。指定しない場合、Discovery では区切り文字としてカンマが使用されます。ヘッダー行の数: このフィールドには、値
0
または1
を使用できます。デフォルト値は0
です。値が0
の場合、Discovery はヘッダー推定を実行します。ヘッダーが検出されると、Discovery はヘッダーから列名を抽出し、値を1
に再設定します。エンコード: このフィールドには、
UTF-8
、US-ASCII
、ISO-8859-1
などの文字列エンコード名を使用できます。何も指定しない場合、UTF-8
がデフォルトとして使用されます。型推定の無効化: このフィールドにはブール値を使用できます。デフォルトでは
false
に設定されています。CSV データの場合、型推定を無効にすると、すべての列が文字列として登録されます。
JSON ファイルの場合、次のどれでも指定できます。
エンコード: このフィールドには、
UTF-8
、US-ASCII
、ISO-8859-1
などの文字列エンコード名を使用できます。何も指定しない場合、UTF-8
がデフォルトとして使用されます。データ型推定の無効化: このフィールドにはブール値を使用できます。デフォルトでは
false
に設定されています。JSON データの場合、型推定を無効にすると、すべての列がプリミティブ型(文字列、数値、ブール値)として登録されます。
メタデータを公開する
Dataplex Universal Catalog レイクでデータゾーンを作成すると、Dataplex Universal Catalog は、レイクを含むプロジェクトに BigQuery データセットを作成します。データゾーンにアセットとして追加された Cloud Storage バケットで検出されたテーブルを、Dataplex Universal Catalog はそのデータセットに公開します。データセットは、ゾーンに対応するメタデータ公開データセットとして参照されます。
各 Dataplex Universal Catalog データゾーンは、BigQuery のデータセットまたは Dataproc Metastore のデータベースにマッピングします。ここで、メタデータ情報は自動的に使用可能になります。
Dataplex API を使用して、テーブル名やスキーマなどの、自動検出されたメタデータを編集できます。
検出されたテーブルとファイルセットを表示する
検出されたテーブルとファイルセットは、 Google Cloud コンソールの Dataplex Universal Catalog の検索ビューで検索できます。
検索結果の精度を高めるには、レイクやデータゾーン名などの Dataplex Universal Catalog 固有のフィルタを使用します。フィルタリストには、ファセットごとに上位 50 項目が表示されます。検索ボックスを使用して追加項目を見つけることができます。
各エントリには、技術、運用の詳細なメタデータが含まれます。
エントリの詳細ページで、BigQuery のテーブルにクエリを実行し、対応する Dataproc Metastore の登録の詳細を表示できます。
Cloud Storage テーブルを外部テーブルとして BigQuery にパブリッシュできる場合は、エントリの詳細ビューに次のように表示されます。
- BigQuery 外部テーブルの参照
- BigQuery でデータの分析を開始するための [BigQuery で開く] ボタン。
Dataplex Universal Catalog メタデータ エントリは、Data Catalog に直接表示され、検索できます。詳細については、Data Catalog の検索リファレンスをご覧ください。
すべての検出されたエントリは、Dataplex API を通じて表示できます。
Discovery アクション
スキャン中にデータ関連の問題が検出されると、必ず Discovery により次の管理アクションが開始されます。
無効なデータ形式
アクションには次のようなものがあります。
テーブル内のデータ形式の不整合(例: テーブル接頭辞が同じで形式が異なるファイルが存在する)。
キュレートされたゾーンでの無効なデータ形式(Avro、Parquet、または ORC 形式ではないデータ)。
互換性のないスキーマ
アクションには次のようなものがあります。
Discovery によって検出されたスキーマが、Dataproc Metastore のメタデータ API の有効なテーブル スキーマと互換性がない。スキーマ A とスキーマ B は、次のシナリオでは互換性がありません。
A と B は、名前が同じだが、データ型が異なり、互換性のないフィールドを共有している(例: 文字列と整数)。
A と B に重複するフィールドがない。
A と B の少なくとも 1 つに null 可能性のない、他のスキーマで検出されないフィールドがある。
キュレートされたゾーンにおけるユーザー管理のスキーマに対するスキーマ ドリフト。
無効なパーティションの定義
アクションには次のようなものがあります。
一貫性のないパーティションの命名方法(例:
gs://sales_data/year=2020/month=10/day=01
、gs://sales_data/year=2020/region=us
)。キュレートされたデータゾーンでの Hive スタイル以外のパーティションの命名方法(例:
gs://sales_data/year=2020/month=10/day=01
ではなくgs://sales_data/2020/10/01
)。
欠損データ
アクションには次のようなものがあります。
- キュレートされたデータゾーンに、登録済みテーブルまたはファイルセットの基となったデータが存在しない。つまり、キュレートされたゾーンのテーブルまたはファイルセットは検出、登録されたものの、その後、基になるデータは削除されました。この問題は、データを補充するかメタデータ エントリを削除するかのいずれかで解決できます。
Discovery アクションの解決
アクションのあるデータは、後続の Discovery スキャンによってチェックされます。アクションをトリガーした問題が修正されると、アクションは次回のスケジュールされた Discovery スキャンによって自動的に解決します。
その他の Discovery アクション
上記の Discovery アクションに加えて、Dataplex Universal Catalog でのリソース ステータスとセキュリティ ポリシーの伝播に関連するアクションは、他に 3 種類あります。
不足しているリソース: 既存のアセットに対応する基盤となるバケットまたはデータセットが見つかりません。
未承認のリソース: Dataplex Universal Catalog には、Discovery の実行、または Dataplex Universal Catalog が管理するバケットやデータセットへのセキュリティ ポリシーの適用に十分な権限がありません。
セキュリティ ポリシーの伝播に関する問題: 所与のレイク、ゾーン、またはアセットに指定されたセキュリティ ポリシーが、基盤となるバケットまたはデータセットに正常に伝播できませんでした。その他のアクションはすべてアセットレベルですが、この種類のアクションは、レイク、ゾーン、アセットレベルで発生する可能性があります。
これらの種類のアクションは、基盤となるリソースまたはセキュリティ構成の問題が修正されると自動的に解決されます。
よくある質問
Discovery によって推定されたスキーマが正しくない場合は、どうすればよいですか?
推定スキーマが所与のテーブルで想定されるものと異なる場合は、Metadata API を使用してメタデータを更新することで、推定スキーマをオーバーライドできます。後続の Discovery スキャンで編集が上書きされないように、必ず userManaged
を true
に設定してください。
Discovery スキャンからファイルを除外するにはどうすればよいですか?
Discovery は、デフォルトで次のような特定の種類のファイルをスキャンから除外します。
_SUCCESS
_started
_committed
_metadata
、_METADATA
、_Metadata
_common_metadata
、_COMMON_METADATA
README
またはreadme
で始まるファイルbase_
、delta_
、delete_delta_
、bucket_
で始まり、数字が続くディレクトリ.
で始まるディレクトリ
追加の包含パターンまたは除外パターンを指定するには、ゾーンレベルまたはアセットレベルで Discovery 構成を使用するか、Metadata API を使用します。
Discovery で検出されたテーブルのグループ化の粒度が細かすぎる場合はどうすればよいですか?
Discovery で検出されたテーブルがテーブルのルートパスと比べてより細かいレベルである場合(たとえば、個々のパーティションがそれぞれテーブルとして登録されている場合)、いくつかの理由が考えられます。
想定されるテーブルのルートパスの形式が異なり(Avro と Parquet のファイルが混在しているなど)、これによってテーブルがより小さなグループに分割されています。
想定されるテーブルのルートパスのスキーマの非互換性の種類が異なり、これによってテーブルがより小さなグループに分割されています。
この問題は、次のいずれかの方法で解決できます。
同じテーブル ルートパス内のすべてのファイルの形式に一貫性を持たせ、互換性のあるスキーマになるよう、形式やスキーマの違いを修正します。
ゾーン / アセット構成または Metadata API の一部として除外パターン構成を使用して異種ファイルを除外します。
いずれかの修正手順を実行すると、次の Discovery スキャンで以下が発生します。
- 既存の下位レベルのテーブルが、Dataplex API、BigQuery、Dataproc Metastore、Data Catalog から自動的に削除されます。
- 代わりに、想定されるテーブル ルートパスが含まれる新しい上位レベルのテーブルが作成されます。
テーブル名を指定するにはどうすればよいですか?
テーブル名は Metadata API を使用して指定できます。
Dataproc Metastore または BigQuery でテーブルを手動で作成するとどうなりますか?
所与のアセットに対して Discovery が有効になっている場合、Dataproc Metastore または BigQuery にエントリを手動で登録する必要はありません。
Dataplex Universal Catalog Discovery をオフに切り替えて、テーブル名、スキーマ、パーティション定義を手動で定義できます。または、次の操作を行います。
- テーブルのルートパスなどの必要な情報のみを指定してテーブルを作成します。
- Dataplex Universal Catalog Discovery を使用して、残りのメタデータ(スキーマやパーティション定義など)にデータを入力します。
- メタデータを最新の状態に保ちます。
BigQuery にテーブルが表示されない場合はどうすればよいですか?
Dataplex Universal Catalog メタデータはすべて Metadata API に一元的に登録されますが、BigQuery と互換性のある Cloud Storage テーブルのみが外部テーブルとして BigQuery に公開されます。Metadata API のテーブル エントリの詳細の一部として、BigQuery に公開されているエンティティがどれかとその理由を示す BigQuery 互換性マーカーを検出できます。
制限事項
- BigLake 外部テーブルを含む外部テーブルは、Discovery ではサポートされていません。ただし、外部テーブルは Dataplex Universal Catalog に自動的に取り込まれるため、Dataplex Universal Catalog で検索できます。
次のステップ
- metadataを操作する方法を確認する。