本指南說明如何啟用及使用 Dataplex Universal Catalog Discovery。探索功能會掃描及擷取資料湖泊中的資料中繼資料,並將其登錄至 Dataproc Metastore、BigQuery 和 Data Catalog (已淘汰),以供分析、搜尋和探索。
如要進一步瞭解如何使用自動探索功能,擷取並編目未附加至資料湖泊的 Cloud Storage 資料,請參閱「探索及編目 Cloud Storage 資料」。
總覽
針對啟用探索功能的每個 Dataplex Universal Catalog 資產,Dataplex Universal Catalog 會執行下列操作:
- 掃描與資產相關聯的資料。
- 將結構化和半結構化檔案分組到表格中。
- 收集技術中繼資料,例如資料表名稱、結構定義和分區定義。
如果是圖片和影片等非結構化資料,Dataplex Universal Catalog Discovery 會自動偵測並登錄共用媒體類型的檔案群組,做為檔案集。舉例來說,如果 gs://images/group1
包含 GIF 圖片,而 gs://images/group2
包含 JPEG 圖片,Dataplex Universal Catalog Discovery 會偵測並註冊兩個檔案集。如果是 Avro 等結構化資料,Discovery 只會偵測位於含有相同資料格式和結構定義的資料夾中的檔案。
系統會在 Data Catalog 中註冊探索到的資料表和檔案集,方便您搜尋和探索。資料表會以 Hive 樣式的資料表顯示在 Dataproc Metastore 中,並以外部資料表顯示在 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
探索設定
建立新區域或資產時,系統預設會啟用探索功能。您可以在區域或資產層級停用探索功能。
建立可用區或資產時,您可以選擇在可用區層級繼承探索設定,或在資產層級覆寫探索設定。
以下是可用區和資產層級的探索設定選項:
開啟和關閉探索功能
探索排程:您可以將此選項設為預先定義的排程 (例如每小時或每天),也可以設為以 cron 格式定義的自訂排程。新增資產時,系統會掃描這些資產。詳情請參閱「設定 Cron 時間表」。建議:排定每小時或更短的時間間隔執行探索。
納入或排除模式:使用納入或排除路徑中的 glob 模式,定義要納入或排除探索掃描的檔案。舉例來說,如要從探索中排除
gs://test_bucket/foo/..
,請輸入**/foo/*
做為排除路徑。引號 會導致錯誤。請務必輸入**/foo/*
,而非"**/foo/*"
。) 這項功能僅適用於 Cloud Storage 資產。如果同時有「納入」和「排除」模式,會先套用「排除」模式。JSON 或 CSV 規格:提供半結構化資料 (例如 CSV 和 JSON) 的額外資訊,提高探索結果的準確度。
如果是 CSV 檔案,您可以提供下列任一項目:
分隔符號:這個欄位接受一個字元,但
\r
和\n
除外。如果提供多個字元,系統只會使用字串的第一個字元。如未提供,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 資料集。Dataplex Universal Catalog 會將資料表發布至該資料集,以供在新增至資料區做為資產的 Cloud Storage bucket 中探索資料表。這個資料集稱為與區域對應的「中繼資料發布資料集」。
每個 Dataplex Universal Catalog 資料區域都會對應至 BigQuery 中的資料集,或 Dataproc Metastore 中的資料庫,並自動提供中繼資料資訊。
您可以使用 Dataplex API 編輯自動探索的中繼資料,例如資料表名稱或結構定義。
查看探索到的資料表和檔案集
您可以在 Google Cloud 控制台的 Dataplex Universal Catalog「搜尋」檢視畫面中,搜尋探索到的資料表和檔案集。
如要取得更準確的搜尋結果,請使用 Dataplex Universal Catalog 專屬篩選器, 例如湖泊和資料區域名稱。篩選器清單會顯示每個 facet 的前 50 個項目。你可以使用搜尋框尋找其他項目。
每個項目都包含詳細的技術和作業中繼資料。
在項目詳細資料頁面中,您可以在 BigQuery 中查詢資料表,並查看相應的 Dataproc Metastore 註冊詳細資料。
如果 Cloud Storage 資料表可以發布至 BigQuery 做為外部資料表,您會在該資料表的項目詳細資料檢視畫面中看到下列資訊:
- BigQuery 外部資料表參照
- 「在 BigQuery 中開啟」按鈕,可開始在 BigQuery 中分析資料
Dataplex Universal Catalog 中繼資料項目會直接顯示在 Data Catalog 中,且可供搜尋。詳情請參閱 Data Catalog 搜尋參考資料。
您可以使用 Dataplex API 查看所有探索到的項目。
探索動作
掃描期間偵測到資料相關問題時,探索功能會觸發下列管理員動作。
資料格式無效
可執行的動作包括:
資料表中的資料格式不一致。舉例來說,不同格式的檔案具有相同的資料表前置字串。
收錄的可用區資料格式無效 (資料不是 Avro、Parquet 或 ORC 格式)。
結構定義不相容
可執行的動作包括:
探索功能偵測到的結構定義與 Dataproc Metastore 中繼資料 API 的現用資料表結構定義不相容。在下列情況中,結構定義 A 和結構定義 B 不相容:
A 和 B 共用名稱相同的欄位,但資料型別不同且不相容。例如字串和整數。
A 和 B 沒有重疊的欄位。
A 和 B 至少有一個非可為空值的欄位,但另一個結構定義中沒有這個欄位。
與精選區域中使用者管理的結構定義有所偏差。
無效的分區定義
可執行的動作包括:
分區名稱不一致。例如
gs://sales_data/year=2020/month=10/day=01
和gs://sales_data/year=2020/region=us
。收錄的資料可用區中,非 Hive 樣式的分區命名方式。例如:顯示
gs://sales_data/2020/10/01
,而不是gs://sales_data/year=2020/month=10/day=01
。
缺少資料
可執行的動作包括:
- 在精選資料可用區中,已註冊的資料表或檔案集基礎資料已不存在。換句話說,系統已探索並註冊精選區域表格或檔案集,但後來刪除了基礎資料。如要修正這個問題,請補充資料或刪除中繼資料項目。
解決探索動作
後續的探索掃描會檢查有動作的資料。修正觸發動作的問題後,系統會在下次排定的探索掃描中自動解決動作。
其他探索動作
除了上述探索動作外,還有三種其他動作類型,與 Dataplex Universal Catalog 中的資源狀態和安全性政策傳播相關。
缺少資源:找不到與現有資產對應的基礎 bucket 或資料集。
未經授權的資源:Dataplex Universal Catalog 沒有足夠的權限,無法執行探索作業,或將安全性政策套用至 Dataplex Universal Catalog 管理的 Bucket 或資料集
安全性政策傳播問題:為特定湖泊、可用區或資產指定的安全性政策,無法成功傳播至基礎儲存桶或資料集。所有其他動作都位於資產層級,但這類動作可能會在湖泊、區域和資產層級引發。
修正基礎資源或安全性設定問題後,系統就會自動解決這類動作。
常見問題
如果探索推斷的結構定義不正確,該怎麼辦?
如果推斷的結構定義與特定資料表的預期結構定義不同,您可以透過 Metadata API 更新中繼資料,覆寫推斷的結構定義。請務必將
userManaged
設為 true
,以免後續的探索掃描作業覆寫編輯內容。
如何從探索掃描中排除檔案?
根據預設,探索功能會排除特定類型的檔案,不進行掃描,包括:
_SUCCESS
_started
_committed
_metadata
、_METADATA
、_Metadata
_common_metadata
、_COMMON_METADATA
- 開頭為
README
或readme
的檔案 - 以
base_
、delta_
、delete_delta_
、bucket_
開頭, 後面接著數字的目錄 - 以
.
開頭的目錄
您可以在區域或資產層級使用探索設定,或使用中繼資料 API,指定其他納入或排除模式。
如果 Discovery 偵測到的表格分組過於細微,該怎麼辦?
如果探索功能偵測到的資料表比資料表根路徑更細微 (例如,每個個別分割區都註冊為資料表),可能原因如下:
預期資料表根路徑中存在格式差異 (例如 Avro 和 Parquet 檔案混用),導致資料表分割成較小的群組。
預期資料表根路徑中存在不同類型的結構定義不相容問題,導致資料表分割成較小的群組。
您可以透過下列任一方式解決這個問題:
修正格式或結構定義差異,確保同一資料表根路徑中的所有檔案格式一致,且結構定義相容。
使用排除模式設定 (做為區域 / 資產設定或中繼資料 API 的一部分),排除異質檔案。
採取其中一項修正步驟後,在下一次探索掃描中,系統會執行下列操作:
- 現有的低階資料表會自動從 Dataplex API、BigQuery、Dataproc Metastore 和 Data Catalog 中移除。
- 系統會改為建立新的較高層級資料表,並使用預期的資料表根路徑。
如何指定資料表名稱?
您可以使用中繼資料 API 指定資料表名稱。
如果我在 Dataproc Metastore 或 BigQuery 中手動建立資料表,會發生什麼情況?
為特定資產啟用探索功能後,您就不需要在 Dataproc Metastore 或 BigQuery 中手動註冊項目。
關閉 Dataplex Universal Catalog Discovery 後,您可以手動定義資料表名稱、結構定義和分區定義。或者,您也可以執行下列步驟:
- 建立資料表:僅指定必要資訊,例如資料表根路徑。
- 使用 Dataplex Universal Catalog Discovery 填入其餘中繼資料,例如結構定義和分割區定義。
- 隨時更新中繼資料。
如果 BigQuery 中未顯示資料表,該怎麼辦?
雖然 Dataplex 通用目錄中繼資料全都會在中繼資料 API 中集中註冊,但只有與 BigQuery 相容的 Cloud Storage 資料表,才會以外部資料表的形式發布至 BigQuery。在中繼資料 API 的資料表項目詳細資料中,您可以找到 BigQuery 相容性標記,指出哪些實體已發布至 BigQuery,以及發布原因。
限制
- Discovery 不支援外部資料表,包括 BigLake 外部資料表。不過,外部資料表會自動擷取至 Dataplex Universal Catalog,因此您可以改為在 Dataplex Universal Catalog 中搜尋。
後續步驟
- 瞭解如何使用中繼資料。