Google Cloud Dataproc Metastore 運算子

Dataproc Metastore 是一種完全託管、高度可用、自動修復的無伺服器 Apache Hive Metastore (HMS),可在 Google Cloud 上運行。它支援 HMS,是管理關聯實體元數據的關鍵組件,並提供開放原始碼資料生態系統中資料處理應用程式之間的互操作性。

有關該服務的更多資訊,請訪問Dataproc Metastore 生產文件 <產品文件

建立服務

在建立 Dataproc Metastore 服務之前,您需要定義服務。有關建立服務時可傳遞的可用欄位的更多資訊,請訪問Dataproc Metastore 建立服務 API。

一個簡單的服務配置範例如下

tests/system/google/cloud/dataproc_metastore/example_dataproc_metastore.py[原始碼]

SERVICE = {
    "name": "test-service",
}

使用此配置,我們可以建立服務: DataprocMetastoreCreateServiceOperator

tests/system/google/cloud/dataproc_metastore/example_dataproc_metastore.py[原始碼]

create_service = DataprocMetastoreCreateServiceOperator(
    task_id="create_service",
    region=REGION,
    project_id=PROJECT_ID,
    service=SERVICE,
    service_id=SERVICE_ID,
    timeout=TIMEOUT,
)

取得服務

要取得服務,您可以使用

DataprocMetastoreGetServiceOperator

tests/system/google/cloud/dataproc_metastore/example_dataproc_metastore.py[原始碼]

get_service = DataprocMetastoreGetServiceOperator(
    task_id="get_service",
    region=REGION,
    project_id=PROJECT_ID,
    service_id=SERVICE_ID,
)

更新服務

您可以通過提供服務配置和 updateMask 來更新服務。在 updateMask 參數中,您需要指定要更新的欄位路徑(相對於 Service)。有關 updateMask 和其他參數的更多資訊,請查看Dataproc Metastore 更新服務 API。

一個新的服務配置和 updateMask 的範例

tests/system/google/cloud/dataproc_metastore/example_dataproc_metastore.py[原始碼]

SERVICE_TO_UPDATE = {
    "labels": {
        "mylocalmachine": "mylocalmachine",
        "systemtest": "systemtest",
    }
}
UPDATE_MASK = FieldMask(paths=["labels"])

要更新服務,您可以使用: DataprocMetastoreUpdateServiceOperator

tests/system/google/cloud/dataproc_metastore/example_dataproc_metastore.py[原始碼]

update_service = DataprocMetastoreUpdateServiceOperator(
    task_id="update_service",
    project_id=PROJECT_ID,
    service_id=SERVICE_ID,
    region=REGION,
    service=SERVICE_TO_UPDATE,
    update_mask=UPDATE_MASK,
    timeout=TIMEOUT,
)

刪除服務

要刪除服務,您可以使用

DataprocMetastoreDeleteServiceOperator

tests/system/google/cloud/dataproc_metastore/example_dataproc_metastore.py[原始碼]

delete_service = DataprocMetastoreDeleteServiceOperator(
    task_id="delete_service",
    region=REGION,
    project_id=PROJECT_ID,
    service_id=SERVICE_ID,
    timeout=TIMEOUT,
)

匯出服務元數據

要匯出元數據,您可以使用

DataprocMetastoreExportMetadataOperator

tests/system/google/cloud/dataproc_metastore/example_dataproc_metastore.py[原始碼]

export_metadata = DataprocMetastoreExportMetadataOperator(
    task_id="export_metadata",
    destination_gcs_folder=DESTINATION_GCS_FOLDER,
    project_id=PROJECT_ID,
    region=REGION,
    service_id=SERVICE_ID,
    timeout=TIMEOUT,
)

還原服務

要還原服務,您可以使用

DataprocMetastoreRestoreServiceOperator

tests/system/google/cloud/dataproc_metastore/example_dataproc_metastore_backup.py[原始碼]

restore_service = DataprocMetastoreRestoreServiceOperator(
    task_id="restore_metastore",
    region=REGION,
    project_id=PROJECT_ID,
    service_id=SERVICE_ID,
    backup_id=BACKUP_ID,
    backup_region=REGION,
    backup_project_id=PROJECT_ID,
    backup_service_id=SERVICE_ID,
    timeout=TIMEOUT,
)

建立元數據匯入

在建立 Dataproc Metastore 元數據匯入之前,您需要定義元數據匯入。有關建立元數據匯入時可傳遞的可用欄位的更多資訊,請訪問Dataproc Metastore 建立元數據匯入 API。

一個簡單的元數據匯入配置範例如下

tests/system/google/cloud/dataproc_metastore/example_dataproc_metastore.py[原始碼]

METADATA_IMPORT = {
    "name": "test-metadata-import",
    "database_dump": {
        "gcs_uri": GCS_URI,
        "database_type": DB_TYPE,
    },
}

要建立元數據匯入,您可以使用: DataprocMetastoreCreateMetadataImportOperator

tests/system/google/cloud/dataproc_metastore/example_dataproc_metastore.py[原始碼]

import_metadata = DataprocMetastoreCreateMetadataImportOperator(
    task_id="import_metadata",
    project_id=PROJECT_ID,
    region=REGION,
    service_id=SERVICE_ID,
    metadata_import=METADATA_IMPORT,
    metadata_import_id=METADATA_IMPORT_ID,
    timeout=TIMEOUT,
)

建立備份

在為服務建立 Dataproc Metastore 備份之前,您需要定義備份。有關建立備份時可傳遞的可用欄位的更多資訊,請訪問Dataproc Metastore 建立備份 API。

一個簡單的備份配置範例如下

tests/system/google/cloud/dataproc_metastore/example_dataproc_metastore_backup.py[原始碼]

BACKUP = {
    "name": "test-backup",
}

使用此配置,我們可以建立備份: DataprocMetastoreCreateBackupOperator

tests/system/google/cloud/dataproc_metastore/example_dataproc_metastore_backup.py[原始碼]

backup_service = DataprocMetastoreCreateBackupOperator(
    task_id="create_backup",
    project_id=PROJECT_ID,
    region=REGION,
    service_id=SERVICE_ID,
    backup=BACKUP,
    backup_id=BACKUP_ID,
    timeout=TIMEOUT,
)

刪除備份

要刪除備份,您可以使用

DataprocMetastoreDeleteBackupOperator

tests/system/google/cloud/dataproc_metastore/example_dataproc_metastore_backup.py[原始碼]

delete_backup = DataprocMetastoreDeleteBackupOperator(
    task_id="delete_backup",
    project_id=PROJECT_ID,
    region=REGION,
    service_id=SERVICE_ID,
    backup_id=BACKUP_ID,
    timeout=TIMEOUT,
)

列出備份

要列出備份,您可以使用

DataprocMetastoreListBackupsOperator

tests/system/google/cloud/dataproc_metastore/example_dataproc_metastore_backup.py[原始碼]

list_backups = DataprocMetastoreListBackupsOperator(
    task_id="list_backups",
    project_id=PROJECT_ID,
    region=REGION,
    service_id=SERVICE_ID,
)

檢查 Hive 分區是否存在

要檢查 Hive 分區是否已在 Metastore 中為給定表建立,您可以使用: MetastoreHivePartitionSensor

tests/system/google/cloud/dataproc_metastore/example_dataproc_metastore_hive_partition_sensor.py[原始碼]

hive_partition_sensor = MetastoreHivePartitionSensor(
    task_id="hive_partition_sensor",
    service_id=METASTORE_SERVICE_ID,
    region=REGION,
    table=TABLE_NAME,
    partitions=[PARTITION_1, PARTITION_2],
)

此條目是否有幫助?