**Description**
Currently, we can only pass custom Image name to  **DataprocClusterCreateOperator(),**
as the custom image expires after 60 days, we either need to update the image or we need to pass the expiration token.

Functionality is already available in **gcloud** and **REST**.

`gcloud dataproc clusters test_cluster ......
--image projects/<custom_image_project_id>/global/images/family/<family_name>
.......
`


**Use case / motivation**
The user should be able to pass either Custom Image or Custom Image family name,
so we don't have to update the image up on expiration or use expiration token.


**Are you willing to submit a PR?**
Yes

**Related Issues**
None
airflow/providers/google/cloud/operators/dataproc.py
if self.job_template:
            self.job = self.job_template.build()
            self.dataproc_job_id = self.job["job"]["reference"]["job_id"]
            self.log.info('Submitting %s job %s', self.job_type, self.dataproc_job_id)
            job_object = self.hook.submit_job(
                project_id=self.project_id, job=self.job["job"], location=self.region
            )
            job_id = job_object.reference.job_id
            self.log.info('Job %s submitted successfully.', job_id)
            if not self.asynchronous:
                self.log.info('Waiting for job %s to complete', job_id)
                self.hook.wait_for_job(job_id=job_id, location=self.region, project_id=self.project_id)
                self.log.info('Job %s completed successfully.', job_id)
            return job_id
        else:
            raise AirflowException("Create a job template before")
    def on_kill(self) -> None:
        """
        Callback called when the operator is killed.
        Cancel any running job.
        """
        if self.dataproc_job_id:
            self.hook.cancel_job(
                project_id=self.project_id, job_id=self.dataproc_job_id, location=self.region
            )
class DataprocSubmitPigJobOperator(DataprocJobBaseOperator):