Source code for airflow.providers.google.cloud.hooks.dataproc
## Licensed to the Apache Software Foundation (ASF) under one# or more contributor license agreements. See the NOTICE file# distributed with this work for additional information# regarding copyright ownership. The ASF licenses this file# to you under the Apache License, Version 2.0 (the# "License"); you may not use this file except in compliance# with the License. You may obtain a copy of the License at## http://www.apache.org/licenses/LICENSE-2.0## Unless required by applicable law or agreed to in writing,# software distributed under the License is distributed on an# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY# KIND, either express or implied. See the License for the# specific language governing permissions and limitations# under the License."""This module contains a Google Cloud Dataproc hook."""from__future__importannotationsimporttimeimportuuidfromcollections.abcimportMutableSequencefromtypingimportTYPE_CHECKING,Any,Sequencefromgoogle.api_core.client_optionsimportClientOptionsfromgoogle.api_core.exceptionsimportServerErrorfromgoogle.api_core.gapic_v1.methodimportDEFAULT,_MethodDefaultfromgoogle.cloud.dataproc_v1import(Batch,BatchControllerAsyncClient,BatchControllerClient,Cluster,ClusterControllerAsyncClient,ClusterControllerClient,Job,JobControllerAsyncClient,JobControllerClient,JobStatus,WorkflowTemplate,WorkflowTemplateServiceAsyncClient,WorkflowTemplateServiceClient,)fromairflow.exceptionsimportAirflowExceptionfromairflow.providers.google.common.constsimportCLIENT_INFOfromairflow.providers.google.common.hooks.base_googleimportGoogleBaseHookfromairflow.versionimportversionasairflow_versionifTYPE_CHECKING:fromgoogle.api_core.operationimportOperationfromgoogle.api_core.operation_asyncimportAsyncOperationfromgoogle.api_core.operations_v1.operations_clientimportOperationsClientfromgoogle.api_core.retryimportRetryfromgoogle.api_core.retry_asyncimportAsyncRetryfromgoogle.protobuf.duration_pb2importDurationfromgoogle.protobuf.field_mask_pb2importFieldMaskfromgoogle.type.interval_pb2importInterval
[docs]classDataprocResourceIsNotReadyError(AirflowException):"""Raise when resource is not ready for create Dataproc cluster."""
[docs]classDataProcJobBuilder:"""A helper class for building Dataproc job."""def__init__(self,project_id:str,task_id:str,cluster_name:str,job_type:str,properties:dict[str,str]|None=None,)->None:name=f"{task_id.replace('.','_')}_{uuid.uuid4()!s:.8}"self.job_type=job_typeself.job:dict[str,Any]={"job":{"reference":{"project_id":project_id,"job_id":name},"placement":{"cluster_name":cluster_name},"labels":{"airflow-version":"v"+airflow_version.replace(".","-").replace("+","-")},job_type:{},}}ifpropertiesisnotNone:self.job["job"][job_type]["properties"]=properties
[docs]defadd_labels(self,labels:dict|None=None)->None:""" Set labels for Dataproc job. :param labels: Labels for the job query. """iflabels:self.job["job"]["labels"].update(labels)
[docs]defadd_variables(self,variables:dict|None=None)->None:""" Set variables for Dataproc job. :param variables: Variables for the job query. """ifvariablesisnotNone:self.job["job"][self.job_type]["script_variables"]=variables
[docs]defadd_args(self,args:list[str]|None=None)->None:""" Set args for Dataproc job. :param args: Args for the job query. """ifargsisnotNone:self.job["job"][self.job_type]["args"]=args
[docs]defadd_query(self,query:str)->None:""" Set query for Dataproc job. :param query: query for the job. """self.job["job"][self.job_type]["query_list"]={"queries":[query]}
[docs]defadd_query_uri(self,query_uri:str)->None:""" Set query uri for Dataproc job. :param query_uri: URI for the job query. """self.job["job"][self.job_type]["query_file_uri"]=query_uri
[docs]defadd_jar_file_uris(self,jars:list[str]|None=None)->None:""" Set jars uris for Dataproc job. :param jars: List of jars URIs """ifjarsisnotNone:self.job["job"][self.job_type]["jar_file_uris"]=jars
[docs]defadd_archive_uris(self,archives:list[str]|None=None)->None:""" Set archives uris for Dataproc job. :param archives: List of archives URIs """ifarchivesisnotNone:self.job["job"][self.job_type]["archive_uris"]=archives
[docs]defadd_file_uris(self,files:list[str]|None=None)->None:""" Set file uris for Dataproc job. :param files: List of files URIs """iffilesisnotNone:self.job["job"][self.job_type]["file_uris"]=files
[docs]defadd_python_file_uris(self,pyfiles:list[str]|None=None)->None:""" Set python file uris for Dataproc job. :param pyfiles: List of python files URIs """ifpyfilesisnotNone:self.job["job"][self.job_type]["python_file_uris"]=pyfiles
[docs]defset_main(self,main_jar:str|None=None,main_class:str|None=None)->None:""" Set Dataproc main class. :param main_jar: URI for the main file. :param main_class: Name of the main class. :raises: ValueError """ifmain_classisnotNoneandmain_jarisnotNone:raiseValueError("Set either main_jar or main_class")ifmain_jar:self.job["job"][self.job_type]["main_jar_file_uri"]=main_jarelse:self.job["job"][self.job_type]["main_class"]=main_class
[docs]defset_python_main(self,main:str)->None:""" Set Dataproc main python file uri. :param main: URI for the python main file. """self.job["job"][self.job_type]["main_python_file_uri"]=main
[docs]defset_job_name(self,name:str)->None:""" Set Dataproc job name. Job name is sanitized, replacing dots by underscores. :param name: Job name. """sanitized_name=f"{name.replace('.','_')}_{uuid.uuid4()!s:.8}"self.job["job"]["reference"]["job_id"]=sanitized_name
[docs]classDataprocHook(GoogleBaseHook):""" Google Cloud Dataproc APIs. All the methods in the hook where project_id is used must be called with keyword arguments rather than positional. """def__init__(self,gcp_conn_id:str="google_cloud_default",impersonation_chain:str|Sequence[str]|None=None,**kwargs,)->None:ifkwargs.get("delegate_to")isnotNone:raiseRuntimeError("The `delegate_to` parameter has been deprecated before and finally removed in this version"" of Google Provider. You MUST convert it to `impersonate_chain`")super().__init__(gcp_conn_id=gcp_conn_id,impersonation_chain=impersonation_chain)
[docs]defget_cluster_client(self,region:str|None=None)->ClusterControllerClient:"""Create a ClusterControllerClient."""client_options=Noneifregionandregion!="global":client_options=ClientOptions(api_endpoint=f"{region}-dataproc.googleapis.com:443")returnClusterControllerClient(credentials=self.get_credentials(),client_info=CLIENT_INFO,client_options=client_options)
[docs]defget_template_client(self,region:str|None=None)->WorkflowTemplateServiceClient:"""Create a WorkflowTemplateServiceClient."""client_options=Noneifregionandregion!="global":client_options=ClientOptions(api_endpoint=f"{region}-dataproc.googleapis.com:443")returnWorkflowTemplateServiceClient(credentials=self.get_credentials(),client_info=CLIENT_INFO,client_options=client_options)
[docs]defget_job_client(self,region:str|None=None)->JobControllerClient:"""Create a JobControllerClient."""client_options=Noneifregionandregion!="global":client_options=ClientOptions(api_endpoint=f"{region}-dataproc.googleapis.com:443")returnJobControllerClient(credentials=self.get_credentials(),client_info=CLIENT_INFO,client_options=client_options)
[docs]defget_batch_client(self,region:str|None=None)->BatchControllerClient:"""Create a BatchControllerClient."""client_options=Noneifregionandregion!="global":client_options=ClientOptions(api_endpoint=f"{region}-dataproc.googleapis.com:443")returnBatchControllerClient(credentials=self.get_credentials(),client_info=CLIENT_INFO,client_options=client_options)
[docs]defget_operations_client(self,region:str|None):"""Create a OperationsClient."""returnself.get_batch_client(region=region).transport.operations_client
[docs]defwait_for_operation(self,operation:Operation,timeout:float|None=None,result_retry:AsyncRetry|_MethodDefault|Retry=DEFAULT,)->Any:"""Wait for a long-lasting operation to complete."""try:returnoperation.result(timeout=timeout,retry=result_retry)exceptException:error=operation.exception(timeout=timeout)ifself.check_error_for_resource_is_not_ready_msg(error.message):raiseDataprocResourceIsNotReadyError(error.message)raiseAirflowException(error)
@GoogleBaseHook.fallback_to_default_project_id
[docs]defcreate_cluster(self,region:str,project_id:str,cluster_name:str,cluster_config:dict|Cluster|None=None,virtual_cluster_config:dict|None=None,labels:dict[str,str]|None=None,request_id:str|None=None,retry:Retry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->Operation:""" Create a cluster in a specified project. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region in which to handle the request. :param cluster_name: Name of the cluster to create. :param labels: Labels that will be assigned to created cluster. :param cluster_config: The cluster config to create. If a dict is provided, it must be of the same form as the protobuf message :class:`~google.cloud.dataproc_v1.types.ClusterConfig`. :param virtual_cluster_config: The virtual cluster config, used when creating a Dataproc cluster that does not directly control the underlying compute resources, for example, when creating a Dataproc-on-GKE cluster with :class:`~google.cloud.dataproc_v1.types.VirtualClusterConfig`. :param request_id: A unique id used to identify the request. If the server receives two *CreateClusterRequest* requests with the same ID, the second request will be ignored, and an operation created for the first one and stored in the backend is returned. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """# Dataproc labels must conform to the following regex:# [a-z]([-a-z0-9]*[a-z0-9])? (current airflow version string follows# semantic versioning spec: x.y.z).labels=labelsor{}labels.update({"airflow-version":"v"+airflow_version.replace(".","-").replace("+","-")})cluster={"project_id":project_id,"cluster_name":cluster_name,}ifvirtual_cluster_configisnotNone:cluster["virtual_cluster_config"]=virtual_cluster_config# type: ignoreifcluster_configisnotNone:cluster["config"]=cluster_config# type: ignorecluster["labels"]=labels# type: ignoreclient=self.get_cluster_client(region=region)result=client.create_cluster(request={"project_id":project_id,"region":region,"cluster":cluster,"request_id":request_id,},retry=retry,timeout=timeout,metadata=metadata,)returnresult
@GoogleBaseHook.fallback_to_default_project_id
[docs]defdelete_cluster(self,region:str,cluster_name:str,project_id:str,cluster_uuid:str|None=None,request_id:str|None=None,retry:Retry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->Operation:""" Delete a cluster in a project. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region in which to handle the request. :param cluster_name: Name of the cluster to delete. :param cluster_uuid: If specified, the RPC should fail if cluster with the UUID does not exist. :param request_id: A unique id used to identify the request. If the server receives two *DeleteClusterRequest* requests with the same ID, the second request will be ignored, and an operation created for the first one and stored in the backend is returned. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """client=self.get_cluster_client(region=region)result=client.delete_cluster(request={"project_id":project_id,"region":region,"cluster_name":cluster_name,"cluster_uuid":cluster_uuid,"request_id":request_id,},retry=retry,timeout=timeout,metadata=metadata,)returnresult
@GoogleBaseHook.fallback_to_default_project_id
[docs]defdiagnose_cluster(self,region:str,cluster_name:str,project_id:str,tarball_gcs_dir:str|None=None,diagnosis_interval:dict|Interval|None=None,jobs:MutableSequence[str]|None=None,yarn_application_ids:MutableSequence[str]|None=None,retry:Retry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->Operation:""" Get cluster diagnostic information. After the operation completes, the response contains the Cloud Storage URI of the diagnostic output report containing a summary of collected diagnostics. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region in which to handle the request. :param cluster_name: Name of the cluster. :param tarball_gcs_dir: The output Cloud Storage directory for the diagnostic tarball. If not specified, a task-specific directory in the cluster's staging bucket will be used. :param diagnosis_interval: Time interval in which diagnosis should be carried out on the cluster. :param jobs: Specifies a list of jobs on which diagnosis is to be performed. Format: `projects/{project}/regions/{region}/jobs/{job}` :param yarn_application_ids: Specifies a list of yarn applications on which diagnosis is to be performed. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """client=self.get_cluster_client(region=region)result=client.diagnose_cluster(request={"project_id":project_id,"region":region,"cluster_name":cluster_name,"tarball_gcs_dir":tarball_gcs_dir,"diagnosis_interval":diagnosis_interval,"jobs":jobs,"yarn_application_ids":yarn_application_ids,},retry=retry,timeout=timeout,metadata=metadata,)returnresult
@GoogleBaseHook.fallback_to_default_project_id
[docs]defget_cluster(self,region:str,cluster_name:str,project_id:str,retry:Retry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->Cluster:""" Get the resource representation for a cluster in a project. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param cluster_name: The cluster name. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """client=self.get_cluster_client(region=region)result=client.get_cluster(request={"project_id":project_id,"region":region,"cluster_name":cluster_name},retry=retry,timeout=timeout,metadata=metadata,)returnresult
@GoogleBaseHook.fallback_to_default_project_id
[docs]deflist_clusters(self,region:str,filter_:str,project_id:str,page_size:int|None=None,retry:Retry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),):""" List all regions/{region}/clusters in a project. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param filter_: To constrain the clusters to. Case-sensitive. :param page_size: The maximum number of resources contained in the underlying API response. If page streaming is performed per-resource, this parameter does not affect the return value. If page streaming is performed per-page, this determines the maximum number of resources in a page. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """client=self.get_cluster_client(region=region)result=client.list_clusters(request={"project_id":project_id,"region":region,"filter":filter_,"page_size":page_size},retry=retry,timeout=timeout,metadata=metadata,)returnresult
@GoogleBaseHook.fallback_to_default_project_id
[docs]defupdate_cluster(self,cluster_name:str,cluster:dict|Cluster,update_mask:dict|FieldMask,project_id:str,region:str,graceful_decommission_timeout:dict|Duration|None=None,request_id:str|None=None,retry:Retry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->Operation:""" Update a cluster in a project. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param cluster_name: The cluster name. :param cluster: Changes to the cluster. If a dict is provided, it must be of the same form as the protobuf message :class:`~google.cloud.dataproc_v1.types.Cluster`. :param update_mask: Specifies the path, relative to ``Cluster``, of the field to update. For example, to change the number of workers in a cluster to 5, this would be specified as ``config.worker_config.num_instances``, and the ``PATCH`` request body would specify the new value: .. code-block:: python {"config": {"workerConfig": {"numInstances": "5"}}} Similarly, to change the number of preemptible workers in a cluster to 5, this would be ``config.secondary_worker_config.num_instances`` and the ``PATCH`` request body would be: .. code-block:: python {"config": {"secondaryWorkerConfig": {"numInstances": "5"}}} If a dict is provided, it must be of the same form as the protobuf message :class:`~google.cloud.dataproc_v1.types.FieldMask`. :param graceful_decommission_timeout: Timeout for graceful YARN decommissioning. Graceful decommissioning allows removing nodes from the cluster without interrupting jobs in progress. Timeout specifies how long to wait for jobs in progress to finish before forcefully removing nodes (and potentially interrupting jobs). Default timeout is 0 (for forceful decommission), and the maximum allowed timeout is one day. Only supported on Dataproc image versions 1.2 and higher. If a dict is provided, it must be of the same form as the protobuf message :class:`~google.cloud.dataproc_v1.types.Duration`. :param request_id: A unique id used to identify the request. If the server receives two *UpdateClusterRequest* requests with the same ID, the second request will be ignored, and an operation created for the first one and stored in the backend is returned. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """ifregionisNone:raiseTypeError("missing 1 required keyword argument: 'region'")client=self.get_cluster_client(region=region)operation=client.update_cluster(request={"project_id":project_id,"region":region,"cluster_name":cluster_name,"cluster":cluster,"update_mask":update_mask,"graceful_decommission_timeout":graceful_decommission_timeout,"request_id":request_id,},retry=retry,timeout=timeout,metadata=metadata,)returnoperation
@GoogleBaseHook.fallback_to_default_project_id
[docs]defstart_cluster(self,region:str,project_id:str,cluster_name:str,cluster_uuid:str|None=None,request_id:str|None=None,retry:Retry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->Operation:""" Start a cluster in a project. :param region: Cloud Dataproc region to handle the request. :param project_id: Google Cloud project ID that the cluster belongs to. :param cluster_name: The cluster name. :param cluster_uuid: The cluster UUID :param request_id: A unique id used to identify the request. If the server receives two *UpdateClusterRequest* requests with the same ID, the second request will be ignored, and an operation created for the first one and stored in the backend is returned. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. :return: An instance of ``google.api_core.operation.Operation`` """client=self.get_cluster_client(region=region)returnclient.start_cluster(request={"project_id":project_id,"region":region,"cluster_name":cluster_name,"cluster_uuid":cluster_uuid,"request_id":request_id,},retry=retry,timeout=timeout,metadata=metadata,)
@GoogleBaseHook.fallback_to_default_project_id
[docs]defstop_cluster(self,region:str,project_id:str,cluster_name:str,cluster_uuid:str|None=None,request_id:str|None=None,retry:Retry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->Operation:""" Start a cluster in a project. :param region: Cloud Dataproc region to handle the request. :param project_id: Google Cloud project ID that the cluster belongs to. :param cluster_name: The cluster name. :param cluster_uuid: The cluster UUID :param request_id: A unique id used to identify the request. If the server receives two *UpdateClusterRequest* requests with the same ID, the second request will be ignored, and an operation created for the first one and stored in the backend is returned. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. :return: An instance of ``google.api_core.operation.Operation`` """client=self.get_cluster_client(region=region)returnclient.stop_cluster(request={"project_id":project_id,"region":region,"cluster_name":cluster_name,"cluster_uuid":cluster_uuid,"request_id":request_id,},retry=retry,timeout=timeout,metadata=metadata,)
@GoogleBaseHook.fallback_to_default_project_id
[docs]defcreate_workflow_template(self,template:dict|WorkflowTemplate,project_id:str,region:str,retry:Retry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->WorkflowTemplate:""" Create a new workflow template. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param template: The Dataproc workflow template to create. If a dict is provided, it must be of the same form as the protobuf message WorkflowTemplate. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """ifregionisNone:raiseTypeError("missing 1 required keyword argument: 'region'")metadata=metadataor()client=self.get_template_client(region)parent=f"projects/{project_id}/regions/{region}"returnclient.create_workflow_template(request={"parent":parent,"template":template},retry=retry,timeout=timeout,metadata=metadata)
@GoogleBaseHook.fallback_to_default_project_id
[docs]definstantiate_workflow_template(self,template_name:str,project_id:str,region:str,version:int|None=None,request_id:str|None=None,parameters:dict[str,str]|None=None,retry:Retry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->Operation:""" Instantiate a template and begins execution. :param template_name: Name of template to instantiate. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param version: Version of workflow template to instantiate. If specified, the workflow will be instantiated only if the current version of the workflow template has the supplied version. This option cannot be used to instantiate a previous version of workflow template. :param request_id: A tag that prevents multiple concurrent workflow instances with the same tag from running. This mitigates risk of concurrent instances started due to retries. :param parameters: Map from parameter names to values that should be used for those parameters. Values may not exceed 100 characters. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """ifregionisNone:raiseTypeError("missing 1 required keyword argument: 'region'")metadata=metadataor()client=self.get_template_client(region)name=f"projects/{project_id}/regions/{region}/workflowTemplates/{template_name}"operation=client.instantiate_workflow_template(request={"name":name,"version":version,"request_id":request_id,"parameters":parameters},retry=retry,timeout=timeout,metadata=metadata,)returnoperation
@GoogleBaseHook.fallback_to_default_project_id
[docs]definstantiate_inline_workflow_template(self,template:dict|WorkflowTemplate,project_id:str,region:str,request_id:str|None=None,retry:Retry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->Operation:""" Instantiate a template and begin execution. :param template: The workflow template to instantiate. If a dict is provided, it must be of the same form as the protobuf message WorkflowTemplate. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param request_id: A tag that prevents multiple concurrent workflow instances with the same tag from running. This mitigates risk of concurrent instances started due to retries. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """ifregionisNone:raiseTypeError("missing 1 required keyword argument: 'region'")metadata=metadataor()client=self.get_template_client(region)parent=f"projects/{project_id}/regions/{region}"operation=client.instantiate_inline_workflow_template(request={"parent":parent,"template":template,"request_id":request_id},retry=retry,timeout=timeout,metadata=metadata,)returnoperation
@GoogleBaseHook.fallback_to_default_project_id
[docs]defwait_for_job(self,job_id:str,project_id:str,region:str,wait_time:int=10,timeout:int|None=None,)->None:""" Poll a job to check if it has finished. :param job_id: Dataproc job ID. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param wait_time: Number of seconds between checks. :param timeout: How many seconds wait for job to be ready. """ifregionisNone:raiseTypeError("missing 1 required keyword argument: 'region'")state=Nonestart=time.monotonic()whilestatenotin(JobStatus.State.ERROR,JobStatus.State.DONE,JobStatus.State.CANCELLED):iftimeoutandstart+timeout<time.monotonic():raiseAirflowException(f"Timeout: dataproc job {job_id} is not ready after {timeout}s")time.sleep(wait_time)try:job=self.get_job(project_id=project_id,region=region,job_id=job_id)state=job.status.stateexceptServerErroraserr:self.log.info("Retrying. Dataproc API returned server error when waiting for job: %s",err)ifstate==JobStatus.State.ERROR:raiseAirflowException(f"Job failed:\n{job}")ifstate==JobStatus.State.CANCELLED:raiseAirflowException(f"Job was cancelled:\n{job}")
@GoogleBaseHook.fallback_to_default_project_id
[docs]defget_job(self,job_id:str,project_id:str,region:str,retry:Retry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->Job:""" Get the resource representation for a job in a project. :param job_id: Dataproc job ID. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """ifregionisNone:raiseTypeError("missing 1 required keyword argument: 'region'")client=self.get_job_client(region=region)job=client.get_job(request={"project_id":project_id,"region":region,"job_id":job_id},retry=retry,timeout=timeout,metadata=metadata,)returnjob
@GoogleBaseHook.fallback_to_default_project_id
[docs]defsubmit_job(self,job:dict|Job,project_id:str,region:str,request_id:str|None=None,retry:Retry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->Job:""" Submit a job to a cluster. :param job: The job resource. If a dict is provided, it must be of the same form as the protobuf message Job. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param request_id: A tag that prevents multiple concurrent workflow instances with the same tag from running. This mitigates risk of concurrent instances started due to retries. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """ifregionisNone:raiseTypeError("missing 1 required keyword argument: 'region'")client=self.get_job_client(region=region)returnclient.submit_job(request={"project_id":project_id,"region":region,"job":job,"request_id":request_id},retry=retry,timeout=timeout,metadata=metadata,)
@GoogleBaseHook.fallback_to_default_project_id
[docs]defcancel_job(self,job_id:str,project_id:str,region:str|None=None,retry:Retry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->Job:""" Start a job cancellation request. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param job_id: The job ID. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """client=self.get_job_client(region=region)job=client.cancel_job(request={"project_id":project_id,"region":region,"job_id":job_id},retry=retry,timeout=timeout,metadata=metadata,)returnjob
@GoogleBaseHook.fallback_to_default_project_id
[docs]defcreate_batch(self,region:str,project_id:str,batch:dict|Batch,batch_id:str|None=None,request_id:str|None=None,retry:Retry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->Operation:""" Create a batch workload. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param batch: The batch to create. :param batch_id: The ID to use for the batch, which will become the final component of the batch's resource name. This value must be of 4-63 characters. Valid characters are ``[a-z][0-9]-``. :param request_id: A unique id used to identify the request. If the server receives two *CreateBatchRequest* requests with the same ID, the second request will be ignored, and an operation created for the first one and stored in the backend is returned. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """client=self.get_batch_client(region)parent=f"projects/{project_id}/regions/{region}"result=client.create_batch(request={"parent":parent,"batch":batch,"batch_id":batch_id,"request_id":request_id,},retry=retry,timeout=timeout,metadata=metadata,)returnresult
@GoogleBaseHook.fallback_to_default_project_id
[docs]defdelete_batch(self,batch_id:str,region:str,project_id:str,retry:Retry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->None:""" Delete the batch workload resource. :param batch_id: The batch ID. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """client=self.get_batch_client(region)name=f"projects/{project_id}/locations/{region}/batches/{batch_id}"client.delete_batch(request={"name":name,},retry=retry,timeout=timeout,metadata=metadata,)
@GoogleBaseHook.fallback_to_default_project_id
[docs]defget_batch(self,batch_id:str,region:str,project_id:str,retry:Retry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->Batch:""" Get the batch workload resource representation. :param batch_id: The batch ID. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """client=self.get_batch_client(region)name=f"projects/{project_id}/locations/{region}/batches/{batch_id}"result=client.get_batch(request={"name":name,},retry=retry,timeout=timeout,metadata=metadata,)returnresult
@GoogleBaseHook.fallback_to_default_project_id
[docs]deflist_batches(self,region:str,project_id:str,page_size:int|None=None,page_token:str|None=None,retry:Retry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),filter:str|None=None,order_by:str|None=None,):""" List batch workloads. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param page_size: The maximum number of batches to return in each response. The service may return fewer than this value. The default page size is 20; the maximum page size is 1000. :param page_token: A page token received from a previous ``ListBatches`` call. Provide this token to retrieve the subsequent page. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. :param filter: Result filters as specified in ListBatchesRequest :param order_by: How to order results as specified in ListBatchesRequest """client=self.get_batch_client(region)parent=f"projects/{project_id}/regions/{region}"result=client.list_batches(request={"parent":parent,"page_size":page_size,"page_token":page_token,"filter":filter,"order_by":order_by,},retry=retry,timeout=timeout,metadata=metadata,)returnresult
@GoogleBaseHook.fallback_to_default_project_id
[docs]defwait_for_batch(self,batch_id:str,region:str,project_id:str,wait_check_interval:int=10,retry:AsyncRetry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->Batch:""" Wait for a batch job to complete. After submission of a batch job, the operator waits for the job to complete. This hook is, however, useful in the case when Airflow is restarted or the task pid is killed for any reason. In this case, the creation would happen again, catching the raised AlreadyExists, and fail to this function for waiting on completion. :param batch_id: The batch ID. :param region: Cloud Dataproc region to handle the request. :param project_id: Google Cloud project ID that the cluster belongs to. :param wait_check_interval: The amount of time to pause between checks for job completion. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """state=Nonefirst_loop:bool=Truewhilestatenotin[Batch.State.CANCELLED,Batch.State.FAILED,Batch.State.SUCCEEDED,Batch.State.STATE_UNSPECIFIED,]:try:ifnotfirst_loop:time.sleep(wait_check_interval)first_loop=Falseself.log.debug("Waiting for batch %s",batch_id)result=self.get_batch(batch_id=batch_id,region=region,project_id=project_id,retry=retry,timeout=timeout,metadata=metadata,)state=result.stateexceptServerErroraserr:self.log.info("Retrying. Dataproc API returned server error when waiting for batch id %s: %s",batch_id,err,)returnresult
[docs]defcheck_error_for_resource_is_not_ready_msg(self,error_msg:str)->bool:"""Check that reason of error is resource is not ready."""key_words=["The resource","is not ready"]returnall([wordinerror_msgforwordinkey_words])
[docs]classDataprocAsyncHook(GoogleBaseHook):""" Asynchronous interaction with Google Cloud Dataproc APIs. All the methods in the hook where project_id is used must be called with keyword arguments rather than positional. """def__init__(self,gcp_conn_id:str="google_cloud_default",impersonation_chain:str|Sequence[str]|None=None,**kwargs,)->None:ifkwargs.get("delegate_to")isnotNone:raiseRuntimeError("The `delegate_to` parameter has been deprecated before and finally removed in this version"" of Google Provider. You MUST convert it to `impersonate_chain`")super().__init__(gcp_conn_id=gcp_conn_id,impersonation_chain=impersonation_chain)self._cached_client:JobControllerAsyncClient|None=None
[docs]defget_cluster_client(self,region:str|None=None)->ClusterControllerAsyncClient:"""Create a ClusterControllerAsyncClient."""client_options=Noneifregionandregion!="global":client_options=ClientOptions(api_endpoint=f"{region}-dataproc.googleapis.com:443")returnClusterControllerAsyncClient(credentials=self.get_credentials(),client_info=CLIENT_INFO,client_options=client_options)
[docs]defget_template_client(self,region:str|None=None)->WorkflowTemplateServiceAsyncClient:"""Create a WorkflowTemplateServiceAsyncClient."""client_options=Noneifregionandregion!="global":client_options=ClientOptions(api_endpoint=f"{region}-dataproc.googleapis.com:443")returnWorkflowTemplateServiceAsyncClient(credentials=self.get_credentials(),client_info=CLIENT_INFO,client_options=client_options)
[docs]defget_job_client(self,region:str|None=None)->JobControllerAsyncClient:"""Create a JobControllerAsyncClient."""ifself._cached_clientisNone:client_options=Noneifregionandregion!="global":client_options=ClientOptions(api_endpoint=f"{region}-dataproc.googleapis.com:443")self._cached_client=JobControllerAsyncClient(credentials=self.get_credentials(),client_info=CLIENT_INFO,client_options=client_options,)returnself._cached_client
[docs]defget_batch_client(self,region:str|None=None)->BatchControllerAsyncClient:"""Create a BatchControllerAsyncClient."""client_options=Noneifregionandregion!="global":client_options=ClientOptions(api_endpoint=f"{region}-dataproc.googleapis.com:443")returnBatchControllerAsyncClient(credentials=self.get_credentials(),client_info=CLIENT_INFO,client_options=client_options)
[docs]defget_operations_client(self,region:str)->OperationsClient:"""Create a OperationsClient."""returnself.get_template_client(region=region).transport.operations_client
@GoogleBaseHook.fallback_to_default_project_id
[docs]asyncdefcreate_cluster(self,region:str,project_id:str,cluster_name:str,cluster_config:dict|Cluster|None=None,virtual_cluster_config:dict|None=None,labels:dict[str,str]|None=None,request_id:str|None=None,retry:AsyncRetry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->AsyncOperation:""" Create a cluster in a project. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region in which to handle the request. :param cluster_name: Name of the cluster to create. :param labels: Labels that will be assigned to created cluster. :param cluster_config: The cluster config to create. If a dict is provided, it must be of the same form as the protobuf message :class:`~google.cloud.dataproc_v1.types.ClusterConfig`. :param virtual_cluster_config: The virtual cluster config, used when creating a Dataproc cluster that does not directly control the underlying compute resources, for example, when creating a Dataproc-on-GKE cluster with :class:`~google.cloud.dataproc_v1.types.VirtualClusterConfig`. :param request_id: A unique id used to identify the request. If the server receives two *CreateClusterRequest* requests with the same ID, the second request will be ignored, and an operation created for the first one and stored in the backend is returned. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """# Dataproc labels must conform to the following regex:# [a-z]([-a-z0-9]*[a-z0-9])? (current airflow version string follows# semantic versioning spec: x.y.z).labels=labelsor{}labels.update({"airflow-version":"v"+airflow_version.replace(".","-").replace("+","-")})cluster={"project_id":project_id,"cluster_name":cluster_name,}ifvirtual_cluster_configisnotNone:cluster["virtual_cluster_config"]=virtual_cluster_config# type: ignoreifcluster_configisnotNone:cluster["config"]=cluster_config# type: ignorecluster["labels"]=labels# type: ignoreclient=self.get_cluster_client(region=region)result=awaitclient.create_cluster(request={"project_id":project_id,"region":region,"cluster":cluster,"request_id":request_id,},retry=retry,timeout=timeout,metadata=metadata,)returnresult
@GoogleBaseHook.fallback_to_default_project_id
[docs]asyncdefdelete_cluster(self,region:str,cluster_name:str,project_id:str,cluster_uuid:str|None=None,request_id:str|None=None,retry:AsyncRetry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->AsyncOperation:""" Delete a cluster in a project. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region in which to handle the request. :param cluster_name: Name of the cluster to delete. :param cluster_uuid: If specified, the RPC should fail if cluster with the UUID does not exist. :param request_id: A unique id used to identify the request. If the server receives two *DeleteClusterRequest* requests with the same ID, the second request will be ignored, and an operation created for the first one and stored in the backend is returned. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """client=self.get_cluster_client(region=region)result=awaitclient.delete_cluster(request={"project_id":project_id,"region":region,"cluster_name":cluster_name,"cluster_uuid":cluster_uuid,"request_id":request_id,},retry=retry,timeout=timeout,metadata=metadata,)returnresult
@GoogleBaseHook.fallback_to_default_project_id
[docs]asyncdefdiagnose_cluster(self,region:str,cluster_name:str,project_id:str,tarball_gcs_dir:str|None=None,diagnosis_interval:dict|Interval|None=None,jobs:MutableSequence[str]|None=None,yarn_application_ids:MutableSequence[str]|None=None,retry:AsyncRetry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->AsyncOperation:""" Get cluster diagnostic information. After the operation completes, the response contains the Cloud Storage URI of the diagnostic output report containing a summary of collected diagnostics. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region in which to handle the request. :param cluster_name: Name of the cluster. :param tarball_gcs_dir: The output Cloud Storage directory for the diagnostic tarball. If not specified, a task-specific directory in the cluster's staging bucket will be used. :param diagnosis_interval: Time interval in which diagnosis should be carried out on the cluster. :param jobs: Specifies a list of jobs on which diagnosis is to be performed. Format: `projects/{project}/regions/{region}/jobs/{job}` :param yarn_application_ids: Specifies a list of yarn applications on which diagnosis is to be performed. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """client=self.get_cluster_client(region=region)result=awaitclient.diagnose_cluster(request={"project_id":project_id,"region":region,"cluster_name":cluster_name,"tarball_gcs_dir":tarball_gcs_dir,"diagnosis_interval":diagnosis_interval,"jobs":jobs,"yarn_application_ids":yarn_application_ids,},retry=retry,timeout=timeout,metadata=metadata,)returnresult
@GoogleBaseHook.fallback_to_default_project_id
[docs]asyncdefget_cluster(self,region:str,cluster_name:str,project_id:str,retry:AsyncRetry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->Cluster:""" Get the resource representation for a cluster in a project. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param cluster_name: The cluster name. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """client=self.get_cluster_client(region=region)result=awaitclient.get_cluster(request={"project_id":project_id,"region":region,"cluster_name":cluster_name},retry=retry,timeout=timeout,metadata=metadata,)returnresult
@GoogleBaseHook.fallback_to_default_project_id
[docs]asyncdeflist_clusters(self,region:str,filter_:str,project_id:str,page_size:int|None=None,retry:AsyncRetry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),):""" List all regions/{region}/clusters in a project. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param filter_: To constrain the clusters to. Case-sensitive. :param page_size: The maximum number of resources contained in the underlying API response. If page streaming is performed per-resource, this parameter does not affect the return value. If page streaming is performed per-page, this determines the maximum number of resources in a page. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """client=self.get_cluster_client(region=region)result=awaitclient.list_clusters(request={"project_id":project_id,"region":region,"filter":filter_,"page_size":page_size},retry=retry,timeout=timeout,metadata=metadata,)returnresult
@GoogleBaseHook.fallback_to_default_project_id
[docs]asyncdefupdate_cluster(self,cluster_name:str,cluster:dict|Cluster,update_mask:dict|FieldMask,project_id:str,region:str,graceful_decommission_timeout:dict|Duration|None=None,request_id:str|None=None,retry:AsyncRetry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->AsyncOperation:""" Update a cluster in a project. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param cluster_name: The cluster name. :param cluster: Changes to the cluster. If a dict is provided, it must be of the same form as the protobuf message :class:`~google.cloud.dataproc_v1.types.Cluster`. :param update_mask: Specifies the path, relative to ``Cluster``, of the field to update. For example, to change the number of workers in a cluster to 5, this would be specified as ``config.worker_config.num_instances``, and the ``PATCH`` request body would specify the new value: .. code-block:: python {"config": {"workerConfig": {"numInstances": "5"}}} Similarly, to change the number of preemptible workers in a cluster to 5, this would be ``config.secondary_worker_config.num_instances`` and the ``PATCH`` request body would be: .. code-block:: python {"config": {"secondaryWorkerConfig": {"numInstances": "5"}}} If a dict is provided, it must be of the same form as the protobuf message :class:`~google.cloud.dataproc_v1.types.FieldMask`. :param graceful_decommission_timeout: Timeout for graceful YARN decommissioning. Graceful decommissioning allows removing nodes from the cluster without interrupting jobs in progress. Timeout specifies how long to wait for jobs in progress to finish before forcefully removing nodes (and potentially interrupting jobs). Default timeout is 0 (for forceful decommission), and the maximum allowed timeout is one day. Only supported on Dataproc image versions 1.2 and higher. If a dict is provided, it must be of the same form as the protobuf message :class:`~google.cloud.dataproc_v1.types.Duration`. :param request_id: A unique id used to identify the request. If the server receives two *UpdateClusterRequest* requests with the same ID, the second request will be ignored, and an operation created for the first one and stored in the backend is returned. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """ifregionisNone:raiseTypeError("missing 1 required keyword argument: 'region'")client=self.get_cluster_client(region=region)operation=awaitclient.update_cluster(request={"project_id":project_id,"region":region,"cluster_name":cluster_name,"cluster":cluster,"update_mask":update_mask,"graceful_decommission_timeout":graceful_decommission_timeout,"request_id":request_id,},retry=retry,timeout=timeout,metadata=metadata,)returnoperation
@GoogleBaseHook.fallback_to_default_project_id
[docs]asyncdefcreate_workflow_template(self,template:dict|WorkflowTemplate,project_id:str,region:str,retry:AsyncRetry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->WorkflowTemplate:""" Create a new workflow template. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param template: The Dataproc workflow template to create. If a dict is provided, it must be of the same form as the protobuf message WorkflowTemplate. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """ifregionisNone:raiseTypeError("missing 1 required keyword argument: 'region'")metadata=metadataor()client=self.get_template_client(region)parent=f"projects/{project_id}/regions/{region}"returnawaitclient.create_workflow_template(request={"parent":parent,"template":template},retry=retry,timeout=timeout,metadata=metadata)
@GoogleBaseHook.fallback_to_default_project_id
[docs]asyncdefinstantiate_workflow_template(self,template_name:str,project_id:str,region:str,version:int|None=None,request_id:str|None=None,parameters:dict[str,str]|None=None,retry:AsyncRetry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->AsyncOperation:""" Instantiate a template and begins execution. :param template_name: Name of template to instantiate. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param version: Version of workflow template to instantiate. If specified, the workflow will be instantiated only if the current version of the workflow template has the supplied version. This option cannot be used to instantiate a previous version of workflow template. :param request_id: A tag that prevents multiple concurrent workflow instances with the same tag from running. This mitigates risk of concurrent instances started due to retries. :param parameters: Map from parameter names to values that should be used for those parameters. Values may not exceed 100 characters. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """ifregionisNone:raiseTypeError("missing 1 required keyword argument: 'region'")metadata=metadataor()client=self.get_template_client(region)name=f"projects/{project_id}/regions/{region}/workflowTemplates/{template_name}"operation=awaitclient.instantiate_workflow_template(request={"name":name,"version":version,"request_id":request_id,"parameters":parameters},retry=retry,timeout=timeout,metadata=metadata,)returnoperation
@GoogleBaseHook.fallback_to_default_project_id
[docs]asyncdefinstantiate_inline_workflow_template(self,template:dict|WorkflowTemplate,project_id:str,region:str,request_id:str|None=None,retry:AsyncRetry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->AsyncOperation:""" Instantiate a template and begin execution. :param template: The workflow template to instantiate. If a dict is provided, it must be of the same form as the protobuf message WorkflowTemplate. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param request_id: A tag that prevents multiple concurrent workflow instances with the same tag from running. This mitigates risk of concurrent instances started due to retries. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """ifregionisNone:raiseTypeError("missing 1 required keyword argument: 'region'")metadata=metadataor()client=self.get_template_client(region)parent=f"projects/{project_id}/regions/{region}"operation=awaitclient.instantiate_inline_workflow_template(request={"parent":parent,"template":template,"request_id":request_id},retry=retry,timeout=timeout,metadata=metadata,)returnoperation
[docs]asyncdefget_job(self,job_id:str,project_id:str,region:str,retry:AsyncRetry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->Job:""" Get the resource representation for a job in a project. :param job_id: Dataproc job ID. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """ifregionisNone:raiseTypeError("missing 1 required keyword argument: 'region'")client=self.get_job_client(region=region)job=awaitclient.get_job(request={"project_id":project_id,"region":region,"job_id":job_id},retry=retry,timeout=timeout,metadata=metadata,)returnjob
@GoogleBaseHook.fallback_to_default_project_id
[docs]asyncdefsubmit_job(self,job:dict|Job,project_id:str,region:str,request_id:str|None=None,retry:AsyncRetry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->Job:""" Submit a job to a cluster. :param job: The job resource. If a dict is provided, it must be of the same form as the protobuf message Job. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param request_id: A tag that prevents multiple concurrent workflow instances with the same tag from running. This mitigates risk of concurrent instances started due to retries. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """ifregionisNone:raiseTypeError("missing 1 required keyword argument: 'region'")client=self.get_job_client(region=region)returnawaitclient.submit_job(request={"project_id":project_id,"region":region,"job":job,"request_id":request_id},retry=retry,timeout=timeout,metadata=metadata,)
@GoogleBaseHook.fallback_to_default_project_id
[docs]asyncdefcancel_job(self,job_id:str,project_id:str,region:str|None=None,retry:AsyncRetry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->Job:""" Start a job cancellation request. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param job_id: The job ID. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """client=self.get_job_client(region=region)job=awaitclient.cancel_job(request={"project_id":project_id,"region":region,"job_id":job_id},retry=retry,timeout=timeout,metadata=metadata,)returnjob
@GoogleBaseHook.fallback_to_default_project_id
[docs]asyncdefcreate_batch(self,region:str,project_id:str,batch:dict|Batch,batch_id:str|None=None,request_id:str|None=None,retry:AsyncRetry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->AsyncOperation:""" Create a batch workload. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param batch: The batch to create. :param batch_id: The ID to use for the batch, which will become the final component of the batch's resource name. This value must be of 4-63 characters. Valid characters are ``[a-z][0-9]-``. :param request_id: A unique id used to identify the request. If the server receives two *CreateBatchRequest* requests with the same ID, the second request will be ignored, and an operation created for the first one and stored in the backend is returned. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """client=self.get_batch_client(region)parent=f"projects/{project_id}/regions/{region}"result=awaitclient.create_batch(request={"parent":parent,"batch":batch,"batch_id":batch_id,"request_id":request_id,},retry=retry,timeout=timeout,metadata=metadata,)returnresult
@GoogleBaseHook.fallback_to_default_project_id
[docs]asyncdefdelete_batch(self,batch_id:str,region:str,project_id:str,retry:AsyncRetry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->None:""" Delete the batch workload resource. :param batch_id: The batch ID. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """client=self.get_batch_client(region)name=f"projects/{project_id}/locations/{region}/batches/{batch_id}"awaitclient.delete_batch(request={"name":name,},retry=retry,timeout=timeout,metadata=metadata,)
@GoogleBaseHook.fallback_to_default_project_id
[docs]asyncdefget_batch(self,batch_id:str,region:str,project_id:str,retry:AsyncRetry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),)->Batch:""" Get the batch workload resource representation. :param batch_id: The batch ID. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. """client=self.get_batch_client(region)name=f"projects/{project_id}/locations/{region}/batches/{batch_id}"result=awaitclient.get_batch(request={"name":name,},retry=retry,timeout=timeout,metadata=metadata,)returnresult
@GoogleBaseHook.fallback_to_default_project_id
[docs]asyncdeflist_batches(self,region:str,project_id:str,page_size:int|None=None,page_token:str|None=None,retry:AsyncRetry|_MethodDefault=DEFAULT,timeout:float|None=None,metadata:Sequence[tuple[str,str]]=(),filter:str|None=None,order_by:str|None=None,):""" List batch workloads. :param project_id: Google Cloud project ID that the cluster belongs to. :param region: Cloud Dataproc region to handle the request. :param page_size: The maximum number of batches to return in each response. The service may return fewer than this value. The default page size is 20; the maximum page size is 1000. :param page_token: A page token received from a previous ``ListBatches`` call. Provide this token to retrieve the subsequent page. :param retry: A retry object used to retry requests. If *None*, requests will not be retried. :param timeout: The amount of time, in seconds, to wait for the request to complete. If *retry* is specified, the timeout applies to each individual attempt. :param metadata: Additional metadata that is provided to the method. :param filter: Result filters as specified in ListBatchesRequest :param order_by: How to order results as specified in ListBatchesRequest """client=self.get_batch_client(region)parent=f"projects/{project_id}/regions/{region}"result=awaitclient.list_batches(request={"parent":parent,"page_size":page_size,"page_token":page_token,"filter":filter,"order_by":order_by,},retry=retry,timeout=timeout,metadata=metadata,)returnresult