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:表示由於呼叫
RunTask
API,因此執行了作業。TASK_CONFIG:表示工作是因任務的
TriggerSpec
設定而執行。
排程模式
Dataplex Universal Catalog 支援下列排程模式:
- 執行一次
- 使用這個模式,即可只執行一次工作。您可以選擇立即執行,或在日後的特定時間執行。即使立即執行工作,最多仍可能需要兩分鐘才會開始執行。
- 依排程執行
- 使用這個模式,以重複頻率執行工作。 支援的重複頻率包括每日、每週、每月或自訂。
- 依需求執行
使用這個模式,即可視需要執行先前建立的工作。只有
RunTask
API 支援隨選執行模式。工作隨選執行時,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 Lake 服務帳戶使用服務帳戶的權限。您可以在 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 會在 Dataproc Serverless (批次) 上執行工作。如要查看 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 工作的快訊和通知」。