class_docstr: Executes a Spark job on Azure Synapse.
  
  .. see also::
      For more information on how to use this operator, take a look at the guide:
      :ref:`howto/operator:AzureSynapseRunSparkBatchOperator`
  
  :param azure_synapse_conn_id: The connection identifier for connecting to Azure Synapse.
  :param wait_for_termination: Flag to wait on a job run's termination.
  :param spark_pool: The target synapse spark pool used to submit the job
  :param payload: Livy compatible payload which represents the spark job that a user wants to submit
  :param timeout: Time in seconds to wait for a job to reach a terminal status for non-asynchronous
      waits. Used only if ``wait_for_termination`` is True.
  :param check_interval: Time in seconds to check on a job run's status for non-asynchronous waits.
      Used only if ``wait_for_termination`` is True.
code: def on_kill(self) -> None:
      if self.job_id:
          self.hook.cancel_job_run(
              job_id=self.job_id,
          )
          self.log.info(
              "Job run %s has been cancelled successfully.", self.job_id
          )
  
imports: from __future__ import annotations
  from functools import cached_property
  from typing import TYPE_CHECKING, Any, Sequence
  from urllib.parse import urlencode
  from airflow.exceptions import AirflowException
  from airflow.hooks.base import BaseHook
  from airflow.models import BaseOperator, BaseOperatorLink, XCom
  from airflow.providers.microsoft.azure.hooks.synapse import AzureSynapseHook, AzureSynapsePipelineHook, AzureSynapsePipelineRunException, AzureSynapsePipelineRunStatus, AzureSynapseSparkBatchRunStatus
label_desc: Use image node_id 4 for calling the AzureSynapseRunSparkBatchOperator obj's underlying member method code with example usage: obj.on_kill() without return types