Dataplex Universal Catalog 支援排定自訂程式碼的執行時間,可選擇一次性執行、定期執行或隨選執行。隨選功能目前為預覽版,僅支援透過 API 使用。您可以使用 Spark (Java)、PySpark (僅限 Spark 3.2 版) 或 Spark SQL,排定客戶資料轉換作業。Dataplex Universal Catalog 會使用無伺服器 Spark 處理作業和內建的無伺服器排程器執行程式碼。
術語
- 工作
- Dataplex Universal Catalog 工作代表您希望 Dataplex Universal Catalog 依排程執行的工作。封裝程式碼、參數和時間表。
- 工作
- 工作代表 Dataplex Universal Catalog 工作的一次執行作業。舉例來說,如果工作排定每天執行,Dataplex Universal Catalog 每天都會建立工作。 - 如果是 2023 年 5 月 10 日當天或之後建立的工作,「觸發條件」欄位會顯示工作的執行觸發條件類型。 - 工作執行觸發類型如下: - RUN_REQUEST:表示由於呼叫 - RunTaskAPI,因此執行了作業。
- TASK_CONFIG:表示工作是因任務的 - TriggerSpec設定而執行。
 
排程模式
Dataplex Universal Catalog 支援下列排程模式:
- 執行一次
- 使用這個模式,即可只執行一次工作。您可以選擇立即執行,或在日後的特定時間執行。即使立即執行工作,最多仍可能需要兩分鐘才會開始執行。
- 依排程執行
- 使用這個模式,以重複頻率執行工作。 支援的重複頻率包括每日、每週、每月或自訂。
- 依需求執行
- 使用這個模式,即可視需要執行先前建立的工作。只有 - RunTaskAPI 支援隨選執行模式。工作隨選執行時,Dataplex Universal Catalog 會使用現有參數建立工作。您可以指定- ExecutionSpec引數和標籤來執行工作。
事前準備
- 啟用 Dataproc API。 
- 為網路和子網路啟用私人 Google 存取權。在用於 Dataplex Universal Catalog 工作的網路上啟用私人 Google 存取權。如果您在建立 Dataplex Universal Catalog 工作時未指定網路或子網路,Dataplex Universal Catalog 會使用預設子網路,且您必須為預設子網路啟用 Private Google Access。 
- 建立服務帳戶。如要排定任何 Dataplex Universal Catalog 工作,必須使用服務帳戶。服務帳戶必須屬於您執行工作的專案。 服務帳戶必須具備下列權限: - 存取正在處理的 BigQuery 和 Cloud Storage 資料。 
- 在執行工作的專案中,擁有 Dataproc 工作站角色權限。 
- 如果工作需要讀取或更新附加至 Lake 的 Dataproc Metastore 執行個體,服務帳戶需要「Dataproc Metastore 檢視者」或「編輯者」角色。 您必須在設定 Dataplex Universal Catalog Lake 的專案中授予這個角色。 
- 如果工作是 Spark SQL 工作,您需要授予服務帳戶 Dataplex Universal Catalog 開發人員角色。您必須在設定 Dataplex Universal Catalog 湖泊的專案中授予這個角色。 
- 如果工作是 Spark SQL 工作,您需要具備結果寫入值區的 Cloud Storage 管理員權限。 
- 如要排定及執行 Spark SQL 和自訂 Spark 工作,您必須在服務帳戶中獲派 Dataplex Universal Catalog 中繼資料讀取者 ( - roles/dataplex.metadataReader)、Dataplex Universal Catalog 檢視者 (- roles/dataplex.viewer) 和 Dataproc Metastore 中繼資料使用者 (- roles/metastore.metadataUser) 身分與存取權管理角色。
 
- 將服務帳戶的「服務帳戶使用者」角色 ( - roles/iam.serviceAccountUser) 授予提交工作的使用者。如需操作說明,請參閱「管理服務帳戶的存取權」。
- 授予 Dataplex Universal Catalog 資料湖泊服務帳戶使用服務帳戶的權限。您可以在 Google Cloud 控制台的「Lake Details」(湖泊詳細資料) 頁面中,找到 Dataplex Universal Catalog lake 服務帳戶。 
- 如果包含 Dataplex Universal Catalog 湖泊的專案,與要執行工作的專案不同,請在執行工作的專案中,授予 Dataplex Universal Catalog 湖泊服務帳戶 Dataproc 編輯者角色。 
- 將必要的程式碼構件 (JAR、Python 或 SQL 指令碼檔案) 或封存檔案 ( - .jar、- .tar、- .tar.gz、- .tgz、- .zip) 放在 Cloud Storage 路徑中。
- 請確認服務帳戶具備 Cloud Storage 值區的必要 - storage.objects.get權限,才能儲存這些程式碼構件。
排定 Spark (Java 或 Python) 工作
控制台
- 前往 Google Cloud 控制台的 Dataplex Universal Catalog「Process」(程序) 頁面。 
- 按一下「建立工作」。 
- 如要「建立自訂 Spark 工作」,請按一下「建立工作」。 
- 選擇 Dataplex Universal Catalog 湖泊。 
- 提供工作名稱。 
- 為工作建立 ID。 
- 在「工作設定」部分,選取「類型」為「Spark」或「PySpark」。 
- 輸入相關引數。 
- 在「Service account」(服務帳戶) 欄位中,輸入自訂 Spark 工作可執行的使用者服務帳戶。 
- 按一下「繼續」。 
- 選用:設定排程:選取「執行一次」或「重複」。填寫必填欄位。 
- 按一下「繼續」。 
- 選用:自訂資源和新增其他設定。 
- 點選「建立」。 
gcloud
您可以使用 gcloud CLI 指令排定 Spark (Java / Python) 工作。下表列出必要和選用參數:
| 參數 | 說明 | 
|---|---|
| --lake | Dataplex Universal Catalog 服務的湖泊資源湖泊 ID。 | 
| --location | Dataplex Universal Catalog 服務的位置。 | 
| --spark-main-class | 主要駕駛人類別。包含類別的 jar檔案必須位於預設的CLASSPATH中。 | 
| --spark-main-jar-file-uri | 包含主要類別的 jar檔案 Cloud Storage URI。 | 
| --spark-archive-uris | 選用:要解壓縮至各項執行程式工作目錄的封存檔 Cloud Storage URI。支援的檔案類型: .jar、.tar、.tar.gz、.tgz和.zip。 | 
| --spark-file-uris | 選用:要遷入各項執行程式工作目錄的檔案 Cloud Storage URI。 | 
| --batch-executors-count | 選用:工作執行器的總數。預設值為 2。 | 
| --batch-max-executors-count | 選用:可設定的執行器數量上限,預設值為 1000。如果 batch-max-executors-count大於batch-executors-count,Dataplex Universal Catalog 就會啟用自動調整規模功能。 | 
| --container-image-java-jars | 選用:要加入類別路徑的 Java JAR 清單。有效輸入內容包括 Jar 二進位檔的 Cloud Storage URI。 例如: gs://bucket-name/my/path/to/file.jar。 | 
| --container-image-properties | 選用:以 prefix:property格式指定的屬性鍵。例如 core:hadoop.tmp.dir。詳情請參閱「叢集屬性」。 | 
| --vpc-network-tags | 選用:要套用至工作的網路標記清單。 | 
| --vpc-network-name | 選用:執行作業的虛擬私有雲網路。根據預設,Dataplex Universal Catalog 會使用專案中名為 Default的虛擬私有雲網路。請只使用 --vpc-network-name或--vpc-sub-network-name。 | 
| --vpc-sub-network-name | 選用:執行工作的虛擬私有雲子網路。 請只使用 --vpc-sub-network-name或--vpc-network-name。 | 
| --trigger-type | 使用者指定工作的觸發條件類型。值必須是下列其中一個: ON_DEMAND- 工作會在建立後不久執行一次。RECURRING:工作會按照排程定期執行。 | 
| --trigger-start-time | 選填:工作首次執行的時間。格式為 `{year}-{month}-{day}T{hour}:{min}:{sec}Z`,時區為世界標準時間。舉例來說,「2017-01-15T01:30:00Z」代表 2017 年 1 月 15 日世界標準時間 01:30。如未指定此值,如果觸發類型為 ON_DEMAND,工作會在提交後執行;如果觸發類型為RECURRING,工作會在指定時間執行。 | 
| --trigger-disabled | 選用:防止工作執行。這項參數不會取消已執行的工作,而是暫時停用 RECURRING工作。 | 
| --trigger-max-retires | 選用:取消前的重試次數。如要一律不重試失敗的工作,請將值設為零。 | 
| --trigger-schedule | Cron 排程,可定期執行工作。 | 
| --description | 選用:工作說明。 | 
| --display-name | 選用:工作顯示名稱。 | 
| --labels | 選用:要新增的標籤 KEY=VALUE組合清單。 | 
| --execution-args | 選用:要傳遞給工作的引數。引數可以是鍵/值組合。您可以傳遞以半形逗號分隔的鍵/值組合清單,做為執行引數。如要傳遞位置引數,請將鍵設為 TASK_ARGS,並將值設為以半形逗號分隔的所有位置引數字串。如要使用半形逗號以外的分隔符號,請參閱逸出。如果同時傳遞 key-value和位置引數,則TASK_ARGS會做為最後一個引數傳遞。 | 
| --execution-service-account | 用於執行工作的服務帳戶。 | 
| --max-job-execution-lifetime | 選用:工作執行作業到期前的最長期限。 | 
| --container-image | 選用:工作執行階段環境的自訂容器映像檔。如未指定,系統會使用預設的容器映像檔。 | 
| --kms-key | 選用:用於加密的 Cloud KMS 金鑰,格式為: projects/{project_number}/locations/{location_id}/keyRings/{key-ring-name}/cryptoKeys/{key-name} | 
Java 範例:
glcoud dataplex tasks create --project=<project-name> --location=<location> --lake=<lake-id> --trigger-type=ON_DEMAND –spark-main-jar-file-uri=<gcs location to java file> --execution-service-account=<service-account-email> --trigger-start-time=<timestamp after which job starts ex. 2099-01-01T00:00:00Z> --labels=key1=value1,key2=value3,key3=value3 --execution-args=arg1=value1,arg2=value3,arg3=value3 <task-id>
PySpark 範例:
gcloud dataplex tasks create --project=<project-name> --location=<location> --lake=<lake-id> --trigger-type=RECURRING --trigger-schedule=<Cron schedule https://en.wikipedia.org/wiki/Cron> --spark-python-script-file=<gcs location to python script> --execution-service-account=<service-account-email> --execution-args=^::^arg1=value1::arg2=value2::TASK_ARGS="pos-arg1, pos-arg2" <task-id>
REST
如要建立工作,請使用 API Explorer。
排定 Spark SQL 工作
gcloud
如要排定 Spark SQL 工作,請執行與「排定 Spark (Java 或 Python) 工作」中相同的 gcloud CLI 指令,並加入下列額外參數:
| 參數 | 說明 | 
|---|---|
| --spark-sql-script | SQL 查詢文字。必須提供 spark-sql-script或spark-sql-script-file。 | 
| --spark-sql-script-file | 查詢檔案的參照。這個值可以是查詢檔案的 Cloud Storage URI,也可以是 SQL 指令碼內容的路徑。必須提供 spark-sql-script或spark-sql-script-file。 | 
| --execution-args | 如果是 Spark SQL 工作,則必須提供下列引數,並以位置引數形式傳遞: --output_location, <GCS uri of the output directory>--output_format, <output file format>。支援的格式包括 CSV 檔案、JSON 檔案、parquet 和 orc。 | 
gcloud dataplex tasks create --project=<project-name> --location=<location> --lake=<lake-id> --execution-service-account=<service-account-email> --trigger-type=ON_DEMAND --spark-sql-script=<sql-script> --execution-args=^::^TASK_ARGS="--output_location, <gcs folder location>, --output_format, json" <sql-task-id>
REST
如要建立工作,請使用 API Explorer。
監控工作
控制台
- 前往 Google Cloud 控制台的 Dataplex Universal Catalog「Process」(程序) 頁面。 
- 「Tasks」分頁會列出依工作範本類型篩選的工作。 
- 在「名稱」欄中,按一下要查看的任何工作。 
- 按一下要查看的工作的「工作 ID」。 - 系統會在Google Cloud 控制台中開啟 Dataproc 頁面,方便您查看監控和輸出詳細資料。 
gcloud
下表列出用於監控工作的 gcloud CLI 指令。
| 動作 | gcloud CLI 指令 | 
|---|---|
| 列出工作 | gcloud dataplex tasks list --project=<project-name> --location=<location> --lake=<lake-id> | 
| 查看工作詳細資料 | gcloud dataplex tasks describe --project=<project-name> --location=<location> --lake=<lake-id> <task-id> | 
| 列出工作的工作 | gcloud dataplex tasks jobs list --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> | 
| 查看工作詳細資料 | gcloud dataplex tasks jobs describe --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id> | 
Dataplex Universal Catalog 會在 Serverless for Apache Spark (批次) 上執行工作。如要查看 Dataplex Universal Catalog 工作的執行記錄,請按照下列步驟操作:
- 取得 Dataproc Serverless (批次) 工作 ID。執行下列指令: - gcloud dataplex tasks jobs describe --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id>
- 查看記錄。執行下列指令,並使用您從上一個指令取得的作業 ID: - gcloud beta dataproc batches wait --project=<project-name> --region=<location> <job-id>
REST
管理時間表
在 Google Cloud 控制台的 Dataplex Universal Catalog 中,您可以編輯工作排程、刪除工作或取消進行中的工作。下表列出這些動作的 gcloud CLI 指令。
| 動作 | gcloud CLI 指令 | 
|---|---|
| 編輯工作排程 | gcloud dataplex tasks update --project=<project-name> --location=<location> --lake=<lake-id> --trigger-schedule=<updated-schedule> <task-id> | 
| 刪除工作 | gcloud dataplex tasks delete --project=<project-name> --location=<location> --lake=<lake-id> <task-id> | 
| 取消工作 | gcloud dataplex tasks jobs cancel --project=<project-name> --location=<location> --lake=<lake-id> --task=<task-id> <job-id> | 
後續步驟
- 請參閱 Dataproc 範本。
- 試用預先建構的範本,將資料從 Dataplex Universal Catalog Cloud Storage 資產逐步移至 BigQuery。
- 請參閱「設定 Dataplex Universal Catalog 工作警報和通知」。