class_docstr: Launches PODS.
docstr: Deletes spark job.
code: def delete_spark_job(self, spark_job_name=None):
      """Deletes spark job."""
      spark_job_name = spark_job_name or self.spark_obj_spec.get(
          "metadata", {}
      ).get("name")
      if not spark_job_name:
          self.log.warning("Spark job not found: %s", spark_job_name)
          return
      try:
          self.custom_obj_api.delete_namespaced_custom_object(
              group=self.api_group,
              version=self.api_version,
              namespace=self.namespace,
              plural=self.plural,
              name=spark_job_name,
          )
      except ApiException as e:
          # If the pod is already deleted
          if e.status != 404:
              raise
  
imports: from __future__ import annotations
  import time
  from copy import deepcopy
  from datetime import datetime
  from functools import cached_property
  import tenacity
  from kubernetes.client import CoreV1Api, CustomObjectsApi, models
  from kubernetes.client.rest import ApiException
  from airflow.exceptions import AirflowException
  from airflow.providers.cncf.kubernetes.resource_convert.configmap import convert_configmap, convert_configmap_to_volume
  from airflow.providers.cncf.kubernetes.resource_convert.env_variable import convert_env_vars
  from airflow.providers.cncf.kubernetes.resource_convert.secret import convert_image_pull_secrets, convert_secret
  from airflow.providers.cncf.kubernetes.utils.pod_manager import PodManager
  from airflow.utils.log.logging_mixin import LoggingMixin
label_desc: Use image node_id 7 for calling the CustomObjectLauncher obj's underlying member method code with example usage: obj.delete_spark_job(spark_job_name) without return types