Spark 신청서 제출을 위한 매개변수 사용자 지정

적용됩니다: 스파크 엔진 글루텐 가속 스파크 엔진

이 항목에서는 watsonx.data 에서 Spark 애플리케이션을 제출할 때 idempotency 키를 포함하도록 Spark 애플리케이션 페이로드를 구성하고 최대 런타임 제어를 설정하는 방법에 대해 설명합니다.

watsonx.data 에서 Spark 애플리케이션을 제출할 때 다음 기능을 포함하도록 애플리케이션 페이로드를 사용자 지정할 수 있습니다:

무효화 키: 클라이언트-서버 통신 장애가 발생하더라도 신청서 제출이 정확히 한 번만 처리되도록 합니다. 스파크 애플리케이션을 제출하는 경우를 예로 들어 보겠습니다. 클라이언트와 서버 간의 일시적인 네트워크 문제로 인해 요청 시간이 초과되어 확인을 받지 못했습니다. 작업이 성공적으로 제출되었는지 확실하지 않은 경우 제출을 여러 번 다시 시도합니다. 재시도할 때마다 애플리케이션 ID가 새로 생성되므로 동일한 작업의 여러 인스턴스가 실행되어 불필요한 리소스가 소모될 수 있습니다. 이를 방지하려면 애플리케이션 페이로드에 Idempotency 키를 포함하면 됩니다. 이 키는 작업 제출에 대한 고유 식별자 역할을 합니다. 동일한 ID 권한 키를 사용하여 동일한 신청서를 다시 제출하는 경우, 동일한 ID 권한 키를 사용한 여러 요청이 단일 제출로 처리됩니다.

최대 런타임 제어: Spark 애플리케이션의 최대 실행 시간을 정의할 수 있습니다. 시간 제한을 지정하지 않으면 작업은 소요 시간에 관계없이 완료될 때까지 계속 실행됩니다.

페이로드에서 비활성 키 구성하기

중복된 작업 제출을 트리거하지 않으려면 Spark 애플리케이션 페이로드에서 idempotency_key 매개변수를 사용하세요. 이렇게 하면 동일한 키로 반복되는 요청이 단일 요청으로 처리됩니다. Idempotency_key의 길이는 64자를 초과할 수 없습니다.

다음은 페이로드 샘플입니다. 신청서를 제출하는 동안 <userdefined_key> 필드에 idempotency_key 매개변수 값을 지정합니다. cat idempotency_test.json

{
  "application_details": {
    "application": "/opt/ibm/spark/examples/src/main/python/wordcount.py",
    "arguments": [
      "/opt/ibm/spark/examples/src/main/resources/people.txt"
    ],
    "conf": {
      "spark.app.name": "PySpark Application",
      "spark.eventLog.enabled": "true"
    }
  },
  "idempotency_key": "<userdefined_key>"
}

페이로드에서 최대 런타임 시간 구성

애플리케이션을 제출하는 동안 최대 실행 시간을 지정하려면 페이로드의 timeout_in_seconds 파라미터를 사용하세요.

다음은 애플리케이션을 제출하는 동안 시간 초과를 구성하는 방법을 보여주는 샘플 페이로드입니다. 여기서 최대 실행 시간은 10초입니다. 시간 제한을 지정하지 않으면 작업은 소요 시간에 관계없이 완료될 때까지 계속 실행됩니다.

{
    "application_details": {
                "application":"cos://uma-cos-1.mycos/longrunning_with_sleep.py",
    "conf": {
      "spark.app.name": "cosApp",
      "spark.hadoop.fs.cos.mycos.endpoint": "s3.us-south.cloud-object-storage.appdomain.cloud",
      "spark.hadoop.fs.cos.mycos.secret.key": "fbf6bcc31eb2bf85ebd02949edf26cf893a9256bcfa91ebe",
      "spark.hadoop.fs.cos.mycos.access.key": "73976d45c75e4d548381e4da0e98f816"
    }
        },
    "timeout_in_seconds":"60"
}'