Search code examples
javaapache-sparkkubernetesjaryaml

k8s Spark Job JAR params


I am using the below manifest and when applying I get the below error. Is this a correct way to pass JAR arguments?

apiVersion: batch/v1
kind: Job
metadata:
  name: spark-on-eks
spec:
  template:
    spec:
      containers:
        - name: spark
          image: repo:buildversion
          command: [
            "/bin/sh",
            "-c",
            "/opt/spark/bin/spark-submit \
            --master k8s://EKSEndpoint \
            --deploy-mode cluster \
            --name spark-luluapp \
            --class com.ll.jsonclass \
            --conf spark.jars.ivy=/tmp/.ivy \
            --conf spark.kubernetes.container.image=repo:buildversion \
            --conf spark.kubernetes.namespace=spark-pi \
            --conf spark.kubernetes.authenticate.driver.serviceAccountName=spark-sa \
            --conf spark.hadoop.fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem \
            --conf spark.kubernetes.authenticate.executor.serviceAccountName=spark-sa \
            --conf spark.kubernetes.driver.pod.name=spark-job-driver \
            --conf spark.executor.instances=4 \
            local:///opt/spark/examples/App-buildversion-SNAPSHOT.jar \
            [mks,env,reg,"dd.mm.yyyy","true","off","db-comp-results","true","XX","XXX","XXXXX","XXX",$$,###] " 
          ]
      serviceAccountName: spark-pi
      restartPolicy: Never
  backoffLimit: 4

The resulting error:

error converting YAML to JSON: yaml: line 33: did not find expected ',' or ']'

Solution

  • The format of your YAML is wrong. Try this one:

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: spark-on-eks
    spec:
      template:
        spec:
          containers:
            - name: spark
              image: repo:buildversion
              command:  
                - "/bin/sh"
                - "-c"
                - '/opt/spark/bin/spark-submit \
                --master k8s://EKSEndpoint \
                --deploy-mode cluster \
                --name spark-luluapp \
                --class com.ll.jsonclass \
                --conf spark.jars.ivy=/tmp/.ivy \
                --conf spark.kubernetes.container.image=repo:buildversion \
                --conf spark.kubernetes.namespace=spark-pi \
                --conf spark.kubernetes.authenticate.driver.serviceAccountName=spark-sa \
                --conf spark.hadoop.fs.s3a.impl=org.apache.hadoop.fs.s3a.S3AFileSystem \
                --conf spark.kubernetes.authenticate.executor.serviceAccountName=spark-sa \
                --conf spark.kubernetes.driver.pod.name=spark-job-driver \
                --conf spark.executor.instances=4 \
                local:///opt/spark/examples/App-buildversion-SNAPSHOT.jar \
                [mks,env,reg,"dd.mm.yyyy","true","off","db-comp-results","true","XX","XXX","XXXXX","XXX",$$,###] '
    
          serviceAccountName: spark-pi
          restartPolicy: Never
      backoffLimit: 4