Amazon EMR Serverless Operators

Amazon EMR Serverless 是 Amazon EMR 中的一種無伺服器選項,它使資料分析師和工程師可以輕鬆執行開源大資料分析框架,而無需配置、管理和擴充套件叢集或伺服器。您可以獲得 Amazon EMR 的所有特性和優勢,而無需專家來規劃和管理叢集。

先決條件任務

要使用這些 Operator,您必須執行以下幾項操作

Operators

建立 EMR Serverless 應用

您可以使用 EmrServerlessCreateApplicationOperator 建立新的 EMR Serverless 應用。透過將 deferrable=True 作為引數傳遞,此 Operator 可以在可延遲模式下執行。這需要安裝 aiobotocore 模組。

tests/system/amazon/aws/example_emr_serverless.py

emr_serverless_app = EmrServerlessCreateApplicationOperator(
    task_id="create_emr_serverless_task",
    release_label="emr-6.6.0",
    job_type="SPARK",
    config={"name": "new_application"},
)

啟動 EMR Serverless 作業

您可以使用 EmrServerlessStartJobOperator 啟動 EMR Serverless 作業。透過將 deferrable=True 作為引數傳遞,此 Operator 可以在可延遲模式下執行。這需要安裝 aiobotocore 模組。

tests/system/amazon/aws/example_emr_serverless.py

start_job = EmrServerlessStartJobOperator(
    task_id="start_emr_serverless_job",
    application_id=emr_serverless_app_id,
    execution_role_arn=role_arn,
    job_driver=SPARK_JOB_DRIVER,
    configuration_overrides=SPARK_CONFIGURATION_OVERRIDES,
)

開啟應用 UI

此 Operator 還可以透過傳遞 enable_application_ui_links=True 引數來配置生成應用 UI 和 Spark stdout 日誌的一次性連結。作業開始執行後,這些連結將在相關任務的“詳細資訊”部分中提供。如果 enable_application_ui_links=False,則連結將顯示但置灰不可用。

您需要確保擁有以下 IAM 許可權才能生成儀表板連結。

"emr-serverless:GetDashboardForJobRun"

如果為 EMR Serverless 啟用了 Amazon S3 或 Amazon CloudWatch 日誌,則任務日誌和任務詳細資訊中也將提供指向相應控制檯的連結。

停止 EMR Serverless 應用

您可以使用 EmrServerlessStopApplicationOperator 停止 EMR Serverless 應用。透過將 deferrable=True 作為引數傳遞,此 Operator 可以在可延遲模式下執行。這需要安裝 aiobotocore 模組。

tests/system/amazon/aws/example_emr_serverless.py

stop_app = EmrServerlessStopApplicationOperator(
    task_id="stop_application",
    application_id=emr_serverless_app_id,
    force_stop=True,
)

刪除 EMR Serverless 應用

您可以使用 EmrServerlessDeleteApplicationOperator 刪除 EMR Serverless 應用。透過將 deferrable=True 作為引數傳遞,此 Operator 可以在可延遲模式下執行。這需要安裝 aiobotocore 模組。

tests/system/amazon/aws/example_emr_serverless.py

delete_app = EmrServerlessDeleteApplicationOperator(
    task_id="delete_application",
    application_id=emr_serverless_app_id,
)

Sensors

等待 EMR Serverless 作業狀態

要監控 EMR Serverless 作業的狀態,您可以使用 EmrServerlessJobSensor

tests/system/amazon/aws/example_emr_serverless.py

wait_for_job = EmrServerlessJobSensor(
    task_id="wait_for_job",
    application_id=emr_serverless_app_id,
    job_run_id=start_job.output,
    # the default is to wait for job completion, here we just wait for the job to be running.
    target_states={*EmrServerlessHook.JOB_SUCCESS_STATES, "RUNNING"},
)

等待 EMR Serverless 應用狀態

要監控 EMR Serverless 應用的狀態,您可以使用 EmrServerlessApplicationSensor

tests/system/amazon/aws/example_emr_serverless.py

wait_for_app_creation = EmrServerlessApplicationSensor(
    task_id="wait_for_app_creation",
    application_id=emr_serverless_app_id,
)

參考

此條目是否有幫助?