探索 Cloud Storage 資料並匯入目錄
本文說明如何使用 Dataplex Universal Catalog 自動探索功能。這項 BigQuery 功能可掃描 Cloud Storage 儲存空間值區中的資料,擷取並編目中繼資料。在探索掃描作業中,自動探索功能會為結構化資料建立 BigLake 或外部資料表,並為非結構化資料建立物件資料表。這個集中式表格資料可簡化 AI 輔助的資料洞察、資料安全性和治理。
如要自動探索 Cloud Storage 資料,請建立並執行探索掃描作業。
探索掃描總覽
探索掃描會執行下列動作:
- 掃描 Cloud Storage bucket 或路徑中的資料。
- 將結構化和半結構化資料分組到資料表中。
- 收集中繼資料,例如資料表名稱、結構定義和分區定義。
- 使用結構定義和分割區定義,在 BigQuery 中建立及更新 BigLake、外部或物件資料表。
如果是圖片和影片等非結構化資料,探索掃描會偵測並註冊與 BigLake 物件資料表共用相同媒體類型的檔案群組。舉例來說,如果 gs://images/group1
包含 GIF 圖片,而 gs://images/group2
包含 JPEG 圖片,探索掃描作業就會偵測並註冊兩個檔案集。
如果是 Avro 等結構化資料,探索掃描會將檔案群組註冊為 BigLake 外部資料表,且只會偵測位於含有相同資料格式和相容結構定義的資料夾中的檔案。
探索掃描支援下列結構化和半結構化資料格式:
- Parquet
- Avro
- ORC
- JSON (僅限以換行符號分隔的格式)
- CSV (但不得為含有註解列的 CSV 檔案)
探索掃描作業支援下列結構化和半結構化資料的壓縮格式:
下列格式的內部壓縮:
壓縮 副檔名範例 支援的格式 gzip .gz.parquet
Parquet LZ4 .lz4.parquet
Parquet Snappy .snappy.parquet
Parquet、ORC、Avro LZO .lzo.parquet
Parquet、ORC JSON 和 CSV 檔案的外部壓縮:
- gzip
- bzip2
如要瞭解探索掃描支援的資料表數量上限,請參閱「配額與限制」。
探索到的資料表會在 BigQuery 中註冊為 BigLake 外部資料表、BigLake 物件資料表或外部資料表。這樣一來,他們就能在 BigQuery 中分析資料。BigLake 資料表和物件資料表的中繼資料快取功能也會啟用。所有 BigLake 資料表都會自動擷取至 Dataplex Universal Catalog,供您搜尋及探索。
事前準備
Enable the Dataplex API.
Dataplex Universal Catalog 服務帳戶的必要角色
開始之前,請先在專案中將 IAM 權限指派給 Dataplex Universal Catalog 服務帳戶。
service-PROJECT_NUMBER@gcp-sa-dataplex.iam.gserviceaccount.com
將 PROJECT_NUMBER
替換為已啟用 Dataplex API 的專案。
為確保 Dataplex 服務帳戶具備建立及執行探索掃描的必要權限,請要求管理員將下列 IAM 角色授予 Dataplex 服務帳戶:
-
Dataplex Discovery 服務代理 (
roles/dataplex.discoveryServiceAgent
) 儲存空間 bucket -
Dataplex Discovery 發布服務代理 (
roles/dataplex.discoveryPublishingServiceAgent
) 使用者專案 -
建立 BigLake 資料表:
BigQuery 連線上的 Dataplex Discovery BigLake 發布服務代理 (
roles/dataplex.discoveryBigLakePublishingServiceAgent
)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這些預先定義的角色具備建立及執行探索掃描作業所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要建立及執行探索掃描作業,必須具備下列權限:
-
bigquery.datasets.create
資料來源專案 -
storage.buckets.get
資料來源 bucket -
storage.objects.get
資料來源 bucket -
storage.objects.list
資料來源 bucket -
bigquery.datasets.get
資料來源專案 -
提供連線:
-
bigquery.connections.delegate
在 BigQuery 連線上 -
bigquery.connections.use
在 BigQuery 連線上
-
管理員或許還可透過自訂角色或其他預先定義的角色,將這些權限授予 Dataplex 服務帳戶。
BigQuery 連線服務帳戶的必要角色
為確保 BigQuery Connection 服務帳戶具備建立探索掃描的必要權限,請管理員授予 BigQuery Connection 服務帳戶 Cloud Storage 儲存空間的「Dataplex Discovery 服務代理」 (roles/dataplex.discoveryServiceAgent
) IAM 角色。
這個預先定義的角色具備建立探索掃描作業所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要建立探索掃描作業,必須具備下列權限:
-
bigquery.datasets.create
資料來源專案 -
storage.buckets.get
資料來源 bucket -
storage.objects.get
資料來源 bucket -
storage.objects.list
資料來源 bucket -
bigquery.datasets.get
資料來源專案 -
提供連線:
-
bigquery.connections.delegate
在 BigQuery 連線上 -
bigquery.connections.use
在 BigQuery 連線上
-
管理員或許還可透過自訂角色或其他預先定義的角色,將這些權限授予 BigQuery 連線服務帳戶。
終端使用者必須具備的角色
如要取得建立及管理資料探索掃描作業所需的權限,請要求管理員在 Cloud Storage 儲存空間上授予下列 IAM 角色:
-
具備 DataScan 資源的完整存取權限:
Dataplex DataScan 管理員 (
roles/dataplex.dataScanAdmin
) - 您的專案 -
具備 DataScan 資源的寫入權限:
Dataplex DataScan 編輯者 (
roles/dataplex.dataScanEditor
) - 您的專案 -
具備 DataScan 資源的讀取權限,但不包括結果:
Dataplex DataScan 檢視者 (
roles/dataplex.dataScanViewer
) - 您的專案 -
具備 DataScan 資源的讀取權限,包括結果:
Dataplex DataScan 資料檢視者 (
roles/dataplex.dataScanDataViewer
) - 您的專案
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
這些預先定義的角色具備建立及管理資料探索掃描作業所需的權限。如要查看確切的必要權限,請展開「必要權限」部分:
所需權限
如要建立及管理資料探索掃描作業,必須具備下列權限:
-
建立 DataScan:
dataplex.datascans.create
在專案中 -
刪除 DataScan:
dataplex.datascans.delete
在專案或 DataScan 資源上 -
查看 DataScan 詳細資料 (不含結果):
dataplex.datascans.get
在投影機上查看 DataScan 資源 -
查看 DataScan 詳細資料,包括結果:
dataplex.datascans.getData
專案或 DataScan 資源 -
列出 DataScan:
dataplex.datascans.list
在專案或 DataScan 資源中 -
執行 DataScan:
dataplex.datascans.run
在專案或 DataScan 資源上 -
更新 DataScan 的說明:
dataplex.datascans.update
在投影機上,DataScan 資源 -
查看 DataScan 的 IAM 權限:
dataplex.datascans.getIamPolicy
在專案或 DataScan 資源上 -
在專案或 DataScan 資源上設定 DataScan 的 IAM 權限:
dataplex.datascans.setIamPolicy
建立探索掃描作業
如要探索資料,您必須建立及執行探索掃描作業。您可以設定掃描時間表,也可以視需要執行掃描。
探索掃描作業執行時,會在 BigQuery 中建立與掃描的 Cloud Storage 值區對應的新資料集。BigQuery 資料集名稱與 Cloud Storage 值區名稱相同。儲存空間名稱中的無效字元會替換為底線。如果資料集名稱無法使用,系統會附加後置字元 (例如 _discovered_001
)。資料集包含探索掃描建立的 BigLake 外部資料表或非 BigLake 外部資料表,以供進一步分析。
控制台
前往 Google Cloud 控制台的「Metadata curation」(中繼資料管理) 頁面。
在「Cloud Storage discovery」(Cloud Storage 探索) 分頁中,按一下「Create」(建立)。
在「建立探索掃描」窗格中,設定要掃描的資料詳細資訊。
輸入掃描名稱。
在「掃描 ID」欄位中,輸入符合資源命名慣例 Google Cloud的專屬 ID。如未提供 ID,探索掃描作業會產生掃描 ID。
選用:提供掃描說明。
如要指定包含待掃描檔案的 Cloud Storage bucket,請在「Bucket」欄位中瀏覽並選取 bucket。
選用:提供檔案篩選的 glob 模式清單,定義要納入或排除在探索掃描範圍內的資料。
- 包含:如果只應掃描部分資料,請提供與要納入的物件相符的 glob 模式清單。
- 排除:提供與要排除的物件相符的 glob 模式清單。
舉例來說,如要從探索掃描中排除
gs://test_bucket/foo/..
,請輸入**/foo/**
做為排除路徑。引號會導致錯誤。請務必輸入**/foo/**
,而非"**/foo/**"
。如果您同時提供納入模式和排除模式,系統會先套用排除模式。
選用步驟:在「專案」中,選取包含探索掃描所建立 BigLake 外部資料表或非 BigLake 外部資料表的 BigQuery 資料集專案。如未提供,系統會在包含 Cloud Storage 值區的專案中建立資料集。
在「位置類型」中,選取「區域」或「多區域」(視可用選項而定),建立 BigQuery 發布資料集。
如要從掃描的資料建立 BigLake 資料表,請在「連線 ID」欄位中提供 Google Cloud 資源連線 ID。詳情請參閱 Google Cloud BigQuery 中的資源連線。
您可以在與 BigQuery 資料集位置相同的位置建立新的連線 ID,與 Cloud Storage 值區位置相容。
如未提供資源連線 ID,探索掃描會建立非 BigLake 外部資料表。
在「探索頻率」部分,設定探索掃描的執行時間:
重複:掃描作業會依預先定義的時間表執行。提供掃描開始時間、執行掃描的日期和頻率 (例如每小時)。
隨選:掃描作業會依需求執行。
選用:在「JSON 或 CSV 規格」部分,指定掃描作業應如何處理 JSON 和 CSV 檔案。按一下「JSON 或 CSV 規格」。
- 如要設定 JSON 選項,請選取「啟用 JSON 剖析選項」。
- 停用型別推斷:探索掃描作業是否應在掃描資料時推斷資料型別。如果停用 JSON 資料的類型推斷功能,所有資料欄都會註冊為原始類型,例如字串、數字或布林值。
- 編碼格式:資料的字元編碼,例如 UTF-8、US-ASCII 或 ISO-8859-1。如未指定值,系統會預設使用 UTF-8。
- 如要設定 CSV 選項,請勾選「啟用 CSV 剖析選項」。
- 停用型別推斷:探索掃描作業是否應在掃描資料時推斷資料型別。如果停用 CSV 資料的型別推斷功能,所有資料欄都會註冊為字串。
- 標題列:標題列數,可以是
0
或1
。 如果指定值0
,探索掃描會推斷標題,並從檔案中擷取資料欄名稱。預設值為0
。 - 資料欄分隔符號字元:用來分隔值的字元。請提供單一字元,即
\r
(回車) 或\n
(換行)。預設值為半形逗號 (,
)。 - 編碼格式:資料的字元編碼,例如
UTF-8
、US-ASCII
或ISO-8859-1
。如未指定值,系統會預設使用 UTF-8。
- 如要設定 JSON 選項,請選取「啟用 JSON 剖析選項」。
按一下「建立」 (排程掃描) 或「立即執行」 (隨選掃描)。
系統會按照您設定的時間表執行排定掃描作業。
建立隨選掃描作業時,系統會先執行一次掃描,之後您隨時可以執行掃描。探索掃描作業可能需要幾分鐘才能完成。
gcloud
如要建立探索掃描,請使用 gcloud dataplex datascans create data-discovery
指令。
gcloud dataplex datascans create data-discovery --location=LOCATION --data-source-resource=BUCKET_PATH
更改下列內容:
LOCATION
:您要建立探索掃描的位置BUCKET_PATH
:要掃描的 bucket 的 Cloud Storage 路徑
REST
如要建立探索掃描作業,請使用 dataScans.create
方法。
查詢已發布的 BigLake 資料表
執行探索掃描後,BigLake 資料表會發布至 BigQuery 中的新資料集。接著,您就能在 BigQuery 中使用 SQL 分析這些資料表,或在 Dataproc 中使用 Apache Spark 或 HiveQL 分析。
SQL
您可以在 BigQuery 中查看或查詢資料表。如要進一步瞭解如何在 BigQuery 中執行查詢,請參閱「執行查詢」。
Apache Spark
如要透過 Dataproc 無伺服器作業,使用 Spark SQL 查詢 BigLake 資料表,請按照下列步驟操作:
建立類似下列範例指令碼的 PySpark 指令碼:
from pyspark.sql import SparkSession session = ( SparkSession.builder.appName("testing") .config("viewsEnabled","true") .config("materializationDataset", "DATASET_ID") .config("spark.hive.metastore.bigquery.project.id", "PROJECT_ID") .config("spark.hive.metastore.client.factory.class", "com.google.cloud.bigquery.metastore.client.BigQueryMetastoreClientFactory") .enableHiveSupport() .getOrCreate() ) session.sql("show databases").show() session.sql("use TABLE_NAME").show() session.sql("show tables").show() sql = "SELECT * FROM DATASET_ID.TABLE_ID LIMIT 10" df = session.read.format("bigquery").option("dataset", "DATASET_ID").load(sql) df.show()
更改下列內容:
DATASET_ID
:使用者具有建立權限的資料集 IDPROJECT_ID
:含有 BigLake 資料表的專案 IDTABLE_NAME
:BigLake 資料表名稱TABLE_ID
:BigLake 資料表的 ID
管理已發布的 BigLake 資料表
探索掃描作業會在 BigQuery 中建立及管理發布的 BigLake 資料表。根據預設,每次執行排定或隨選掃描時,探索掃描都會處理新資料探索、結構定義推論和結構定義演變。如要指出中繼資料是由掃描作業管理,掃描作業會發布標籤設為 discovery-managed
的資料表 metadata-managed-mode
。
如要自行管理結構定義和其他中繼資料 (例如 CSV 或 JSON 選項),請將 metadata-managed-mode
標籤設為 user_managed
。這樣一來,下次執行探索掃描時,結構定義就不會變更。如果探索掃描推斷的結構定義不正確,或與特定資料表的預期結構定義不同,這種方法就非常實用。如果將 metadata-managed-mode
標籤設為 user_managed
,即可降低費用。
如要更新標籤,可以編輯標籤鍵的值,將 metadata-managed-mode
變更為 user_managed
,而非 discovery-managed
。在這種情況下,只要資料表附加 user_managed
標籤,探索掃描作業就不會更新資料表的結構定義。
更新已發布的 BigLake 資料表
如果使用預設設定,透過探索掃描作業發布 BigLake 資料表,系統會在排定的頻率執行探索掃描作業,並自動更新結構定義和其他中繼資料。
如要更新已發布的 BigLake 資料表,請按照下列步驟操作:
前往 Google Cloud 控制台的「BigQuery」頁面。
在「Explorer」窗格中,展開專案和資料集,然後選取資料表。
在「詳細資料」分頁的「標籤」部分中,確認 metadata-managed-mode 標籤已設為 user_managed。如果設為其他值,請按照下列步驟操作:
按一下「編輯詳細資料」
。在「metadata-managed-mode」鍵旁邊的「value」欄位中,輸入
user_managed
。
刪除已發布的 BigLake 資料表
如要刪除已發布的 BigLake 資料表,請按照下列步驟操作:
前往 Google Cloud 控制台的「BigQuery」頁面。
在「Explorer」窗格中,展開專案和資料集,然後選取資料表。
在「詳細資料」窗格的「標籤」部分中,確認「metadata-managed-mode」標籤未設為
user_managed
。如果設為user_managed
,請按照下列步驟操作:按一下「編輯詳細資料」圖示
。在「metadata-managed-mode」鍵旁邊的「value」欄位中,輸入
discovery-managed
。
按一下「執行」。探索掃描作業會視需求執行。
探索掃描作業執行完畢後,BigLake 資料表會從 BigQuery 中刪除,且無法透過 Spark 列出或查詢。
依需求執行探索掃描
如要視需要執行探索掃描,請選取下列其中一個選項。
控制台
前往 Google Cloud 控制台的「BigQuery」頁面。
在導覽選單中,依序點選「治理」>「中繼資料管理」。
在「Cloud Storage discovery」(Cloud Storage 探索) 窗格中,按一下要執行的探索掃描。
按一下「立即執行」。
gcloud
如要執行探索掃描,請使用 gcloud dataplex datascans run
指令:
gcloud dataplex datascans runDATASCAN
\ --location=LOCATION
請替換下列變數:
LOCATION
:建立探索掃描作業的 Google Cloud 區域。DATASCAN
:探索掃描的名稱。
REST
如要視需要執行探索掃描,請使用 Dataplex API 中的 dataScans.run
方法。
列出探索掃描作業
如要列出探索掃描結果,請選取下列其中一個選項。
控制台
前往 Google Cloud 控制台的「BigQuery」頁面。
在導覽選單中,依序點選「治理」>「中繼資料管理」。
「Cloud Storage 探索」窗格會列出專案中建立的探索掃描作業。
gcloud
gcloud dataplex datascans list --location=LOCATION --project=PROJECT_ID
更改下列內容:
LOCATION
:專案位置PROJECT_ID
:您的 Google Cloud 專案 ID
REST
如要擷取專案中的探索掃描清單,請使用 Dataplex Universal Catalog API 中的 dataScans.list
方法。
查看探索掃描作業
如要查看探索掃描結果,請選取下列其中一個選項。
控制台
前往 Google Cloud 控制台的「BigQuery」頁面。
在導覽選單中,依序點選「治理」>「中繼資料管理」。
在「Cloud Storage discovery」(Cloud Storage 探索) 窗格中,按一下要查看詳細資料的探索掃描。
- 「掃描詳細資料」部分會顯示探索掃描的詳細資料。
- 「掃描狀態」部分會顯示最新掃描工作的探索結果。
gcloud
gcloud dataplex datascans jobs describe JOB \ --location=LOCATION \ --datascan=DATASCAN \ --view=FULL
更改下列內容:
JOB
:探索掃描作業的作業 ID。LOCATION
:建立探索掃描作業的 Google Cloud 區域。DATASCAN
:作業所屬的探索掃描名稱。--view=FULL
:查看探索掃描作業結果。
REST
如要查看資料探索掃描結果,請使用 Dataplex Universal Catalog API 中的 dataScans.get
方法。
查看歷來探索掃描結果
如要查看歷來探索掃描結果,請選取下列其中一個選項。
控制台
前往 Google Cloud 控制台的「BigQuery」頁面。
在導覽選單中,依序點選「治理」>「中繼資料管理」。
在「Cloud Storage discovery」(Cloud Storage 探索) 窗格中,按一下要查看詳細資料的探索掃描。
按一下「掃描記錄」窗格。「掃描記錄」窗格會提供過去工作相關資訊,包括每個工作掃描的記錄數量、每個工作的狀態,以及工作執行時間。
如要查看工作詳細資訊,請按一下「工作 ID」欄中的工作。
gcloud
gcloud dataplex datascans jobs list \ --location=LOCATION \ --datascan=DATASCAN
更改下列內容:
LOCATION
:建立探索掃描作業的 Google Cloud 區域。DATASCAN
:作業所屬的探索掃描名稱。
REST
如要查看探索掃描的所有工作,請使用 Dataplex Universal Catalog API 中的 dataScans.job/list
方法。
更新探索掃描作業
如要變更探索掃描作業的時間表 (例如從隨選變更為定期),請更新探索掃描作業。
控制台
前往 Google Cloud 控制台的「BigQuery」頁面。
在導覽選單中,依序點選「治理」>「中繼資料管理」。
在「Cloud Storage 探索」窗格中,找出要更新的探索掃描作業,然後依序點選「動作」>「編輯」。
編輯值。
按一下 [儲存]。
gcloud
如要更新探索掃描,請使用 gcloud dataplex datascans update data-discovery
指令。
gcloud dataplex datascans update data-discovery SCAN_ID --location=LOCATION --description=DESCRIPTION
更改下列內容:
SCAN_ID
:要更新的探索掃描 IDLOCATION
:建立探索掃描的 Google Cloud 區域DESCRIPTION
:探索掃描的新說明
REST
如要更新探索掃描,請使用 Dataplex Universal Catalog API 中的 dataScans.patch
方法。
刪除探索掃描作業
如要刪除探索掃描作業,請選取下列其中一個選項。
控制台
前往 Google Cloud 控制台的「BigQuery」頁面。
在導覽選單中,依序點選「治理」>「中繼資料管理」。
在「Cloud Storage discovery」(Cloud Storage 探索) 窗格中,找出要刪除的探索掃描作業,然後依序點選「Actions」(動作)>「Delete」(刪除)。
點選「刪除」。
gcloud
gcloud dataplex datascans delete SCAN_ID --location=LOCATION --async
更改下列內容:
SCAN_ID
:要刪除的探索掃描 ID。LOCATION
:建立探索掃描作業的 Google Cloud 區域。
REST
如要刪除探索掃描作業,請使用 Dataplex Universal Catalog API 中的 dataScans.delete
方法。