本文說明如何透過在 Workflows 中執行受管理連線管道,將第三方來源的中繼資料匯入 Dataplex Universal Catalog。
如要設定代管連線管道,請為資料來源建立連接器。接著在 Workflows 中執行管道。這項管道會從資料來源擷取中繼資料,然後將中繼資料匯入 Dataplex Universal Catalog。視需要,管道也會在 Google Cloud 專案中建立 Dataplex Universal Catalog 項目群組。
如要進一步瞭解受管理連線,請參閱「受管理連線總覽」。
事前準備
匯入中繼資料前,請先完成本節中的工作。
建構連接器
連接器會從資料來源擷取中繼資料,並產生可由 Dataplex Universal Catalog 匯入的中繼資料匯入檔案。這個連接器是 Artifact Registry 映像檔,可在 Dataproc Serverless 上執行。
建立自訂連接器,從第三方來源擷取中繼資料。
如需可做為參考範本的連接器範例,請參閱「開發用於匯入中繼資料的自訂連接器」。
設定 Google Cloud 資源
-
Enable the Workflows, Dataproc, Cloud Storage, Dataplex Universal Catalog, Secret Manager, Artifact Registry, and Cloud Scheduler APIs.
如果您不打算排定時間執行管道,就不需要啟用 Cloud Scheduler API。
在 Secret Manager 中建立密鑰,儲存第三方資料來源的憑證。
設定虛擬私有雲 (VPC) 網路,執行 Dataproc Serverless for Spark 工作負載。
建立 Cloud Storage bucket,用來儲存中繼資料匯入檔案。
建立下列 Dataplex Universal Catalog 資源:
為要匯入的項目建立自訂切面類型。
必要的角色
服務帳戶代表工作流程的身分,並決定工作流程擁有的權限和可存取的資源。 Google Cloud 您需要 Workflows 的服務帳戶 (用於執行管道),以及 Dataproc 無伺服器的服務帳戶 (用於執行連接器)。
您可以使用 Compute Engine 預設服務帳戶 (PROJECT_NUMBER-compute@developer.gserviceaccount.com
),也可以建立自己的服務帳戶 (或多個帳戶) 來執行受管理連線管道。
控制台
前往 Google Cloud 控制台的「IAM」頁面。
選取要匯入中繼資料的專案。
按一下「授予存取權」
,然後輸入服務帳戶的電子郵件地址。將下列角色指派給服務帳戶:
- 記錄寫入者
- Dataplex 項目群組擁有者
- Dataplex 中繼資料工作擁有者
- Dataplex Catalog 編輯者
- Dataproc 編輯者
- Dataproc 工作者
- Secret Manager 密鑰存取者 - 儲存資料來源憑證的���鑰
- Storage 物件使用者 - Cloud Storage 值區
- Artifact Registry Reader - on the Artifact Registry repository that contains the connector image
- 服務帳戶使用者 - 如果您使用不同的服務帳戶,請在執行 Dataproc 無伺服器批次工作的服務帳戶上,授予執行工作流程的服務帳戶這項角色
- 工作流程叫用者:如要排定管道執行時間
儲存變更。
gcloud
將角色授予服務帳戶。執行下列指令:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/logging.logWriter gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/dataplex.entryGroupOwner gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/dataplex.metadataJobOwner gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/dataplex.catalogEditor gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/dataproc.editor gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/dataproc.worker
更改下列內容:
-
PROJECT_ID
:要匯入中繼資料的目標 Google Cloud專案名稱。 SERVICE_ACCOUNT_ID
:服務帳戶,例如my-service-account@my-project.iam.gserviceaccount.com
。
-
在資源層級將下列角色授予服務帳戶:
gcloud secrets add-iam-policy-binding SECRET_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/secretmanager.secretaccessor gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:SERVICE_ACCOUNT_ID" \ --role=roles/storage.objectUser \ --condition=resource.name.startsWith('projects/_/buckets/BUCKET_ID') gcloud artifacts repositories add-iam-policy-binding REPOSITORY \ --location=REPOSITORY_LOCATION \ --member=SERVICE_ACCOUNT_ID} \ --role=roles/artifactregistry.reader
更改下列內容:
SECRET_ID
:儲存資料來源憑證的密鑰 ID。該值使用格式projects/PROJECT_ID/secrets/SECRET_ID
。BUCKET_ID
:Cloud Storage bucket 的名稱。REPOSITORY
:包含連接器映像檔的 Artifact Registry 存放區。REPOSITORY_LOCATION
:存放區的代管位置。 Google Cloud
將 Dataproc Serverless 批次工作執行的服務帳戶
roles/iam.serviceAccountUser
角色,授予執行工作流程的服務帳戶。即使您為 Workflows 和 Dataproc Serverless 使用相同的服務帳戶,也必須授予這個角色。gcloud iam service-accounts add-iam-policy-binding \ serviceAccount:SERVICE_ACCOUNT_ID \ --member='SERVICE_ACCOUNT_ID' \ --role='roles/iam.serviceAccountUser'
如果您使用不同的服務帳戶,
--member
旗標的值就是執行 Dataproc Serverless 批次作業的服務帳戶。如要排定管道執行時間,請將下列角色授予服務帳戶:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member="SERVICE_ACCOUNT_ID" \ --role=roles/workflows.invoker
匯入中繼資料
如要匯入中繼資料,請建立並執行工作流程,以執行代管連線管道。您也可以選擇建立排程,以便執行管道。
控制台
建立工作流程。 用下列資訊作答:
- 服務帳戶: 您在本文件「必要角色」一節中設定的服務帳戶。
加密:選取 Google-managed encryption key。
定義工作流程:提供下列定義檔案:
如要視需要執行管道,請執行工作流程。
提供下列執行階段引數:
更改下列內容:
-
PROJECT_ID
:要匯入中繼資料的目標 Google Cloud專案名稱。 -
LOCATION_ID
:Dataproc Serverless 和中繼資料匯入作業的目標 Google Cloud 位置,以及中繼資料匯入位置。 -
ENTRY_GROUP_ID
:要匯入中繼資料的項目群組 ID。項目群組 ID 可包含小寫字母、數字和連字號。這個項目群組的完整資源名稱為「
projects/PROJECT_ID/locations/LOCATION_ID/entryGroups/ENTRY_GROUP_ID
」。 -
CREATE_ENTRY_GROUP_BOOLEAN
:如要讓管道在專案中不存在項目群組時建立該群組,請將這個值設為true
。 -
BUCKET_ID
:Cloud Storage 值區的名稱,用於儲存連接器產生的中繼資料匯入檔案。每次執行工作流程都會建立新資料夾。 -
SERVICE_ACCOUNT_ID
: 您在本文件「必要角色」部分中設定的服務帳戶。 服務帳戶會在 Dataproc Serverless 中執行連接器。 -
ADDITIONAL_CONNECTOR_ARGUMENTS
:要傳遞至連接器的其他引數清單。如需範例,請參閱「開發自訂中繼資料匯入連接器」。請將每個引數括在雙引號中,並以半形逗號分隔引數。 -
CONTAINER_IMAGE
:Artifact Registry 中託管的連結器自訂容器映像檔。 -
ENTRY_TYPES
:要匯入的項目類型清單,格式為projects/PROJECT_ID/locations/LOCATION_ID/entryTypes/ENTRY_TYPE_ID
。LOCATION_ID
必須與您匯入中繼資料的Google Cloud 位置相同,或是global
。 -
ASPECT_TYPES
:要匯入的面向類型清單,格式為projects/PROJECT_ID/locations/LOCATION_ID/aspectTypes/ASPECT_TYPE_ID
。LOCATION_ID
必須與您匯入中繼資料的Google Cloud 位置相同,或是global
。 -
選用:為
NETWORK_TAGS
引數提供網路標記清單。 -
選用:針對
NETWORK_URI
引數,提供連線至資料來源的 VPC 網路 URI。如果您提供網路,請省略子網路引數。 -
選用:為
SUBNETWORK_URI
引數提供子網路的 URI,該子網路會連線至資料來源。如果您提供子網路,請省略網路引數。
視匯入的中繼資料量而定,管道可能需要數分鐘或更久的時間才能執行。如要進一步瞭解如何查看進度,請參閱「存取工作流程執行結果」。
管道執行完畢後,您可以在 Dataplex Universal Catalog 中搜尋匯入的中繼資料。
-
選用:如要依排程執行管道,請使用 Cloud Scheduler 建立排程。用下列資訊作答:
- 頻率:定義管道執行排程的 Unix-Cron 運算式。
- 工作流程引數:連接器的執行階段引數,如上一個步驟所述。
- 服務帳戶:服務帳戶。服務帳戶會管理排程器。
gcloud
將下列工作負載定義儲存為 YAML 檔案:
定義 Bash 變數、建立工作流程,並視需要建立排程來執行管道:
更改下列內容:
-
PROJECT_ID
:要匯入中繼資料的目標 Google Cloud專案名稱。 -
LOCATION_ID
:Dataproc Serverless 和中繼資料匯入作業的目標 Google Cloud 位置,以及中繼資料匯入位置。 -
SERVICE_ACCOUNT_ID
: 您在本文件「���要角色」部分中設定的服務帳戶。 WORKFLOW_DEFINITION_FILE
:工作流程定義 YAML 檔案的路徑。WORKFLOW_NAME
:工作流程名稱。WORKFLOW_ARGUMENTS
:要傳遞至連接器的執行階段引數。引數採用 JSON 格式:如果是 Cloud Scheduler,引號字串內的雙引號會使用反斜線 (\) 逸出。例如:
--message-body="{\"argument\": \"{\\\"key\\\": \\\"value\\\"}\"}"
。更改下列內容:
-
ENTRY_GROUP_ID
:要匯入中繼資料的項目群組 ID。項目群組 ID 可包含小寫字母、數字和連字號。這個項目群組的完整資源名稱為「
projects/PROJECT_ID/locations/LOCATION_ID/entryGroups/ENTRY_GROUP_ID
」。 -
CREATE_ENTRY_GROUP_BOOLEAN
:如要讓管道在專案中不存在項目群組時建立該群組,請將這個值設為true
。 -
BUCKET_ID
:Cloud Storage 值區的名稱,用於儲存連接器產生的中繼資料匯入檔案。每次執行工作流程都會建立新資料夾。 -
ADDITIONAL_CONNECTOR_ARGUMENTS
:要傳遞至連接器的其他引數清單。如需範例,請參閱「開發用於匯入中繼資料的自訂連接器」。 -
CONTAINER_IMAGE
:Artifact Registry 中託管的連結器自訂容器映像檔。 -
ENTRY_TYPES
:要匯入的項目類型清單,格式為projects/PROJECT_ID/locations/LOCATION_ID/entryTypes/ENTRY_TYPE_ID
。LOCATION_ID
必須與您匯入中繼資料的Google Cloud 位置相同,或是global
。 -
ASPECT_TYPES
:要匯入的面向類型清單,格式為projects/PROJECT_ID/locations/LOCATION_ID/aspectTypes/ASPECT_TYPE_ID
。LOCATION_ID
必須與您匯入中繼資料的Google Cloud 位置相同,或是global
。 -
選用:為
NETWORK_TAGS
引數提供網路標記清單。 -
選用:針對
NETWORK_URI
引數,提供連線至資料來源的 VPC 網路 URI。如果您提供網路,請省略子網路引數。 -
選用:為
SUBNETWORK_URI
引數提供子網路的 URI,該子網路會連線至資料來源。如果您提供子網路,請省略網路引數。
-
CRON_SCHEDULE_EXPRESSION
:定義管道執行時間表的 cron ���算式。舉例來說,如要每天午夜執行排程,請使用0 0 * * *
運算式。
-
如要視需要執行管道,請執行工作流程:
工作流程引數為 JSON 格式,但未逸出。
視匯入的中繼資料量而定,工作流程可能需要幾分鐘或更久的時間才能執行完畢。如要進一步瞭解如何查看進度,請參閱「存取工作流程執行結果」。
管道執行完畢後,您可以在 Dataplex Universal Catalog 中搜尋匯入的中繼資料。
Terraform
-
存放區包含下列 Terraform 檔案:
main.tf
: 定義要建立的 Google Cloud 資源。variables.tf
: 宣告變數。byo-connector.tfvars
:定義受管理連線管道的變數。
編輯
.tfvars
檔案,將預留位置替換為連接器的資訊。更改下列內容:
-
PROJECT_ID
:要匯入中繼資料的目標 Google Cloud專案名稱。 -
LOCATION_ID
:Dataproc Serverless 和中繼資料匯入作業的目標 Google Cloud 位置,以及中繼資料匯入位置。 -
SERVICE_ACCOUNT_ID
: 您在本文件「必要角色」部分中設定的服務帳戶。 -
CRON_SCHEDULE_EXPRESSION
:定義管道執行時間表的 cron 運算式。舉例來說,如要每天午夜執行排程,請使用0 0 * * *
運算式。 -
ENTRY_GROUP_ID
:要匯入中繼資料的項目群組 ID。項目群組 ID 可包含小寫字母、數字和連字號。這個項目群組的完��資源名稱為「
projects/PROJECT_ID/locations/LOCATION_ID/entryGroups/ENTRY_GROUP_ID
」。 -
CREATE_ENTRY_GROUP_BOOLEAN
:如要讓管道在專案中不存在項目群組時建立該群組,請將這個值設為true
。 -
BUCKET_ID
:Cloud Storage 值區的名稱,用於儲存連接器產生的中繼資料匯入檔案。每次執行工作流程都會建立新資料夾。 -
ADDITIONAL_CONNECTOR_ARGUMENTS
:要傳遞至連接器的其他引數清單。如需範例,請參閱「開發自訂中繼資料匯入連接器」。請將每個引數括在雙引號中,並以半形逗號分隔引數。 -
CONTAINER_IMAGE
:Artifact Registry 中託管的連結器自訂容器映像檔。 -
ENTRY_TYPES
:要匯入的項目類型清單,格式為projects/PROJECT_ID/locations/LOCATION_ID/entryTypes/ENTRY_TYPE_ID
。LOCATION_ID
必須與您匯入中繼資料的Google Cloud 位置相同,或是global
。 -
ASPECT_TYPES
:要匯入的面向類型清單,格式為projects/PROJECT_ID/locations/LOCATION_ID/aspectTypes/ASPECT_TYPE_ID
。LOCATION_ID
必須與您匯入中繼資料的Google Cloud 位置相同,或是global
。 -
選用:為
NETWORK_TAGS
引數提供網路標記清單。 -
選用:針對
NETWORK_URI
引數,提供連線至資料來源的 VPC 網路 URI。如果您提供網路,請省略子網路引數。 -
選用:為
SUBNETWORK_URI
引數提供子網路的 URI,該子網路會連線至資料來源。如果您提供子網路,請省略網路引數。
-
初始化 Terraform:
terraform init
使用
.tfvars
檔案驗證 Terraform:terraform plan --var-file=CONNECTOR_VARIABLES_FILE.tfvars
請將
CONNECTOR_VARIABLES_FILE
替換為變數定義檔的名稱。使用
.tfvars
檔案部署 Terraform:terraform apply --var-file=CONNECTOR_VARIABLES_FILE.tfvars
Terraform 會在指定專案中建立工作流程和 Cloud Scheduler 工作。工作流程會按照您指定的排程執行管道。
視匯入的中繼資料量而定,工作流程可能需要幾分鐘或更久的時間才能執行完畢。如要進一步瞭解如何查看進度,請參閱「存取工作流程執行結果」。
管道執行完畢後,您可以在 Dataplex Universal Catalog 中搜尋匯入的中繼資料。
查看工作記錄檔
使用 Cloud Logging 查看受管理連線管道的記錄。記錄酬載包含 Dataproc Serverless 批次作業和中繼資料匯入作業的記錄連結 (如適用)。詳情請參閱查看工作流程記錄。
疑難排解
請嘗試下列疑難排解建議:
- 將中繼資料工作的匯入工作記錄層級設為使用偵錯層級記錄,而非資訊層級記錄。
- 查看 Dataproc Serverless 批次工作記錄 (適用於連接器執行) 和中繼資料匯入工作。詳情請參閱「查詢 Dataproc Serverless for Spark 記錄」和「查詢中繼資料工作記錄」。
- 如果無法使用管道匯入項目,且錯誤訊息提供的資訊不足,請嘗試在測試項目群組中,建立具有相同詳細資料的自訂項目。詳情請參閱「建立自訂項目」。