<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="dataproc_v1beta2.html">Cloud Dataproc API</a> . <a href="dataproc_v1beta2.projects.html">projects</a> . <a href="dataproc_v1beta2.projects.regions.html">regions</a> . <a href="dataproc_v1beta2.projects.regions.jobs.html">jobs</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#cancel">cancel(projectId, region, jobId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Starts a job cancellation request. To access the job resource after cancellation, call regions/{region}/jobs.list (https://cloud.google.com/dataproc/docs/reference/rest/v1beta2/projects.regions.jobs/list) or regions/{region}/jobs.get (https://cloud.google.com/dataproc/docs/reference/rest/v1beta2/projects.regions.jobs/get).</p>
<p class="toc_element">
  <code><a href="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#delete">delete(projectId, region, jobId, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the job from the project. If the job is active, the delete fails, and the response returns FAILED_PRECONDITION.</p>
<p class="toc_element">
  <code><a href="#get">get(projectId, region, jobId, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the resource representation for a job in a project.</p>
<p class="toc_element">
  <code><a href="#getIamPolicy">getIamPolicy(resource, options_requestedPolicyVersion=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.</p>
<p class="toc_element">
  <code><a href="#list">list(projectId, region, clusterName=None, filter=None, jobStateMatcher=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists regions/{region}/jobs in a project.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(projectId, region, jobId, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates a job in a project.</p>
<p class="toc_element">
  <code><a href="#setIamPolicy">setIamPolicy(resource, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.</p>
<p class="toc_element">
  <code><a href="#submit">submit(projectId, region, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Submits a job to a cluster.</p>
<p class="toc_element">
  <code><a href="#submitAsOperation">submitAsOperation(projectId, region, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Submits job to a cluster.</p>
<p class="toc_element">
  <code><a href="#testIamPermissions">testIamPermissions(resource, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a NOT_FOUND error.Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may "fail open" without warning.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="cancel">cancel(projectId, region, jobId, body=None, x__xgafv=None)</code>
  <pre>Starts a job cancellation request. To access the job resource after cancellation, call regions/{region}/jobs.list (https://cloud.google.com/dataproc/docs/reference/rest/v1beta2/projects.regions.jobs/list) or regions/{region}/jobs.get (https://cloud.google.com/dataproc/docs/reference/rest/v1beta2/projects.regions.jobs/get).

Args:
  projectId: string, Required. The ID of the Google Cloud Platform project that the job belongs to. (required)
  region: string, Required. The Dataproc region in which to handle the request. (required)
  jobId: string, Required. The job ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # A request to cancel a job.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A Dataproc job resource.
  &quot;done&quot;: True or False, # Output only. Indicates whether the job is completed. If the value is false, the job is still in progress. If true, the job is completed, and status.state field will indicate if it was successful, failed, or cancelled.
  &quot;driverControlFilesUri&quot;: &quot;A String&quot;, # Output only. If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as driver_output_uri.
  &quot;driverOutputResourceUri&quot;: &quot;A String&quot;, # Output only. A URI pointing to the location of the stdout of the job&#x27;s driver program.
  &quot;hadoopJob&quot;: { # A Dataproc job for running Apache Hadoop MapReduce (https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) jobs on Apache Hadoop YARN (https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/YARN.html). # Optional. Job is a Hadoop job.
    &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted in the working directory of Hadoop drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, or .zip.
      &quot;A String&quot;,
    ],
    &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as -libjars or -Dfoo=bar, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
      &quot;A String&quot;,
    ],
    &quot;fileUris&quot;: [ # Optional. HCFS (Hadoop Compatible Filesystem) URIs of files to be copied to the working directory of Hadoop drivers and distributed tasks. Useful for naively parallel tasks.
      &quot;A String&quot;,
    ],
    &quot;jarFileUris&quot;: [ # Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;mainClass&quot;: &quot;A String&quot;, # The name of the driver&#x27;s main class. The jar file containing the class must be in the default CLASSPATH or specified in jar_file_uris.
    &quot;mainJarFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the jar file containing the main class. Examples: &#x27;gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar&#x27; &#x27;hdfs:/tmp/test-samples/custom-wordcount.jar&#x27; &#x27;file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar&#x27;
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;hiveJob&quot;: { # A Dataproc job for running Apache Hive (https://hive.apache.org/) queries on YARN. # Optional. Job is a Hive job.
    &quot;continueOnFailure&quot;: True or False, # Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.
    &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATH of the Hive server and Hadoop MapReduce (MR) tasks. Can contain Hive SerDes and UDFs.
      &quot;A String&quot;,
    ],
    &quot;properties&quot;: { # Optional. A mapping of property names and values, used to configure Hive. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/hive/conf/hive-site.xml, and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains Hive queries.
    &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
      &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
        &quot;A String&quot;,
      ],
    },
    &quot;scriptVariables&quot;: { # Optional. Mapping of query variable names to values (equivalent to the Hive command: SET name=&quot;value&quot;;).
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;jobUuid&quot;: &quot;A String&quot;, # Output only. A UUID that uniquely identifies a job within the project over time. This is in contrast to a user-settable reference.job_id that may be reused over time.
  &quot;labels&quot;: { # Optional. The labels to associate with this job. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a job.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;pigJob&quot;: { # A Dataproc job for running Apache Pig (https://pig.apache.org/) queries on YARN. # Optional. Job is a Pig job.
    &quot;continueOnFailure&quot;: True or False, # Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.
    &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/pig/conf/pig.properties, and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains the Pig queries.
    &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
      &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
        &quot;A String&quot;,
      ],
    },
    &quot;scriptVariables&quot;: { # Optional. Mapping of query variable names to values (equivalent to the Pig command: name=[value]).
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;placement&quot;: { # Dataproc job config. # Required. Job information, including how, when, and where to run the job.
    &quot;clusterName&quot;: &quot;A String&quot;, # Required. The name of the cluster where the job will be submitted.
    &quot;clusterUuid&quot;: &quot;A String&quot;, # Output only. A cluster UUID generated by the Dataproc service when the job is submitted.
  },
  &quot;prestoJob&quot;: { # A Dataproc job for running Presto (https://prestosql.io/) queries. IMPORTANT: The Dataproc Presto Optional Component (https://cloud.google.com/dataproc/docs/concepts/components/presto) must be enabled when the cluster is created to submit a Presto job to the cluster. # Optional. Job is a Presto job.
    &quot;clientTags&quot;: [ # Optional. Presto client tags to attach to this query
      &quot;A String&quot;,
    ],
    &quot;continueOnFailure&quot;: True or False, # Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;outputFormat&quot;: &quot;A String&quot;, # Optional. The format in which query output will be displayed. See the Presto documentation for supported output formats
    &quot;properties&quot;: { # Optional. A mapping of property names to values. Used to set Presto session properties (https://prestodb.io/docs/current/sql/set-session.html) Equivalent to using the --session flag in the Presto CLI
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains SQL queries.
    &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
      &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
        &quot;A String&quot;,
      ],
    },
  },
  &quot;pysparkJob&quot;: { # A Dataproc job for running Apache PySpark (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN. # Optional. Job is a PySpark job.
    &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
      &quot;A String&quot;,
    ],
    &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
      &quot;A String&quot;,
    ],
    &quot;fileUris&quot;: [ # Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.
      &quot;A String&quot;,
    ],
    &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;mainPythonFileUri&quot;: &quot;A String&quot;, # Required. The HCFS URI of the main Python file to use as the driver. Must be a .py file.
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;pythonFileUris&quot;: [ # Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip.
      &quot;A String&quot;,
    ],
  },
  &quot;reference&quot;: { # Encapsulates the full scoping used to reference a job. # Optional. The fully qualified reference to the job, which can be used to obtain the equivalent REST path of the job resource. If this property is not specified when a job is created, the server generates a job_id.
    &quot;jobId&quot;: &quot;A String&quot;, # Optional. The job ID, which must be unique within the project. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 100 characters.If not specified by the caller, the job ID will be provided by the server.
    &quot;projectId&quot;: &quot;A String&quot;, # Optional. The ID of the Google Cloud Platform project that the job belongs to. If specified, must match the request project ID.
  },
  &quot;scheduling&quot;: { # Job scheduling options. # Optional. Job scheduling configuration.
    &quot;maxFailuresPerHour&quot;: 42, # Optional. Maximum number of times per hour a driver may be restarted as a result of driver terminating with non-zero code before job is reported failed.A job may be reported as thrashing if driver exits with non-zero code 4 times within 10 minute window.Maximum value is 10.
    &quot;maxFailuresTotal&quot;: 42, # Optional. Maximum number of times in total a driver may be restarted as a result of driver exiting with non-zero code before job is reported failed. Maximum value is 240
  },
  &quot;sparkJob&quot;: { # A Dataproc job for running Apache Spark (http://spark.apache.org/) applications on YARN. The specification of the main method to call to drive the job. Specify either the jar file that contains the main class or the main class name. To pass both a main jar and a main class in that jar, add the jar to CommonJob.jar_file_uris, and then specify the main class name in main_class. # Optional. Job is a Spark job.
    &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
      &quot;A String&quot;,
    ],
    &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
      &quot;A String&quot;,
    ],
    &quot;fileUris&quot;: [ # Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.
      &quot;A String&quot;,
    ],
    &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;mainClass&quot;: &quot;A String&quot;, # The name of the driver&#x27;s main class. The jar file that contains the class must be in the default CLASSPATH or specified in jar_file_uris.
    &quot;mainJarFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the jar file that contains the main class.
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Spark. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;sparkRJob&quot;: { # A Dataproc job for running Apache SparkR (https://spark.apache.org/docs/latest/sparkr.html) applications on YARN. # Optional. Job is a SparkR job.
    &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
      &quot;A String&quot;,
    ],
    &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
      &quot;A String&quot;,
    ],
    &quot;fileUris&quot;: [ # Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;mainRFileUri&quot;: &quot;A String&quot;, # Required. The HCFS URI of the main R file to use as the driver. Must be a .R file.
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure SparkR. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;sparkSqlJob&quot;: { # A Dataproc job for running Apache Spark SQL (http://spark.apache.org/sql/) queries. # Optional. Job is a SparkSql job.
    &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Spark SQL&#x27;s SparkConf. Properties that conflict with values set by the Dataproc API may be overwritten.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains SQL queries.
    &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
      &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
        &quot;A String&quot;,
      ],
    },
    &quot;scriptVariables&quot;: { # Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name=&quot;value&quot;;).
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;status&quot;: { # Dataproc job status. # Output only. The job status. Additional application-specific status information may be contained in the type_job and yarn_applications fields.
    &quot;details&quot;: &quot;A String&quot;, # Output only. Optional Job state details, such as an error description if the state is ERROR.
    &quot;state&quot;: &quot;A String&quot;, # Output only. A state message specifying the overall job state.
    &quot;stateStartTime&quot;: &quot;A String&quot;, # Output only. The time when this state was entered.
    &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information, which includes status reported by the agent.
  },
  &quot;statusHistory&quot;: [ # Output only. The previous job status.
    { # Dataproc job status.
      &quot;details&quot;: &quot;A String&quot;, # Output only. Optional Job state details, such as an error description if the state is ERROR.
      &quot;state&quot;: &quot;A String&quot;, # Output only. A state message specifying the overall job state.
      &quot;stateStartTime&quot;: &quot;A String&quot;, # Output only. The time when this state was entered.
      &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information, which includes status reported by the agent.
    },
  ],
  &quot;submittedBy&quot;: &quot;A String&quot;, # Output only. The email address of the user submitting the job. For jobs submitted on the cluster, the address is username@hostname.
  &quot;yarnApplications&quot;: [ # Output only. The collection of YARN applications spun up by this job.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
    { # A YARN application created by a job. Application information is a subset of org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The application name.
      &quot;progress&quot;: 3.14, # Output only. The numerical progress of the application, from 1 to 100.
      &quot;state&quot;: &quot;A String&quot;, # Output only. The application state.
      &quot;trackingUrl&quot;: &quot;A String&quot;, # Output only. The HTTP URL of the ApplicationMaster, HistoryServer, or TimelineServer that provides application-specific information. The URL uses the internal hostname, and requires a proxy server for resolution and, possibly, access.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(projectId, region, jobId, x__xgafv=None)</code>
  <pre>Deletes the job from the project. If the job is active, the delete fails, and the response returns FAILED_PRECONDITION.

Args:
  projectId: string, Required. The ID of the Google Cloud Platform project that the job belongs to. (required)
  region: string, Required. The Dataproc region in which to handle the request. (required)
  jobId: string, Required. The job ID. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for Empty is empty JSON object {}.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(projectId, region, jobId, x__xgafv=None)</code>
  <pre>Gets the resource representation for a job in a project.

Args:
  projectId: string, Required. The ID of the Google Cloud Platform project that the job belongs to. (required)
  region: string, Required. The Dataproc region in which to handle the request. (required)
  jobId: string, Required. The job ID. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A Dataproc job resource.
  &quot;done&quot;: True or False, # Output only. Indicates whether the job is completed. If the value is false, the job is still in progress. If true, the job is completed, and status.state field will indicate if it was successful, failed, or cancelled.
  &quot;driverControlFilesUri&quot;: &quot;A String&quot;, # Output only. If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as driver_output_uri.
  &quot;driverOutputResourceUri&quot;: &quot;A String&quot;, # Output only. A URI pointing to the location of the stdout of the job&#x27;s driver program.
  &quot;hadoopJob&quot;: { # A Dataproc job for running Apache Hadoop MapReduce (https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) jobs on Apache Hadoop YARN (https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/YARN.html). # Optional. Job is a Hadoop job.
    &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted in the working directory of Hadoop drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, or .zip.
      &quot;A String&quot;,
    ],
    &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as -libjars or -Dfoo=bar, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
      &quot;A String&quot;,
    ],
    &quot;fileUris&quot;: [ # Optional. HCFS (Hadoop Compatible Filesystem) URIs of files to be copied to the working directory of Hadoop drivers and distributed tasks. Useful for naively parallel tasks.
      &quot;A String&quot;,
    ],
    &quot;jarFileUris&quot;: [ # Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;mainClass&quot;: &quot;A String&quot;, # The name of the driver&#x27;s main class. The jar file containing the class must be in the default CLASSPATH or specified in jar_file_uris.
    &quot;mainJarFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the jar file containing the main class. Examples: &#x27;gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar&#x27; &#x27;hdfs:/tmp/test-samples/custom-wordcount.jar&#x27; &#x27;file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar&#x27;
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;hiveJob&quot;: { # A Dataproc job for running Apache Hive (https://hive.apache.org/) queries on YARN. # Optional. Job is a Hive job.
    &quot;continueOnFailure&quot;: True or False, # Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.
    &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATH of the Hive server and Hadoop MapReduce (MR) tasks. Can contain Hive SerDes and UDFs.
      &quot;A String&quot;,
    ],
    &quot;properties&quot;: { # Optional. A mapping of property names and values, used to configure Hive. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/hive/conf/hive-site.xml, and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains Hive queries.
    &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
      &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
        &quot;A String&quot;,
      ],
    },
    &quot;scriptVariables&quot;: { # Optional. Mapping of query variable names to values (equivalent to the Hive command: SET name=&quot;value&quot;;).
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;jobUuid&quot;: &quot;A String&quot;, # Output only. A UUID that uniquely identifies a job within the project over time. This is in contrast to a user-settable reference.job_id that may be reused over time.
  &quot;labels&quot;: { # Optional. The labels to associate with this job. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a job.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;pigJob&quot;: { # A Dataproc job for running Apache Pig (https://pig.apache.org/) queries on YARN. # Optional. Job is a Pig job.
    &quot;continueOnFailure&quot;: True or False, # Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.
    &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/pig/conf/pig.properties, and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains the Pig queries.
    &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
      &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
        &quot;A String&quot;,
      ],
    },
    &quot;scriptVariables&quot;: { # Optional. Mapping of query variable names to values (equivalent to the Pig command: name=[value]).
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;placement&quot;: { # Dataproc job config. # Required. Job information, including how, when, and where to run the job.
    &quot;clusterName&quot;: &quot;A String&quot;, # Required. The name of the cluster where the job will be submitted.
    &quot;clusterUuid&quot;: &quot;A String&quot;, # Output only. A cluster UUID generated by the Dataproc service when the job is submitted.
  },
  &quot;prestoJob&quot;: { # A Dataproc job for running Presto (https://prestosql.io/) queries. IMPORTANT: The Dataproc Presto Optional Component (https://cloud.google.com/dataproc/docs/concepts/components/presto) must be enabled when the cluster is created to submit a Presto job to the cluster. # Optional. Job is a Presto job.
    &quot;clientTags&quot;: [ # Optional. Presto client tags to attach to this query
      &quot;A String&quot;,
    ],
    &quot;continueOnFailure&quot;: True or False, # Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;outputFormat&quot;: &quot;A String&quot;, # Optional. The format in which query output will be displayed. See the Presto documentation for supported output formats
    &quot;properties&quot;: { # Optional. A mapping of property names to values. Used to set Presto session properties (https://prestodb.io/docs/current/sql/set-session.html) Equivalent to using the --session flag in the Presto CLI
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains SQL queries.
    &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
      &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
        &quot;A String&quot;,
      ],
    },
  },
  &quot;pysparkJob&quot;: { # A Dataproc job for running Apache PySpark (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN. # Optional. Job is a PySpark job.
    &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
      &quot;A String&quot;,
    ],
    &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
      &quot;A String&quot;,
    ],
    &quot;fileUris&quot;: [ # Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.
      &quot;A String&quot;,
    ],
    &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;mainPythonFileUri&quot;: &quot;A String&quot;, # Required. The HCFS URI of the main Python file to use as the driver. Must be a .py file.
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;pythonFileUris&quot;: [ # Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip.
      &quot;A String&quot;,
    ],
  },
  &quot;reference&quot;: { # Encapsulates the full scoping used to reference a job. # Optional. The fully qualified reference to the job, which can be used to obtain the equivalent REST path of the job resource. If this property is not specified when a job is created, the server generates a job_id.
    &quot;jobId&quot;: &quot;A String&quot;, # Optional. The job ID, which must be unique within the project. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 100 characters.If not specified by the caller, the job ID will be provided by the server.
    &quot;projectId&quot;: &quot;A String&quot;, # Optional. The ID of the Google Cloud Platform project that the job belongs to. If specified, must match the request project ID.
  },
  &quot;scheduling&quot;: { # Job scheduling options. # Optional. Job scheduling configuration.
    &quot;maxFailuresPerHour&quot;: 42, # Optional. Maximum number of times per hour a driver may be restarted as a result of driver terminating with non-zero code before job is reported failed.A job may be reported as thrashing if driver exits with non-zero code 4 times within 10 minute window.Maximum value is 10.
    &quot;maxFailuresTotal&quot;: 42, # Optional. Maximum number of times in total a driver may be restarted as a result of driver exiting with non-zero code before job is reported failed. Maximum value is 240
  },
  &quot;sparkJob&quot;: { # A Dataproc job for running Apache Spark (http://spark.apache.org/) applications on YARN. The specification of the main method to call to drive the job. Specify either the jar file that contains the main class or the main class name. To pass both a main jar and a main class in that jar, add the jar to CommonJob.jar_file_uris, and then specify the main class name in main_class. # Optional. Job is a Spark job.
    &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
      &quot;A String&quot;,
    ],
    &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
      &quot;A String&quot;,
    ],
    &quot;fileUris&quot;: [ # Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.
      &quot;A String&quot;,
    ],
    &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;mainClass&quot;: &quot;A String&quot;, # The name of the driver&#x27;s main class. The jar file that contains the class must be in the default CLASSPATH or specified in jar_file_uris.
    &quot;mainJarFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the jar file that contains the main class.
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Spark. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;sparkRJob&quot;: { # A Dataproc job for running Apache SparkR (https://spark.apache.org/docs/latest/sparkr.html) applications on YARN. # Optional. Job is a SparkR job.
    &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
      &quot;A String&quot;,
    ],
    &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
      &quot;A String&quot;,
    ],
    &quot;fileUris&quot;: [ # Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;mainRFileUri&quot;: &quot;A String&quot;, # Required. The HCFS URI of the main R file to use as the driver. Must be a .R file.
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure SparkR. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;sparkSqlJob&quot;: { # A Dataproc job for running Apache Spark SQL (http://spark.apache.org/sql/) queries. # Optional. Job is a SparkSql job.
    &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Spark SQL&#x27;s SparkConf. Properties that conflict with values set by the Dataproc API may be overwritten.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains SQL queries.
    &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
      &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
        &quot;A String&quot;,
      ],
    },
    &quot;scriptVariables&quot;: { # Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name=&quot;value&quot;;).
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;status&quot;: { # Dataproc job status. # Output only. The job status. Additional application-specific status information may be contained in the type_job and yarn_applications fields.
    &quot;details&quot;: &quot;A String&quot;, # Output only. Optional Job state details, such as an error description if the state is ERROR.
    &quot;state&quot;: &quot;A String&quot;, # Output only. A state message specifying the overall job state.
    &quot;stateStartTime&quot;: &quot;A String&quot;, # Output only. The time when this state was entered.
    &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information, which includes status reported by the agent.
  },
  &quot;statusHistory&quot;: [ # Output only. The previous job status.
    { # Dataproc job status.
      &quot;details&quot;: &quot;A String&quot;, # Output only. Optional Job state details, such as an error description if the state is ERROR.
      &quot;state&quot;: &quot;A String&quot;, # Output only. A state message specifying the overall job state.
      &quot;stateStartTime&quot;: &quot;A String&quot;, # Output only. The time when this state was entered.
      &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information, which includes status reported by the agent.
    },
  ],
  &quot;submittedBy&quot;: &quot;A String&quot;, # Output only. The email address of the user submitting the job. For jobs submitted on the cluster, the address is username@hostname.
  &quot;yarnApplications&quot;: [ # Output only. The collection of YARN applications spun up by this job.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
    { # A YARN application created by a job. Application information is a subset of org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The application name.
      &quot;progress&quot;: 3.14, # Output only. The numerical progress of the application, from 1 to 100.
      &quot;state&quot;: &quot;A String&quot;, # Output only. The application state.
      &quot;trackingUrl&quot;: &quot;A String&quot;, # Output only. The HTTP URL of the ApplicationMaster, HistoryServer, or TimelineServer that provides application-specific information. The URL uses the internal hostname, and requires a proxy server for resolution and, possibly, access.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="getIamPolicy">getIamPolicy(resource, options_requestedPolicyVersion=None, x__xgafv=None)</code>
  <pre>Gets the access control policy for a resource. Returns an empty policy if the resource exists and does not have a policy set.

Args:
  resource: string, REQUIRED: The resource for which the policy is being requested. See the operation documentation for the appropriate value for this field. (required)
  options_requestedPolicyVersion: integer, Optional. The policy format version to be returned.Valid values are 0, 1, and 3. Requests specifying an invalid value will be rejected.Requests for policies with any conditional bindings must specify version 3. Policies without any conditional bindings may specify any valid value or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources.A Policy is a collection of bindings. A binding binds one or more members to a single role. Members can be user accounts, service accounts, Google groups, and domains (such as G Suite). A role is a named list of permissions; each role can be an IAM predefined role or a user-created custom role.For some types of Google Cloud resources, a binding can also specify a condition, which is a logical expression that allows access to a resource only if the expression evaluates to true. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).JSON example: { &quot;bindings&quot;: [ { &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;, &quot;members&quot;: [ &quot;user:mike@example.com&quot;, &quot;group:admins@example.com&quot;, &quot;domain:google.com&quot;, &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot; ] }, { &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;, &quot;members&quot;: [ &quot;user:eve@example.com&quot; ], &quot;condition&quot;: { &quot;title&quot;: &quot;expirable access&quot;, &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;, &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;, } } ], &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;, &quot;version&quot;: 3 } YAML example: bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;) - etag: BwWWja0YfJA= - version: 3 For a description of IAM and its features, see the IAM documentation (https://cloud.google.com/iam/docs/).
  &quot;bindings&quot;: [ # Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member.
    { # Associates members with a role.
      &quot;bindingId&quot;: &quot;A String&quot;,
      &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec.Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The condition that is associated with this binding.If the condition evaluates to true, then this binding applies to the current request.If the condition evaluates to false, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the members in this binding.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).
        &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
        &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
        &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
        &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
      },
      &quot;members&quot;: [ # Specifies the identities requesting access for a Cloud Platform resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com.
        &quot;A String&quot;,
      ],
      &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner.
    },
  ],
  &quot;etag&quot;: &quot;A String&quot;, # etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.
  &quot;version&quot;: 42, # Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(projectId, region, clusterName=None, filter=None, jobStateMatcher=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists regions/{region}/jobs in a project.

Args:
  projectId: string, Required. The ID of the Google Cloud Platform project that the job belongs to. (required)
  region: string, Required. The Dataproc region in which to handle the request. (required)
  clusterName: string, Optional. If set, the returned jobs list includes only jobs that were submitted to the named cluster.
  filter: string, Optional. A filter constraining the jobs to list. Filters are case-sensitive and have the following syntax:field = value AND field = value ...where field is status.state or labels.[KEY], and [KEY] is a label key. value can be * to match all values. status.state can be either ACTIVE or NON_ACTIVE. Only the logical AND operator is supported; space-separated items are treated as having an implicit AND operator.Example filter:status.state = ACTIVE AND labels.env = staging AND labels.starred = *
  jobStateMatcher: string, Optional. Specifies enumerated categories of jobs to list. (default = match ALL jobs).If filter is provided, jobStateMatcher will be ignored.
    Allowed values
      ALL - Match all jobs, regardless of state.
      ACTIVE - Only match jobs in non-terminal states: PENDING, RUNNING, or CANCEL_PENDING.
      NON_ACTIVE - Only match jobs in terminal states: CANCELLED, DONE, or ERROR.
  pageSize: integer, Optional. The number of results to return in each response.
  pageToken: string, Optional. The page token, returned by a previous call, to request the next page of results.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A list of jobs in a project.
  &quot;jobs&quot;: [ # Output only. Jobs list.
    { # A Dataproc job resource.
      &quot;done&quot;: True or False, # Output only. Indicates whether the job is completed. If the value is false, the job is still in progress. If true, the job is completed, and status.state field will indicate if it was successful, failed, or cancelled.
      &quot;driverControlFilesUri&quot;: &quot;A String&quot;, # Output only. If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as driver_output_uri.
      &quot;driverOutputResourceUri&quot;: &quot;A String&quot;, # Output only. A URI pointing to the location of the stdout of the job&#x27;s driver program.
      &quot;hadoopJob&quot;: { # A Dataproc job for running Apache Hadoop MapReduce (https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) jobs on Apache Hadoop YARN (https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/YARN.html). # Optional. Job is a Hadoop job.
        &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted in the working directory of Hadoop drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, or .zip.
          &quot;A String&quot;,
        ],
        &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as -libjars or -Dfoo=bar, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
          &quot;A String&quot;,
        ],
        &quot;fileUris&quot;: [ # Optional. HCFS (Hadoop Compatible Filesystem) URIs of files to be copied to the working directory of Hadoop drivers and distributed tasks. Useful for naively parallel tasks.
          &quot;A String&quot;,
        ],
        &quot;jarFileUris&quot;: [ # Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.
          &quot;A String&quot;,
        ],
        &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
          &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;mainClass&quot;: &quot;A String&quot;, # The name of the driver&#x27;s main class. The jar file containing the class must be in the default CLASSPATH or specified in jar_file_uris.
        &quot;mainJarFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the jar file containing the main class. Examples: &#x27;gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar&#x27; &#x27;hdfs:/tmp/test-samples/custom-wordcount.jar&#x27; &#x27;file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar&#x27;
        &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;hiveJob&quot;: { # A Dataproc job for running Apache Hive (https://hive.apache.org/) queries on YARN. # Optional. Job is a Hive job.
        &quot;continueOnFailure&quot;: True or False, # Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.
        &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATH of the Hive server and Hadoop MapReduce (MR) tasks. Can contain Hive SerDes and UDFs.
          &quot;A String&quot;,
        ],
        &quot;properties&quot;: { # Optional. A mapping of property names and values, used to configure Hive. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/hive/conf/hive-site.xml, and classes in user code.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains Hive queries.
        &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
          &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
            &quot;A String&quot;,
          ],
        },
        &quot;scriptVariables&quot;: { # Optional. Mapping of query variable names to values (equivalent to the Hive command: SET name=&quot;value&quot;;).
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;jobUuid&quot;: &quot;A String&quot;, # Output only. A UUID that uniquely identifies a job within the project over time. This is in contrast to a user-settable reference.job_id that may be reused over time.
      &quot;labels&quot;: { # Optional. The labels to associate with this job. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a job.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;pigJob&quot;: { # A Dataproc job for running Apache Pig (https://pig.apache.org/) queries on YARN. # Optional. Job is a Pig job.
        &quot;continueOnFailure&quot;: True or False, # Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.
        &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs.
          &quot;A String&quot;,
        ],
        &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
          &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/pig/conf/pig.properties, and classes in user code.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains the Pig queries.
        &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
          &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
            &quot;A String&quot;,
          ],
        },
        &quot;scriptVariables&quot;: { # Optional. Mapping of query variable names to values (equivalent to the Pig command: name=[value]).
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;placement&quot;: { # Dataproc job config. # Required. Job information, including how, when, and where to run the job.
        &quot;clusterName&quot;: &quot;A String&quot;, # Required. The name of the cluster where the job will be submitted.
        &quot;clusterUuid&quot;: &quot;A String&quot;, # Output only. A cluster UUID generated by the Dataproc service when the job is submitted.
      },
      &quot;prestoJob&quot;: { # A Dataproc job for running Presto (https://prestosql.io/) queries. IMPORTANT: The Dataproc Presto Optional Component (https://cloud.google.com/dataproc/docs/concepts/components/presto) must be enabled when the cluster is created to submit a Presto job to the cluster. # Optional. Job is a Presto job.
        &quot;clientTags&quot;: [ # Optional. Presto client tags to attach to this query
          &quot;A String&quot;,
        ],
        &quot;continueOnFailure&quot;: True or False, # Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.
        &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
          &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;outputFormat&quot;: &quot;A String&quot;, # Optional. The format in which query output will be displayed. See the Presto documentation for supported output formats
        &quot;properties&quot;: { # Optional. A mapping of property names to values. Used to set Presto session properties (https://prestodb.io/docs/current/sql/set-session.html) Equivalent to using the --session flag in the Presto CLI
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains SQL queries.
        &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
          &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
            &quot;A String&quot;,
          ],
        },
      },
      &quot;pysparkJob&quot;: { # A Dataproc job for running Apache PySpark (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN. # Optional. Job is a PySpark job.
        &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
          &quot;A String&quot;,
        ],
        &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
          &quot;A String&quot;,
        ],
        &quot;fileUris&quot;: [ # Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.
          &quot;A String&quot;,
        ],
        &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks.
          &quot;A String&quot;,
        ],
        &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
          &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;mainPythonFileUri&quot;: &quot;A String&quot;, # Required. The HCFS URI of the main Python file to use as the driver. Must be a .py file.
        &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;pythonFileUris&quot;: [ # Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip.
          &quot;A String&quot;,
        ],
      },
      &quot;reference&quot;: { # Encapsulates the full scoping used to reference a job. # Optional. The fully qualified reference to the job, which can be used to obtain the equivalent REST path of the job resource. If this property is not specified when a job is created, the server generates a job_id.
        &quot;jobId&quot;: &quot;A String&quot;, # Optional. The job ID, which must be unique within the project. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 100 characters.If not specified by the caller, the job ID will be provided by the server.
        &quot;projectId&quot;: &quot;A String&quot;, # Optional. The ID of the Google Cloud Platform project that the job belongs to. If specified, must match the request project ID.
      },
      &quot;scheduling&quot;: { # Job scheduling options. # Optional. Job scheduling configuration.
        &quot;maxFailuresPerHour&quot;: 42, # Optional. Maximum number of times per hour a driver may be restarted as a result of driver terminating with non-zero code before job is reported failed.A job may be reported as thrashing if driver exits with non-zero code 4 times within 10 minute window.Maximum value is 10.
        &quot;maxFailuresTotal&quot;: 42, # Optional. Maximum number of times in total a driver may be restarted as a result of driver exiting with non-zero code before job is reported failed. Maximum value is 240
      },
      &quot;sparkJob&quot;: { # A Dataproc job for running Apache Spark (http://spark.apache.org/) applications on YARN. The specification of the main method to call to drive the job. Specify either the jar file that contains the main class or the main class name. To pass both a main jar and a main class in that jar, add the jar to CommonJob.jar_file_uris, and then specify the main class name in main_class. # Optional. Job is a Spark job.
        &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
          &quot;A String&quot;,
        ],
        &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
          &quot;A String&quot;,
        ],
        &quot;fileUris&quot;: [ # Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.
          &quot;A String&quot;,
        ],
        &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks.
          &quot;A String&quot;,
        ],
        &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
          &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;mainClass&quot;: &quot;A String&quot;, # The name of the driver&#x27;s main class. The jar file that contains the class must be in the default CLASSPATH or specified in jar_file_uris.
        &quot;mainJarFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the jar file that contains the main class.
        &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Spark. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;sparkRJob&quot;: { # A Dataproc job for running Apache SparkR (https://spark.apache.org/docs/latest/sparkr.html) applications on YARN. # Optional. Job is a SparkR job.
        &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
          &quot;A String&quot;,
        ],
        &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
          &quot;A String&quot;,
        ],
        &quot;fileUris&quot;: [ # Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.
          &quot;A String&quot;,
        ],
        &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
          &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;mainRFileUri&quot;: &quot;A String&quot;, # Required. The HCFS URI of the main R file to use as the driver. Must be a .R file.
        &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure SparkR. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;sparkSqlJob&quot;: { # A Dataproc job for running Apache Spark SQL (http://spark.apache.org/sql/) queries. # Optional. Job is a SparkSql job.
        &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH.
          &quot;A String&quot;,
        ],
        &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
          &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
            &quot;a_key&quot;: &quot;A String&quot;,
          },
        },
        &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Spark SQL&#x27;s SparkConf. Properties that conflict with values set by the Dataproc API may be overwritten.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains SQL queries.
        &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
          &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
            &quot;A String&quot;,
          ],
        },
        &quot;scriptVariables&quot;: { # Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name=&quot;value&quot;;).
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;status&quot;: { # Dataproc job status. # Output only. The job status. Additional application-specific status information may be contained in the type_job and yarn_applications fields.
        &quot;details&quot;: &quot;A String&quot;, # Output only. Optional Job state details, such as an error description if the state is ERROR.
        &quot;state&quot;: &quot;A String&quot;, # Output only. A state message specifying the overall job state.
        &quot;stateStartTime&quot;: &quot;A String&quot;, # Output only. The time when this state was entered.
        &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information, which includes status reported by the agent.
      },
      &quot;statusHistory&quot;: [ # Output only. The previous job status.
        { # Dataproc job status.
          &quot;details&quot;: &quot;A String&quot;, # Output only. Optional Job state details, such as an error description if the state is ERROR.
          &quot;state&quot;: &quot;A String&quot;, # Output only. A state message specifying the overall job state.
          &quot;stateStartTime&quot;: &quot;A String&quot;, # Output only. The time when this state was entered.
          &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information, which includes status reported by the agent.
        },
      ],
      &quot;submittedBy&quot;: &quot;A String&quot;, # Output only. The email address of the user submitting the job. For jobs submitted on the cluster, the address is username@hostname.
      &quot;yarnApplications&quot;: [ # Output only. The collection of YARN applications spun up by this job.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
        { # A YARN application created by a job. Application information is a subset of org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
          &quot;name&quot;: &quot;A String&quot;, # Output only. The application name.
          &quot;progress&quot;: 3.14, # Output only. The numerical progress of the application, from 1 to 100.
          &quot;state&quot;: &quot;A String&quot;, # Output only. The application state.
          &quot;trackingUrl&quot;: &quot;A String&quot;, # Output only. The HTTP URL of the ApplicationMaster, HistoryServer, or TimelineServer that provides application-specific information. The URL uses the internal hostname, and requires a proxy server for resolution and, possibly, access.
        },
      ],
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Optional. This token is included in the response if there are more results to fetch. To fetch additional results, provide this value as the page_token in a subsequent ListJobsRequest.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(projectId, region, jobId, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates a job in a project.

Args:
  projectId: string, Required. The ID of the Google Cloud Platform project that the job belongs to. (required)
  region: string, Required. The Dataproc region in which to handle the request. (required)
  jobId: string, Required. The job ID. (required)
  body: object, The request body.
    The object takes the form of:

{ # A Dataproc job resource.
  &quot;done&quot;: True or False, # Output only. Indicates whether the job is completed. If the value is false, the job is still in progress. If true, the job is completed, and status.state field will indicate if it was successful, failed, or cancelled.
  &quot;driverControlFilesUri&quot;: &quot;A String&quot;, # Output only. If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as driver_output_uri.
  &quot;driverOutputResourceUri&quot;: &quot;A String&quot;, # Output only. A URI pointing to the location of the stdout of the job&#x27;s driver program.
  &quot;hadoopJob&quot;: { # A Dataproc job for running Apache Hadoop MapReduce (https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) jobs on Apache Hadoop YARN (https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/YARN.html). # Optional. Job is a Hadoop job.
    &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted in the working directory of Hadoop drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, or .zip.
      &quot;A String&quot;,
    ],
    &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as -libjars or -Dfoo=bar, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
      &quot;A String&quot;,
    ],
    &quot;fileUris&quot;: [ # Optional. HCFS (Hadoop Compatible Filesystem) URIs of files to be copied to the working directory of Hadoop drivers and distributed tasks. Useful for naively parallel tasks.
      &quot;A String&quot;,
    ],
    &quot;jarFileUris&quot;: [ # Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;mainClass&quot;: &quot;A String&quot;, # The name of the driver&#x27;s main class. The jar file containing the class must be in the default CLASSPATH or specified in jar_file_uris.
    &quot;mainJarFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the jar file containing the main class. Examples: &#x27;gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar&#x27; &#x27;hdfs:/tmp/test-samples/custom-wordcount.jar&#x27; &#x27;file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar&#x27;
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;hiveJob&quot;: { # A Dataproc job for running Apache Hive (https://hive.apache.org/) queries on YARN. # Optional. Job is a Hive job.
    &quot;continueOnFailure&quot;: True or False, # Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.
    &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATH of the Hive server and Hadoop MapReduce (MR) tasks. Can contain Hive SerDes and UDFs.
      &quot;A String&quot;,
    ],
    &quot;properties&quot;: { # Optional. A mapping of property names and values, used to configure Hive. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/hive/conf/hive-site.xml, and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains Hive queries.
    &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
      &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
        &quot;A String&quot;,
      ],
    },
    &quot;scriptVariables&quot;: { # Optional. Mapping of query variable names to values (equivalent to the Hive command: SET name=&quot;value&quot;;).
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;jobUuid&quot;: &quot;A String&quot;, # Output only. A UUID that uniquely identifies a job within the project over time. This is in contrast to a user-settable reference.job_id that may be reused over time.
  &quot;labels&quot;: { # Optional. The labels to associate with this job. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a job.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;pigJob&quot;: { # A Dataproc job for running Apache Pig (https://pig.apache.org/) queries on YARN. # Optional. Job is a Pig job.
    &quot;continueOnFailure&quot;: True or False, # Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.
    &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/pig/conf/pig.properties, and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains the Pig queries.
    &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
      &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
        &quot;A String&quot;,
      ],
    },
    &quot;scriptVariables&quot;: { # Optional. Mapping of query variable names to values (equivalent to the Pig command: name=[value]).
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;placement&quot;: { # Dataproc job config. # Required. Job information, including how, when, and where to run the job.
    &quot;clusterName&quot;: &quot;A String&quot;, # Required. The name of the cluster where the job will be submitted.
    &quot;clusterUuid&quot;: &quot;A String&quot;, # Output only. A cluster UUID generated by the Dataproc service when the job is submitted.
  },
  &quot;prestoJob&quot;: { # A Dataproc job for running Presto (https://prestosql.io/) queries. IMPORTANT: The Dataproc Presto Optional Component (https://cloud.google.com/dataproc/docs/concepts/components/presto) must be enabled when the cluster is created to submit a Presto job to the cluster. # Optional. Job is a Presto job.
    &quot;clientTags&quot;: [ # Optional. Presto client tags to attach to this query
      &quot;A String&quot;,
    ],
    &quot;continueOnFailure&quot;: True or False, # Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;outputFormat&quot;: &quot;A String&quot;, # Optional. The format in which query output will be displayed. See the Presto documentation for supported output formats
    &quot;properties&quot;: { # Optional. A mapping of property names to values. Used to set Presto session properties (https://prestodb.io/docs/current/sql/set-session.html) Equivalent to using the --session flag in the Presto CLI
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains SQL queries.
    &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
      &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
        &quot;A String&quot;,
      ],
    },
  },
  &quot;pysparkJob&quot;: { # A Dataproc job for running Apache PySpark (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN. # Optional. Job is a PySpark job.
    &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
      &quot;A String&quot;,
    ],
    &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
      &quot;A String&quot;,
    ],
    &quot;fileUris&quot;: [ # Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.
      &quot;A String&quot;,
    ],
    &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;mainPythonFileUri&quot;: &quot;A String&quot;, # Required. The HCFS URI of the main Python file to use as the driver. Must be a .py file.
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;pythonFileUris&quot;: [ # Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip.
      &quot;A String&quot;,
    ],
  },
  &quot;reference&quot;: { # Encapsulates the full scoping used to reference a job. # Optional. The fully qualified reference to the job, which can be used to obtain the equivalent REST path of the job resource. If this property is not specified when a job is created, the server generates a job_id.
    &quot;jobId&quot;: &quot;A String&quot;, # Optional. The job ID, which must be unique within the project. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 100 characters.If not specified by the caller, the job ID will be provided by the server.
    &quot;projectId&quot;: &quot;A String&quot;, # Optional. The ID of the Google Cloud Platform project that the job belongs to. If specified, must match the request project ID.
  },
  &quot;scheduling&quot;: { # Job scheduling options. # Optional. Job scheduling configuration.
    &quot;maxFailuresPerHour&quot;: 42, # Optional. Maximum number of times per hour a driver may be restarted as a result of driver terminating with non-zero code before job is reported failed.A job may be reported as thrashing if driver exits with non-zero code 4 times within 10 minute window.Maximum value is 10.
    &quot;maxFailuresTotal&quot;: 42, # Optional. Maximum number of times in total a driver may be restarted as a result of driver exiting with non-zero code before job is reported failed. Maximum value is 240
  },
  &quot;sparkJob&quot;: { # A Dataproc job for running Apache Spark (http://spark.apache.org/) applications on YARN. The specification of the main method to call to drive the job. Specify either the jar file that contains the main class or the main class name. To pass both a main jar and a main class in that jar, add the jar to CommonJob.jar_file_uris, and then specify the main class name in main_class. # Optional. Job is a Spark job.
    &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
      &quot;A String&quot;,
    ],
    &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
      &quot;A String&quot;,
    ],
    &quot;fileUris&quot;: [ # Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.
      &quot;A String&quot;,
    ],
    &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;mainClass&quot;: &quot;A String&quot;, # The name of the driver&#x27;s main class. The jar file that contains the class must be in the default CLASSPATH or specified in jar_file_uris.
    &quot;mainJarFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the jar file that contains the main class.
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Spark. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;sparkRJob&quot;: { # A Dataproc job for running Apache SparkR (https://spark.apache.org/docs/latest/sparkr.html) applications on YARN. # Optional. Job is a SparkR job.
    &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
      &quot;A String&quot;,
    ],
    &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
      &quot;A String&quot;,
    ],
    &quot;fileUris&quot;: [ # Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;mainRFileUri&quot;: &quot;A String&quot;, # Required. The HCFS URI of the main R file to use as the driver. Must be a .R file.
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure SparkR. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;sparkSqlJob&quot;: { # A Dataproc job for running Apache Spark SQL (http://spark.apache.org/sql/) queries. # Optional. Job is a SparkSql job.
    &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Spark SQL&#x27;s SparkConf. Properties that conflict with values set by the Dataproc API may be overwritten.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains SQL queries.
    &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
      &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
        &quot;A String&quot;,
      ],
    },
    &quot;scriptVariables&quot;: { # Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name=&quot;value&quot;;).
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;status&quot;: { # Dataproc job status. # Output only. The job status. Additional application-specific status information may be contained in the type_job and yarn_applications fields.
    &quot;details&quot;: &quot;A String&quot;, # Output only. Optional Job state details, such as an error description if the state is ERROR.
    &quot;state&quot;: &quot;A String&quot;, # Output only. A state message specifying the overall job state.
    &quot;stateStartTime&quot;: &quot;A String&quot;, # Output only. The time when this state was entered.
    &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information, which includes status reported by the agent.
  },
  &quot;statusHistory&quot;: [ # Output only. The previous job status.
    { # Dataproc job status.
      &quot;details&quot;: &quot;A String&quot;, # Output only. Optional Job state details, such as an error description if the state is ERROR.
      &quot;state&quot;: &quot;A String&quot;, # Output only. A state message specifying the overall job state.
      &quot;stateStartTime&quot;: &quot;A String&quot;, # Output only. The time when this state was entered.
      &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information, which includes status reported by the agent.
    },
  ],
  &quot;submittedBy&quot;: &quot;A String&quot;, # Output only. The email address of the user submitting the job. For jobs submitted on the cluster, the address is username@hostname.
  &quot;yarnApplications&quot;: [ # Output only. The collection of YARN applications spun up by this job.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
    { # A YARN application created by a job. Application information is a subset of org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The application name.
      &quot;progress&quot;: 3.14, # Output only. The numerical progress of the application, from 1 to 100.
      &quot;state&quot;: &quot;A String&quot;, # Output only. The application state.
      &quot;trackingUrl&quot;: &quot;A String&quot;, # Output only. The HTTP URL of the ApplicationMaster, HistoryServer, or TimelineServer that provides application-specific information. The URL uses the internal hostname, and requires a proxy server for resolution and, possibly, access.
    },
  ],
}

  updateMask: string, Required. Specifies the path, relative to Job, of the field to update. For example, to update the labels of a Job the update_mask parameter would be specified as labels, and the PATCH request body would specify the new value. *Note:* Currently, labels is the only field that can be updated.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A Dataproc job resource.
  &quot;done&quot;: True or False, # Output only. Indicates whether the job is completed. If the value is false, the job is still in progress. If true, the job is completed, and status.state field will indicate if it was successful, failed, or cancelled.
  &quot;driverControlFilesUri&quot;: &quot;A String&quot;, # Output only. If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as driver_output_uri.
  &quot;driverOutputResourceUri&quot;: &quot;A String&quot;, # Output only. A URI pointing to the location of the stdout of the job&#x27;s driver program.
  &quot;hadoopJob&quot;: { # A Dataproc job for running Apache Hadoop MapReduce (https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) jobs on Apache Hadoop YARN (https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/YARN.html). # Optional. Job is a Hadoop job.
    &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted in the working directory of Hadoop drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, or .zip.
      &quot;A String&quot;,
    ],
    &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as -libjars or -Dfoo=bar, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
      &quot;A String&quot;,
    ],
    &quot;fileUris&quot;: [ # Optional. HCFS (Hadoop Compatible Filesystem) URIs of files to be copied to the working directory of Hadoop drivers and distributed tasks. Useful for naively parallel tasks.
      &quot;A String&quot;,
    ],
    &quot;jarFileUris&quot;: [ # Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;mainClass&quot;: &quot;A String&quot;, # The name of the driver&#x27;s main class. The jar file containing the class must be in the default CLASSPATH or specified in jar_file_uris.
    &quot;mainJarFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the jar file containing the main class. Examples: &#x27;gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar&#x27; &#x27;hdfs:/tmp/test-samples/custom-wordcount.jar&#x27; &#x27;file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar&#x27;
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;hiveJob&quot;: { # A Dataproc job for running Apache Hive (https://hive.apache.org/) queries on YARN. # Optional. Job is a Hive job.
    &quot;continueOnFailure&quot;: True or False, # Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.
    &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATH of the Hive server and Hadoop MapReduce (MR) tasks. Can contain Hive SerDes and UDFs.
      &quot;A String&quot;,
    ],
    &quot;properties&quot;: { # Optional. A mapping of property names and values, used to configure Hive. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/hive/conf/hive-site.xml, and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains Hive queries.
    &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
      &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
        &quot;A String&quot;,
      ],
    },
    &quot;scriptVariables&quot;: { # Optional. Mapping of query variable names to values (equivalent to the Hive command: SET name=&quot;value&quot;;).
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;jobUuid&quot;: &quot;A String&quot;, # Output only. A UUID that uniquely identifies a job within the project over time. This is in contrast to a user-settable reference.job_id that may be reused over time.
  &quot;labels&quot;: { # Optional. The labels to associate with this job. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a job.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;pigJob&quot;: { # A Dataproc job for running Apache Pig (https://pig.apache.org/) queries on YARN. # Optional. Job is a Pig job.
    &quot;continueOnFailure&quot;: True or False, # Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.
    &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/pig/conf/pig.properties, and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains the Pig queries.
    &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
      &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
        &quot;A String&quot;,
      ],
    },
    &quot;scriptVariables&quot;: { # Optional. Mapping of query variable names to values (equivalent to the Pig command: name=[value]).
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;placement&quot;: { # Dataproc job config. # Required. Job information, including how, when, and where to run the job.
    &quot;clusterName&quot;: &quot;A String&quot;, # Required. The name of the cluster where the job will be submitted.
    &quot;clusterUuid&quot;: &quot;A String&quot;, # Output only. A cluster UUID generated by the Dataproc service when the job is submitted.
  },
  &quot;prestoJob&quot;: { # A Dataproc job for running Presto (https://prestosql.io/) queries. IMPORTANT: The Dataproc Presto Optional Component (https://cloud.google.com/dataproc/docs/concepts/components/presto) must be enabled when the cluster is created to submit a Presto job to the cluster. # Optional. Job is a Presto job.
    &quot;clientTags&quot;: [ # Optional. Presto client tags to attach to this query
      &quot;A String&quot;,
    ],
    &quot;continueOnFailure&quot;: True or False, # Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;outputFormat&quot;: &quot;A String&quot;, # Optional. The format in which query output will be displayed. See the Presto documentation for supported output formats
    &quot;properties&quot;: { # Optional. A mapping of property names to values. Used to set Presto session properties (https://prestodb.io/docs/current/sql/set-session.html) Equivalent to using the --session flag in the Presto CLI
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains SQL queries.
    &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
      &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
        &quot;A String&quot;,
      ],
    },
  },
  &quot;pysparkJob&quot;: { # A Dataproc job for running Apache PySpark (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN. # Optional. Job is a PySpark job.
    &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
      &quot;A String&quot;,
    ],
    &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
      &quot;A String&quot;,
    ],
    &quot;fileUris&quot;: [ # Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.
      &quot;A String&quot;,
    ],
    &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;mainPythonFileUri&quot;: &quot;A String&quot;, # Required. The HCFS URI of the main Python file to use as the driver. Must be a .py file.
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;pythonFileUris&quot;: [ # Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip.
      &quot;A String&quot;,
    ],
  },
  &quot;reference&quot;: { # Encapsulates the full scoping used to reference a job. # Optional. The fully qualified reference to the job, which can be used to obtain the equivalent REST path of the job resource. If this property is not specified when a job is created, the server generates a job_id.
    &quot;jobId&quot;: &quot;A String&quot;, # Optional. The job ID, which must be unique within the project. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 100 characters.If not specified by the caller, the job ID will be provided by the server.
    &quot;projectId&quot;: &quot;A String&quot;, # Optional. The ID of the Google Cloud Platform project that the job belongs to. If specified, must match the request project ID.
  },
  &quot;scheduling&quot;: { # Job scheduling options. # Optional. Job scheduling configuration.
    &quot;maxFailuresPerHour&quot;: 42, # Optional. Maximum number of times per hour a driver may be restarted as a result of driver terminating with non-zero code before job is reported failed.A job may be reported as thrashing if driver exits with non-zero code 4 times within 10 minute window.Maximum value is 10.
    &quot;maxFailuresTotal&quot;: 42, # Optional. Maximum number of times in total a driver may be restarted as a result of driver exiting with non-zero code before job is reported failed. Maximum value is 240
  },
  &quot;sparkJob&quot;: { # A Dataproc job for running Apache Spark (http://spark.apache.org/) applications on YARN. The specification of the main method to call to drive the job. Specify either the jar file that contains the main class or the main class name. To pass both a main jar and a main class in that jar, add the jar to CommonJob.jar_file_uris, and then specify the main class name in main_class. # Optional. Job is a Spark job.
    &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
      &quot;A String&quot;,
    ],
    &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
      &quot;A String&quot;,
    ],
    &quot;fileUris&quot;: [ # Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.
      &quot;A String&quot;,
    ],
    &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;mainClass&quot;: &quot;A String&quot;, # The name of the driver&#x27;s main class. The jar file that contains the class must be in the default CLASSPATH or specified in jar_file_uris.
    &quot;mainJarFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the jar file that contains the main class.
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Spark. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;sparkRJob&quot;: { # A Dataproc job for running Apache SparkR (https://spark.apache.org/docs/latest/sparkr.html) applications on YARN. # Optional. Job is a SparkR job.
    &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
      &quot;A String&quot;,
    ],
    &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
      &quot;A String&quot;,
    ],
    &quot;fileUris&quot;: [ # Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;mainRFileUri&quot;: &quot;A String&quot;, # Required. The HCFS URI of the main R file to use as the driver. Must be a .R file.
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure SparkR. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;sparkSqlJob&quot;: { # A Dataproc job for running Apache Spark SQL (http://spark.apache.org/sql/) queries. # Optional. Job is a SparkSql job.
    &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Spark SQL&#x27;s SparkConf. Properties that conflict with values set by the Dataproc API may be overwritten.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains SQL queries.
    &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
      &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
        &quot;A String&quot;,
      ],
    },
    &quot;scriptVariables&quot;: { # Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name=&quot;value&quot;;).
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;status&quot;: { # Dataproc job status. # Output only. The job status. Additional application-specific status information may be contained in the type_job and yarn_applications fields.
    &quot;details&quot;: &quot;A String&quot;, # Output only. Optional Job state details, such as an error description if the state is ERROR.
    &quot;state&quot;: &quot;A String&quot;, # Output only. A state message specifying the overall job state.
    &quot;stateStartTime&quot;: &quot;A String&quot;, # Output only. The time when this state was entered.
    &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information, which includes status reported by the agent.
  },
  &quot;statusHistory&quot;: [ # Output only. The previous job status.
    { # Dataproc job status.
      &quot;details&quot;: &quot;A String&quot;, # Output only. Optional Job state details, such as an error description if the state is ERROR.
      &quot;state&quot;: &quot;A String&quot;, # Output only. A state message specifying the overall job state.
      &quot;stateStartTime&quot;: &quot;A String&quot;, # Output only. The time when this state was entered.
      &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information, which includes status reported by the agent.
    },
  ],
  &quot;submittedBy&quot;: &quot;A String&quot;, # Output only. The email address of the user submitting the job. For jobs submitted on the cluster, the address is username@hostname.
  &quot;yarnApplications&quot;: [ # Output only. The collection of YARN applications spun up by this job.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
    { # A YARN application created by a job. Application information is a subset of org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The application name.
      &quot;progress&quot;: 3.14, # Output only. The numerical progress of the application, from 1 to 100.
      &quot;state&quot;: &quot;A String&quot;, # Output only. The application state.
      &quot;trackingUrl&quot;: &quot;A String&quot;, # Output only. The HTTP URL of the ApplicationMaster, HistoryServer, or TimelineServer that provides application-specific information. The URL uses the internal hostname, and requires a proxy server for resolution and, possibly, access.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="setIamPolicy">setIamPolicy(resource, body=None, x__xgafv=None)</code>
  <pre>Sets the access control policy on the specified resource. Replaces any existing policy.Can return NOT_FOUND, INVALID_ARGUMENT, and PERMISSION_DENIED errors.

Args:
  resource: string, REQUIRED: The resource for which the policy is being specified. See the operation documentation for the appropriate value for this field. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for SetIamPolicy method.
  &quot;policy&quot;: { # An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources.A Policy is a collection of bindings. A binding binds one or more members to a single role. Members can be user accounts, service accounts, Google groups, and domains (such as G Suite). A role is a named list of permissions; each role can be an IAM predefined role or a user-created custom role.For some types of Google Cloud resources, a binding can also specify a condition, which is a logical expression that allows access to a resource only if the expression evaluates to true. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).JSON example: { &quot;bindings&quot;: [ { &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;, &quot;members&quot;: [ &quot;user:mike@example.com&quot;, &quot;group:admins@example.com&quot;, &quot;domain:google.com&quot;, &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot; ] }, { &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;, &quot;members&quot;: [ &quot;user:eve@example.com&quot; ], &quot;condition&quot;: { &quot;title&quot;: &quot;expirable access&quot;, &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;, &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;, } } ], &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;, &quot;version&quot;: 3 } YAML example: bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;) - etag: BwWWja0YfJA= - version: 3 For a description of IAM and its features, see the IAM documentation (https://cloud.google.com/iam/docs/). # REQUIRED: The complete policy to be applied to the resource. The size of the policy is limited to a few 10s of KB. An empty policy is a valid policy but certain Cloud Platform services (such as Projects) might reject them.
    &quot;bindings&quot;: [ # Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member.
      { # Associates members with a role.
        &quot;bindingId&quot;: &quot;A String&quot;,
        &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec.Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The condition that is associated with this binding.If the condition evaluates to true, then this binding applies to the current request.If the condition evaluates to false, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the members in this binding.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).
          &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
          &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
          &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
          &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
        },
        &quot;members&quot;: [ # Specifies the identities requesting access for a Cloud Platform resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com.
          &quot;A String&quot;,
        ],
        &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner.
      },
    ],
    &quot;etag&quot;: &quot;A String&quot;, # etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.
    &quot;version&quot;: 42, # Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).
  },
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # An Identity and Access Management (IAM) policy, which specifies access controls for Google Cloud resources.A Policy is a collection of bindings. A binding binds one or more members to a single role. Members can be user accounts, service accounts, Google groups, and domains (such as G Suite). A role is a named list of permissions; each role can be an IAM predefined role or a user-created custom role.For some types of Google Cloud resources, a binding can also specify a condition, which is a logical expression that allows access to a resource only if the expression evaluates to true. A condition can add constraints based on attributes of the request, the resource, or both. To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).JSON example: { &quot;bindings&quot;: [ { &quot;role&quot;: &quot;roles/resourcemanager.organizationAdmin&quot;, &quot;members&quot;: [ &quot;user:mike@example.com&quot;, &quot;group:admins@example.com&quot;, &quot;domain:google.com&quot;, &quot;serviceAccount:my-project-id@appspot.gserviceaccount.com&quot; ] }, { &quot;role&quot;: &quot;roles/resourcemanager.organizationViewer&quot;, &quot;members&quot;: [ &quot;user:eve@example.com&quot; ], &quot;condition&quot;: { &quot;title&quot;: &quot;expirable access&quot;, &quot;description&quot;: &quot;Does not grant access after Sep 2020&quot;, &quot;expression&quot;: &quot;request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;)&quot;, } } ], &quot;etag&quot;: &quot;BwWWja0YfJA=&quot;, &quot;version&quot;: 3 } YAML example: bindings: - members: - user:mike@example.com - group:admins@example.com - domain:google.com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/resourcemanager.organizationAdmin - members: - user:eve@example.com role: roles/resourcemanager.organizationViewer condition: title: expirable access description: Does not grant access after Sep 2020 expression: request.time &lt; timestamp(&#x27;2020-10-01T00:00:00.000Z&#x27;) - etag: BwWWja0YfJA= - version: 3 For a description of IAM and its features, see the IAM documentation (https://cloud.google.com/iam/docs/).
  &quot;bindings&quot;: [ # Associates a list of members to a role. Optionally, may specify a condition that determines how and when the bindings are applied. Each of the bindings must contain at least one member.
    { # Associates members with a role.
      &quot;bindingId&quot;: &quot;A String&quot;,
      &quot;condition&quot;: { # Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The syntax and semantics of CEL are documented at https://github.com/google/cel-spec.Example (Comparison): title: &quot;Summary size limit&quot; description: &quot;Determines if a summary is less than 100 chars&quot; expression: &quot;document.summary.size() &lt; 100&quot; Example (Equality): title: &quot;Requestor is owner&quot; description: &quot;Determines if requestor is the document owner&quot; expression: &quot;document.owner == request.auth.claims.email&quot; Example (Logic): title: &quot;Public documents&quot; description: &quot;Determine whether the document should be publicly visible&quot; expression: &quot;document.type != &#x27;private&#x27; &amp;&amp; document.type != &#x27;internal&#x27;&quot; Example (Data Manipulation): title: &quot;Notification string&quot; description: &quot;Create a notification string with a timestamp.&quot; expression: &quot;&#x27;New message received at &#x27; + string(document.create_time)&quot; The exact variables and functions that may be referenced within an expression are determined by the service that evaluates it. See the service documentation for additional information. # The condition that is associated with this binding.If the condition evaluates to true, then this binding applies to the current request.If the condition evaluates to false, then this binding does not apply to the current request. However, a different role binding might grant the same role to one or more of the members in this binding.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).
        &quot;description&quot;: &quot;A String&quot;, # Optional. Description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
        &quot;expression&quot;: &quot;A String&quot;, # Textual representation of an expression in Common Expression Language syntax.
        &quot;location&quot;: &quot;A String&quot;, # Optional. String indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
        &quot;title&quot;: &quot;A String&quot;, # Optional. Title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.
      },
      &quot;members&quot;: [ # Specifies the identities requesting access for a Cloud Platform resource. members can have the following values: allUsers: A special identifier that represents anyone who is on the internet; with or without a Google account. allAuthenticatedUsers: A special identifier that represents anyone who is authenticated with a Google account or a service account. user:{emailid}: An email address that represents a specific Google account. For example, alice@example.com . serviceAccount:{emailid}: An email address that represents a service account. For example, my-other-app@appspot.gserviceaccount.com. group:{emailid}: An email address that represents a Google group. For example, admins@example.com. deleted:user:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a user that has been recently deleted. For example, alice@example.com?uid=123456789012345678901. If the user is recovered, this value reverts to user:{emailid} and the recovered user retains the role in the binding. deleted:serviceAccount:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a service account that has been recently deleted. For example, my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901. If the service account is undeleted, this value reverts to serviceAccount:{emailid} and the undeleted service account retains the role in the binding. deleted:group:{emailid}?uid={uniqueid}: An email address (plus unique identifier) representing a Google group that has been recently deleted. For example, admins@example.com?uid=123456789012345678901. If the group is recovered, this value reverts to group:{emailid} and the recovered group retains the role in the binding. domain:{domain}: The G Suite domain (primary) that represents all the users of that domain. For example, google.com or example.com.
        &quot;A String&quot;,
      ],
      &quot;role&quot;: &quot;A String&quot;, # Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner.
    },
  ],
  &quot;etag&quot;: &quot;A String&quot;, # etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An etag is returned in the response to getIamPolicy, and systems are expected to put that etag in the request to setIamPolicy to ensure that their change will be applied to the same version of the policy.Important: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.
  &quot;version&quot;: 42, # Specifies the format of the policy.Valid values are 0, 1, and 3. Requests that specify an invalid value are rejected.Any operation that affects conditional role bindings must specify version 3. This requirement applies to the following operations: Getting a policy that includes a conditional role binding Adding a conditional role binding to a policy Changing a conditional role binding in a policy Removing any role binding, with or without a condition, from a policy that includes conditionsImportant: If you use IAM Conditions, you must include the etag field whenever you call setIamPolicy. If you omit this field, then IAM allows you to overwrite a version 3 policy with a version 1 policy, and all of the conditions in the version 3 policy are lost.If a policy does not include any conditions, operations on that policy may specify any valid version or leave the field unset.To learn which resources support conditions in their IAM policies, see the IAM documentation (https://cloud.google.com/iam/help/conditions/resource-policies).
}</pre>
</div>

<div class="method">
    <code class="details" id="submit">submit(projectId, region, body=None, x__xgafv=None)</code>
  <pre>Submits a job to a cluster.

Args:
  projectId: string, Required. The ID of the Google Cloud Platform project that the job belongs to. (required)
  region: string, Required. The Dataproc region in which to handle the request. (required)
  body: object, The request body.
    The object takes the form of:

{ # A request to submit a job.
  &quot;job&quot;: { # A Dataproc job resource. # Required. The job resource.
    &quot;done&quot;: True or False, # Output only. Indicates whether the job is completed. If the value is false, the job is still in progress. If true, the job is completed, and status.state field will indicate if it was successful, failed, or cancelled.
    &quot;driverControlFilesUri&quot;: &quot;A String&quot;, # Output only. If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as driver_output_uri.
    &quot;driverOutputResourceUri&quot;: &quot;A String&quot;, # Output only. A URI pointing to the location of the stdout of the job&#x27;s driver program.
    &quot;hadoopJob&quot;: { # A Dataproc job for running Apache Hadoop MapReduce (https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) jobs on Apache Hadoop YARN (https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/YARN.html). # Optional. Job is a Hadoop job.
      &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted in the working directory of Hadoop drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, or .zip.
        &quot;A String&quot;,
      ],
      &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as -libjars or -Dfoo=bar, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
        &quot;A String&quot;,
      ],
      &quot;fileUris&quot;: [ # Optional. HCFS (Hadoop Compatible Filesystem) URIs of files to be copied to the working directory of Hadoop drivers and distributed tasks. Useful for naively parallel tasks.
        &quot;A String&quot;,
      ],
      &quot;jarFileUris&quot;: [ # Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.
        &quot;A String&quot;,
      ],
      &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;mainClass&quot;: &quot;A String&quot;, # The name of the driver&#x27;s main class. The jar file containing the class must be in the default CLASSPATH or specified in jar_file_uris.
      &quot;mainJarFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the jar file containing the main class. Examples: &#x27;gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar&#x27; &#x27;hdfs:/tmp/test-samples/custom-wordcount.jar&#x27; &#x27;file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar&#x27;
      &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;hiveJob&quot;: { # A Dataproc job for running Apache Hive (https://hive.apache.org/) queries on YARN. # Optional. Job is a Hive job.
      &quot;continueOnFailure&quot;: True or False, # Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.
      &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATH of the Hive server and Hadoop MapReduce (MR) tasks. Can contain Hive SerDes and UDFs.
        &quot;A String&quot;,
      ],
      &quot;properties&quot;: { # Optional. A mapping of property names and values, used to configure Hive. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/hive/conf/hive-site.xml, and classes in user code.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains Hive queries.
      &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
        &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
          &quot;A String&quot;,
        ],
      },
      &quot;scriptVariables&quot;: { # Optional. Mapping of query variable names to values (equivalent to the Hive command: SET name=&quot;value&quot;;).
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;jobUuid&quot;: &quot;A String&quot;, # Output only. A UUID that uniquely identifies a job within the project over time. This is in contrast to a user-settable reference.job_id that may be reused over time.
    &quot;labels&quot;: { # Optional. The labels to associate with this job. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a job.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;pigJob&quot;: { # A Dataproc job for running Apache Pig (https://pig.apache.org/) queries on YARN. # Optional. Job is a Pig job.
      &quot;continueOnFailure&quot;: True or False, # Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.
      &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs.
        &quot;A String&quot;,
      ],
      &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/pig/conf/pig.properties, and classes in user code.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains the Pig queries.
      &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
        &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
          &quot;A String&quot;,
        ],
      },
      &quot;scriptVariables&quot;: { # Optional. Mapping of query variable names to values (equivalent to the Pig command: name=[value]).
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;placement&quot;: { # Dataproc job config. # Required. Job information, including how, when, and where to run the job.
      &quot;clusterName&quot;: &quot;A String&quot;, # Required. The name of the cluster where the job will be submitted.
      &quot;clusterUuid&quot;: &quot;A String&quot;, # Output only. A cluster UUID generated by the Dataproc service when the job is submitted.
    },
    &quot;prestoJob&quot;: { # A Dataproc job for running Presto (https://prestosql.io/) queries. IMPORTANT: The Dataproc Presto Optional Component (https://cloud.google.com/dataproc/docs/concepts/components/presto) must be enabled when the cluster is created to submit a Presto job to the cluster. # Optional. Job is a Presto job.
      &quot;clientTags&quot;: [ # Optional. Presto client tags to attach to this query
        &quot;A String&quot;,
      ],
      &quot;continueOnFailure&quot;: True or False, # Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.
      &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;outputFormat&quot;: &quot;A String&quot;, # Optional. The format in which query output will be displayed. See the Presto documentation for supported output formats
      &quot;properties&quot;: { # Optional. A mapping of property names to values. Used to set Presto session properties (https://prestodb.io/docs/current/sql/set-session.html) Equivalent to using the --session flag in the Presto CLI
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains SQL queries.
      &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
        &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
          &quot;A String&quot;,
        ],
      },
    },
    &quot;pysparkJob&quot;: { # A Dataproc job for running Apache PySpark (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN. # Optional. Job is a PySpark job.
      &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
        &quot;A String&quot;,
      ],
      &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
        &quot;A String&quot;,
      ],
      &quot;fileUris&quot;: [ # Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.
        &quot;A String&quot;,
      ],
      &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks.
        &quot;A String&quot;,
      ],
      &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;mainPythonFileUri&quot;: &quot;A String&quot;, # Required. The HCFS URI of the main Python file to use as the driver. Must be a .py file.
      &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;pythonFileUris&quot;: [ # Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip.
        &quot;A String&quot;,
      ],
    },
    &quot;reference&quot;: { # Encapsulates the full scoping used to reference a job. # Optional. The fully qualified reference to the job, which can be used to obtain the equivalent REST path of the job resource. If this property is not specified when a job is created, the server generates a job_id.
      &quot;jobId&quot;: &quot;A String&quot;, # Optional. The job ID, which must be unique within the project. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 100 characters.If not specified by the caller, the job ID will be provided by the server.
      &quot;projectId&quot;: &quot;A String&quot;, # Optional. The ID of the Google Cloud Platform project that the job belongs to. If specified, must match the request project ID.
    },
    &quot;scheduling&quot;: { # Job scheduling options. # Optional. Job scheduling configuration.
      &quot;maxFailuresPerHour&quot;: 42, # Optional. Maximum number of times per hour a driver may be restarted as a result of driver terminating with non-zero code before job is reported failed.A job may be reported as thrashing if driver exits with non-zero code 4 times within 10 minute window.Maximum value is 10.
      &quot;maxFailuresTotal&quot;: 42, # Optional. Maximum number of times in total a driver may be restarted as a result of driver exiting with non-zero code before job is reported failed. Maximum value is 240
    },
    &quot;sparkJob&quot;: { # A Dataproc job for running Apache Spark (http://spark.apache.org/) applications on YARN. The specification of the main method to call to drive the job. Specify either the jar file that contains the main class or the main class name. To pass both a main jar and a main class in that jar, add the jar to CommonJob.jar_file_uris, and then specify the main class name in main_class. # Optional. Job is a Spark job.
      &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
        &quot;A String&quot;,
      ],
      &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
        &quot;A String&quot;,
      ],
      &quot;fileUris&quot;: [ # Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.
        &quot;A String&quot;,
      ],
      &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks.
        &quot;A String&quot;,
      ],
      &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;mainClass&quot;: &quot;A String&quot;, # The name of the driver&#x27;s main class. The jar file that contains the class must be in the default CLASSPATH or specified in jar_file_uris.
      &quot;mainJarFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the jar file that contains the main class.
      &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Spark. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;sparkRJob&quot;: { # A Dataproc job for running Apache SparkR (https://spark.apache.org/docs/latest/sparkr.html) applications on YARN. # Optional. Job is a SparkR job.
      &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
        &quot;A String&quot;,
      ],
      &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
        &quot;A String&quot;,
      ],
      &quot;fileUris&quot;: [ # Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.
        &quot;A String&quot;,
      ],
      &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;mainRFileUri&quot;: &quot;A String&quot;, # Required. The HCFS URI of the main R file to use as the driver. Must be a .R file.
      &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure SparkR. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;sparkSqlJob&quot;: { # A Dataproc job for running Apache Spark SQL (http://spark.apache.org/sql/) queries. # Optional. Job is a SparkSql job.
      &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH.
        &quot;A String&quot;,
      ],
      &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Spark SQL&#x27;s SparkConf. Properties that conflict with values set by the Dataproc API may be overwritten.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains SQL queries.
      &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
        &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
          &quot;A String&quot;,
        ],
      },
      &quot;scriptVariables&quot;: { # Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name=&quot;value&quot;;).
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;status&quot;: { # Dataproc job status. # Output only. The job status. Additional application-specific status information may be contained in the type_job and yarn_applications fields.
      &quot;details&quot;: &quot;A String&quot;, # Output only. Optional Job state details, such as an error description if the state is ERROR.
      &quot;state&quot;: &quot;A String&quot;, # Output only. A state message specifying the overall job state.
      &quot;stateStartTime&quot;: &quot;A String&quot;, # Output only. The time when this state was entered.
      &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information, which includes status reported by the agent.
    },
    &quot;statusHistory&quot;: [ # Output only. The previous job status.
      { # Dataproc job status.
        &quot;details&quot;: &quot;A String&quot;, # Output only. Optional Job state details, such as an error description if the state is ERROR.
        &quot;state&quot;: &quot;A String&quot;, # Output only. A state message specifying the overall job state.
        &quot;stateStartTime&quot;: &quot;A String&quot;, # Output only. The time when this state was entered.
        &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information, which includes status reported by the agent.
      },
    ],
    &quot;submittedBy&quot;: &quot;A String&quot;, # Output only. The email address of the user submitting the job. For jobs submitted on the cluster, the address is username@hostname.
    &quot;yarnApplications&quot;: [ # Output only. The collection of YARN applications spun up by this job.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
      { # A YARN application created by a job. Application information is a subset of org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
        &quot;name&quot;: &quot;A String&quot;, # Output only. The application name.
        &quot;progress&quot;: 3.14, # Output only. The numerical progress of the application, from 1 to 100.
        &quot;state&quot;: &quot;A String&quot;, # Output only. The application state.
        &quot;trackingUrl&quot;: &quot;A String&quot;, # Output only. The HTTP URL of the ApplicationMaster, HistoryServer, or TimelineServer that provides application-specific information. The URL uses the internal hostname, and requires a proxy server for resolution and, possibly, access.
      },
    ],
  },
  &quot;requestId&quot;: &quot;A String&quot;, # Optional. A unique id used to identify the request. If the server receives two SubmitJobRequest requests with the same id, then the second request will be ignored and the first Job created and stored in the backend is returned.It is recommended to always set this value to a UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier).The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A Dataproc job resource.
  &quot;done&quot;: True or False, # Output only. Indicates whether the job is completed. If the value is false, the job is still in progress. If true, the job is completed, and status.state field will indicate if it was successful, failed, or cancelled.
  &quot;driverControlFilesUri&quot;: &quot;A String&quot;, # Output only. If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as driver_output_uri.
  &quot;driverOutputResourceUri&quot;: &quot;A String&quot;, # Output only. A URI pointing to the location of the stdout of the job&#x27;s driver program.
  &quot;hadoopJob&quot;: { # A Dataproc job for running Apache Hadoop MapReduce (https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) jobs on Apache Hadoop YARN (https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/YARN.html). # Optional. Job is a Hadoop job.
    &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted in the working directory of Hadoop drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, or .zip.
      &quot;A String&quot;,
    ],
    &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as -libjars or -Dfoo=bar, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
      &quot;A String&quot;,
    ],
    &quot;fileUris&quot;: [ # Optional. HCFS (Hadoop Compatible Filesystem) URIs of files to be copied to the working directory of Hadoop drivers and distributed tasks. Useful for naively parallel tasks.
      &quot;A String&quot;,
    ],
    &quot;jarFileUris&quot;: [ # Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;mainClass&quot;: &quot;A String&quot;, # The name of the driver&#x27;s main class. The jar file containing the class must be in the default CLASSPATH or specified in jar_file_uris.
    &quot;mainJarFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the jar file containing the main class. Examples: &#x27;gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar&#x27; &#x27;hdfs:/tmp/test-samples/custom-wordcount.jar&#x27; &#x27;file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar&#x27;
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;hiveJob&quot;: { # A Dataproc job for running Apache Hive (https://hive.apache.org/) queries on YARN. # Optional. Job is a Hive job.
    &quot;continueOnFailure&quot;: True or False, # Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.
    &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATH of the Hive server and Hadoop MapReduce (MR) tasks. Can contain Hive SerDes and UDFs.
      &quot;A String&quot;,
    ],
    &quot;properties&quot;: { # Optional. A mapping of property names and values, used to configure Hive. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/hive/conf/hive-site.xml, and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains Hive queries.
    &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
      &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
        &quot;A String&quot;,
      ],
    },
    &quot;scriptVariables&quot;: { # Optional. Mapping of query variable names to values (equivalent to the Hive command: SET name=&quot;value&quot;;).
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;jobUuid&quot;: &quot;A String&quot;, # Output only. A UUID that uniquely identifies a job within the project over time. This is in contrast to a user-settable reference.job_id that may be reused over time.
  &quot;labels&quot;: { # Optional. The labels to associate with this job. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a job.
    &quot;a_key&quot;: &quot;A String&quot;,
  },
  &quot;pigJob&quot;: { # A Dataproc job for running Apache Pig (https://pig.apache.org/) queries on YARN. # Optional. Job is a Pig job.
    &quot;continueOnFailure&quot;: True or False, # Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.
    &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/pig/conf/pig.properties, and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains the Pig queries.
    &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
      &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
        &quot;A String&quot;,
      ],
    },
    &quot;scriptVariables&quot;: { # Optional. Mapping of query variable names to values (equivalent to the Pig command: name=[value]).
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;placement&quot;: { # Dataproc job config. # Required. Job information, including how, when, and where to run the job.
    &quot;clusterName&quot;: &quot;A String&quot;, # Required. The name of the cluster where the job will be submitted.
    &quot;clusterUuid&quot;: &quot;A String&quot;, # Output only. A cluster UUID generated by the Dataproc service when the job is submitted.
  },
  &quot;prestoJob&quot;: { # A Dataproc job for running Presto (https://prestosql.io/) queries. IMPORTANT: The Dataproc Presto Optional Component (https://cloud.google.com/dataproc/docs/concepts/components/presto) must be enabled when the cluster is created to submit a Presto job to the cluster. # Optional. Job is a Presto job.
    &quot;clientTags&quot;: [ # Optional. Presto client tags to attach to this query
      &quot;A String&quot;,
    ],
    &quot;continueOnFailure&quot;: True or False, # Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;outputFormat&quot;: &quot;A String&quot;, # Optional. The format in which query output will be displayed. See the Presto documentation for supported output formats
    &quot;properties&quot;: { # Optional. A mapping of property names to values. Used to set Presto session properties (https://prestodb.io/docs/current/sql/set-session.html) Equivalent to using the --session flag in the Presto CLI
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains SQL queries.
    &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
      &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
        &quot;A String&quot;,
      ],
    },
  },
  &quot;pysparkJob&quot;: { # A Dataproc job for running Apache PySpark (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN. # Optional. Job is a PySpark job.
    &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
      &quot;A String&quot;,
    ],
    &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
      &quot;A String&quot;,
    ],
    &quot;fileUris&quot;: [ # Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.
      &quot;A String&quot;,
    ],
    &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;mainPythonFileUri&quot;: &quot;A String&quot;, # Required. The HCFS URI of the main Python file to use as the driver. Must be a .py file.
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;pythonFileUris&quot;: [ # Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip.
      &quot;A String&quot;,
    ],
  },
  &quot;reference&quot;: { # Encapsulates the full scoping used to reference a job. # Optional. The fully qualified reference to the job, which can be used to obtain the equivalent REST path of the job resource. If this property is not specified when a job is created, the server generates a job_id.
    &quot;jobId&quot;: &quot;A String&quot;, # Optional. The job ID, which must be unique within the project. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 100 characters.If not specified by the caller, the job ID will be provided by the server.
    &quot;projectId&quot;: &quot;A String&quot;, # Optional. The ID of the Google Cloud Platform project that the job belongs to. If specified, must match the request project ID.
  },
  &quot;scheduling&quot;: { # Job scheduling options. # Optional. Job scheduling configuration.
    &quot;maxFailuresPerHour&quot;: 42, # Optional. Maximum number of times per hour a driver may be restarted as a result of driver terminating with non-zero code before job is reported failed.A job may be reported as thrashing if driver exits with non-zero code 4 times within 10 minute window.Maximum value is 10.
    &quot;maxFailuresTotal&quot;: 42, # Optional. Maximum number of times in total a driver may be restarted as a result of driver exiting with non-zero code before job is reported failed. Maximum value is 240
  },
  &quot;sparkJob&quot;: { # A Dataproc job for running Apache Spark (http://spark.apache.org/) applications on YARN. The specification of the main method to call to drive the job. Specify either the jar file that contains the main class or the main class name. To pass both a main jar and a main class in that jar, add the jar to CommonJob.jar_file_uris, and then specify the main class name in main_class. # Optional. Job is a Spark job.
    &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
      &quot;A String&quot;,
    ],
    &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
      &quot;A String&quot;,
    ],
    &quot;fileUris&quot;: [ # Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.
      &quot;A String&quot;,
    ],
    &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;mainClass&quot;: &quot;A String&quot;, # The name of the driver&#x27;s main class. The jar file that contains the class must be in the default CLASSPATH or specified in jar_file_uris.
    &quot;mainJarFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the jar file that contains the main class.
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Spark. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;sparkRJob&quot;: { # A Dataproc job for running Apache SparkR (https://spark.apache.org/docs/latest/sparkr.html) applications on YARN. # Optional. Job is a SparkR job.
    &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
      &quot;A String&quot;,
    ],
    &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
      &quot;A String&quot;,
    ],
    &quot;fileUris&quot;: [ # Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;mainRFileUri&quot;: &quot;A String&quot;, # Required. The HCFS URI of the main R file to use as the driver. Must be a .R file.
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure SparkR. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;sparkSqlJob&quot;: { # A Dataproc job for running Apache Spark SQL (http://spark.apache.org/sql/) queries. # Optional. Job is a SparkSql job.
    &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH.
      &quot;A String&quot;,
    ],
    &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Spark SQL&#x27;s SparkConf. Properties that conflict with values set by the Dataproc API may be overwritten.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains SQL queries.
    &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
      &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
        &quot;A String&quot;,
      ],
    },
    &quot;scriptVariables&quot;: { # Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name=&quot;value&quot;;).
      &quot;a_key&quot;: &quot;A String&quot;,
    },
  },
  &quot;status&quot;: { # Dataproc job status. # Output only. The job status. Additional application-specific status information may be contained in the type_job and yarn_applications fields.
    &quot;details&quot;: &quot;A String&quot;, # Output only. Optional Job state details, such as an error description if the state is ERROR.
    &quot;state&quot;: &quot;A String&quot;, # Output only. A state message specifying the overall job state.
    &quot;stateStartTime&quot;: &quot;A String&quot;, # Output only. The time when this state was entered.
    &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information, which includes status reported by the agent.
  },
  &quot;statusHistory&quot;: [ # Output only. The previous job status.
    { # Dataproc job status.
      &quot;details&quot;: &quot;A String&quot;, # Output only. Optional Job state details, such as an error description if the state is ERROR.
      &quot;state&quot;: &quot;A String&quot;, # Output only. A state message specifying the overall job state.
      &quot;stateStartTime&quot;: &quot;A String&quot;, # Output only. The time when this state was entered.
      &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information, which includes status reported by the agent.
    },
  ],
  &quot;submittedBy&quot;: &quot;A String&quot;, # Output only. The email address of the user submitting the job. For jobs submitted on the cluster, the address is username@hostname.
  &quot;yarnApplications&quot;: [ # Output only. The collection of YARN applications spun up by this job.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
    { # A YARN application created by a job. Application information is a subset of org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The application name.
      &quot;progress&quot;: 3.14, # Output only. The numerical progress of the application, from 1 to 100.
      &quot;state&quot;: &quot;A String&quot;, # Output only. The application state.
      &quot;trackingUrl&quot;: &quot;A String&quot;, # Output only. The HTTP URL of the ApplicationMaster, HistoryServer, or TimelineServer that provides application-specific information. The URL uses the internal hostname, and requires a proxy server for resolution and, possibly, access.
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="submitAsOperation">submitAsOperation(projectId, region, body=None, x__xgafv=None)</code>
  <pre>Submits job to a cluster.

Args:
  projectId: string, Required. The ID of the Google Cloud Platform project that the job belongs to. (required)
  region: string, Required. The Dataproc region in which to handle the request. (required)
  body: object, The request body.
    The object takes the form of:

{ # A request to submit a job.
  &quot;job&quot;: { # A Dataproc job resource. # Required. The job resource.
    &quot;done&quot;: True or False, # Output only. Indicates whether the job is completed. If the value is false, the job is still in progress. If true, the job is completed, and status.state field will indicate if it was successful, failed, or cancelled.
    &quot;driverControlFilesUri&quot;: &quot;A String&quot;, # Output only. If present, the location of miscellaneous control files which may be used as part of job setup and handling. If not present, control files may be placed in the same location as driver_output_uri.
    &quot;driverOutputResourceUri&quot;: &quot;A String&quot;, # Output only. A URI pointing to the location of the stdout of the job&#x27;s driver program.
    &quot;hadoopJob&quot;: { # A Dataproc job for running Apache Hadoop MapReduce (https://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html) jobs on Apache Hadoop YARN (https://hadoop.apache.org/docs/r2.7.1/hadoop-yarn/hadoop-yarn-site/YARN.html). # Optional. Job is a Hadoop job.
      &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted in the working directory of Hadoop drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, or .zip.
        &quot;A String&quot;,
      ],
      &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as -libjars or -Dfoo=bar, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
        &quot;A String&quot;,
      ],
      &quot;fileUris&quot;: [ # Optional. HCFS (Hadoop Compatible Filesystem) URIs of files to be copied to the working directory of Hadoop drivers and distributed tasks. Useful for naively parallel tasks.
        &quot;A String&quot;,
      ],
      &quot;jarFileUris&quot;: [ # Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.
        &quot;A String&quot;,
      ],
      &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;mainClass&quot;: &quot;A String&quot;, # The name of the driver&#x27;s main class. The jar file containing the class must be in the default CLASSPATH or specified in jar_file_uris.
      &quot;mainJarFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the jar file containing the main class. Examples: &#x27;gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar&#x27; &#x27;hdfs:/tmp/test-samples/custom-wordcount.jar&#x27; &#x27;file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar&#x27;
      &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;hiveJob&quot;: { # A Dataproc job for running Apache Hive (https://hive.apache.org/) queries on YARN. # Optional. Job is a Hive job.
      &quot;continueOnFailure&quot;: True or False, # Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.
      &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATH of the Hive server and Hadoop MapReduce (MR) tasks. Can contain Hive SerDes and UDFs.
        &quot;A String&quot;,
      ],
      &quot;properties&quot;: { # Optional. A mapping of property names and values, used to configure Hive. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/hive/conf/hive-site.xml, and classes in user code.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains Hive queries.
      &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
        &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
          &quot;A String&quot;,
        ],
      },
      &quot;scriptVariables&quot;: { # Optional. Mapping of query variable names to values (equivalent to the Hive command: SET name=&quot;value&quot;;).
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;jobUuid&quot;: &quot;A String&quot;, # Output only. A UUID that uniquely identifies a job within the project over time. This is in contrast to a user-settable reference.job_id that may be reused over time.
    &quot;labels&quot;: { # Optional. The labels to associate with this job. Label keys must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). Label values may be empty, but, if present, must contain 1 to 63 characters, and must conform to RFC 1035 (https://www.ietf.org/rfc/rfc1035.txt). No more than 32 labels can be associated with a job.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;pigJob&quot;: { # A Dataproc job for running Apache Pig (https://pig.apache.org/) queries on YARN. # Optional. Job is a Pig job.
      &quot;continueOnFailure&quot;: True or False, # Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.
      &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs.
        &quot;A String&quot;,
      ],
      &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site.xml, /etc/pig/conf/pig.properties, and classes in user code.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains the Pig queries.
      &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
        &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
          &quot;A String&quot;,
        ],
      },
      &quot;scriptVariables&quot;: { # Optional. Mapping of query variable names to values (equivalent to the Pig command: name=[value]).
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;placement&quot;: { # Dataproc job config. # Required. Job information, including how, when, and where to run the job.
      &quot;clusterName&quot;: &quot;A String&quot;, # Required. The name of the cluster where the job will be submitted.
      &quot;clusterUuid&quot;: &quot;A String&quot;, # Output only. A cluster UUID generated by the Dataproc service when the job is submitted.
    },
    &quot;prestoJob&quot;: { # A Dataproc job for running Presto (https://prestosql.io/) queries. IMPORTANT: The Dataproc Presto Optional Component (https://cloud.google.com/dataproc/docs/concepts/components/presto) must be enabled when the cluster is created to submit a Presto job to the cluster. # Optional. Job is a Presto job.
      &quot;clientTags&quot;: [ # Optional. Presto client tags to attach to this query
        &quot;A String&quot;,
      ],
      &quot;continueOnFailure&quot;: True or False, # Optional. Whether to continue executing queries if a query fails. The default value is false. Setting to true can be useful when executing independent parallel queries.
      &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;outputFormat&quot;: &quot;A String&quot;, # Optional. The format in which query output will be displayed. See the Presto documentation for supported output formats
      &quot;properties&quot;: { # Optional. A mapping of property names to values. Used to set Presto session properties (https://prestodb.io/docs/current/sql/set-session.html) Equivalent to using the --session flag in the Presto CLI
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains SQL queries.
      &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
        &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
          &quot;A String&quot;,
        ],
      },
    },
    &quot;pysparkJob&quot;: { # A Dataproc job for running Apache PySpark (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN. # Optional. Job is a PySpark job.
      &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
        &quot;A String&quot;,
      ],
      &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
        &quot;A String&quot;,
      ],
      &quot;fileUris&quot;: [ # Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.
        &quot;A String&quot;,
      ],
      &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks.
        &quot;A String&quot;,
      ],
      &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;mainPythonFileUri&quot;: &quot;A String&quot;, # Required. The HCFS URI of the main Python file to use as the driver. Must be a .py file.
      &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;pythonFileUris&quot;: [ # Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip.
        &quot;A String&quot;,
      ],
    },
    &quot;reference&quot;: { # Encapsulates the full scoping used to reference a job. # Optional. The fully qualified reference to the job, which can be used to obtain the equivalent REST path of the job resource. If this property is not specified when a job is created, the server generates a job_id.
      &quot;jobId&quot;: &quot;A String&quot;, # Optional. The job ID, which must be unique within the project. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or hyphens (-). The maximum length is 100 characters.If not specified by the caller, the job ID will be provided by the server.
      &quot;projectId&quot;: &quot;A String&quot;, # Optional. The ID of the Google Cloud Platform project that the job belongs to. If specified, must match the request project ID.
    },
    &quot;scheduling&quot;: { # Job scheduling options. # Optional. Job scheduling configuration.
      &quot;maxFailuresPerHour&quot;: 42, # Optional. Maximum number of times per hour a driver may be restarted as a result of driver terminating with non-zero code before job is reported failed.A job may be reported as thrashing if driver exits with non-zero code 4 times within 10 minute window.Maximum value is 10.
      &quot;maxFailuresTotal&quot;: 42, # Optional. Maximum number of times in total a driver may be restarted as a result of driver exiting with non-zero code before job is reported failed. Maximum value is 240
    },
    &quot;sparkJob&quot;: { # A Dataproc job for running Apache Spark (http://spark.apache.org/) applications on YARN. The specification of the main method to call to drive the job. Specify either the jar file that contains the main class or the main class name. To pass both a main jar and a main class in that jar, add the jar to CommonJob.jar_file_uris, and then specify the main class name in main_class. # Optional. Job is a Spark job.
      &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
        &quot;A String&quot;,
      ],
      &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
        &quot;A String&quot;,
      ],
      &quot;fileUris&quot;: [ # Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.
        &quot;A String&quot;,
      ],
      &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks.
        &quot;A String&quot;,
      ],
      &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;mainClass&quot;: &quot;A String&quot;, # The name of the driver&#x27;s main class. The jar file that contains the class must be in the default CLASSPATH or specified in jar_file_uris.
      &quot;mainJarFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the jar file that contains the main class.
      &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Spark. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;sparkRJob&quot;: { # A Dataproc job for running Apache SparkR (https://spark.apache.org/docs/latest/sparkr.html) applications on YARN. # Optional. Job is a SparkR job.
      &quot;archiveUris&quot;: [ # Optional. HCFS URIs of archives to be extracted into the working directory of each executor. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
        &quot;A String&quot;,
      ],
      &quot;args&quot;: [ # Optional. The arguments to pass to the driver. Do not include arguments, such as --conf, that can be set as job properties, since a collision may occur that causes an incorrect job submission.
        &quot;A String&quot;,
      ],
      &quot;fileUris&quot;: [ # Optional. HCFS URIs of files to be placed in the working directory of each executor. Useful for naively parallel tasks.
        &quot;A String&quot;,
      ],
      &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;mainRFileUri&quot;: &quot;A String&quot;, # Required. The HCFS URI of the main R file to use as the driver. Must be a .R file.
      &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure SparkR. Properties that conflict with values set by the Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;sparkSqlJob&quot;: { # A Dataproc job for running Apache Spark SQL (http://spark.apache.org/sql/) queries. # Optional. Job is a SparkSql job.
      &quot;jarFileUris&quot;: [ # Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH.
        &quot;A String&quot;,
      ],
      &quot;loggingConfig&quot;: { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        &quot;driverLogLevels&quot;: { # The per-package log levels for the driver. This may include &quot;root&quot; package name to configure rootLogger. Examples: &#x27;com.google = FATAL&#x27;, &#x27;root = INFO&#x27;, &#x27;org.apache = DEBUG&#x27;
          &quot;a_key&quot;: &quot;A String&quot;,
        },
      },
      &quot;properties&quot;: { # Optional. A mapping of property names to values, used to configure Spark SQL&#x27;s SparkConf. Properties that conflict with values set by the Dataproc API may be overwritten.
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;queryFileUri&quot;: &quot;A String&quot;, # The HCFS URI of the script that contains SQL queries.
      &quot;queryList&quot;: { # A list of queries to run on a cluster. # A list of queries.
        &quot;queries&quot;: [ # Required. The queries to execute. You do not need to end a query expression with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of a Dataproc API snippet that uses a QueryList to specify a HiveJob: &quot;hiveJob&quot;: { &quot;queryList&quot;: { &quot;queries&quot;: [ &quot;query1&quot;, &quot;query2&quot;, &quot;query3;query4&quot;, ] } }
          &quot;A String&quot;,
        ],
      },
      &quot;scriptVariables&quot;: { # Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name=&quot;value&quot;;).
        &quot;a_key&quot;: &quot;A String&quot;,
      },
    },
    &quot;status&quot;: { # Dataproc job status. # Output only. The job status. Additional application-specific status information may be contained in the type_job and yarn_applications fields.
      &quot;details&quot;: &quot;A String&quot;, # Output only. Optional Job state details, such as an error description if the state is ERROR.
      &quot;state&quot;: &quot;A String&quot;, # Output only. A state message specifying the overall job state.
      &quot;stateStartTime&quot;: &quot;A String&quot;, # Output only. The time when this state was entered.
      &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information, which includes status reported by the agent.
    },
    &quot;statusHistory&quot;: [ # Output only. The previous job status.
      { # Dataproc job status.
        &quot;details&quot;: &quot;A String&quot;, # Output only. Optional Job state details, such as an error description if the state is ERROR.
        &quot;state&quot;: &quot;A String&quot;, # Output only. A state message specifying the overall job state.
        &quot;stateStartTime&quot;: &quot;A String&quot;, # Output only. The time when this state was entered.
        &quot;substate&quot;: &quot;A String&quot;, # Output only. Additional state information, which includes status reported by the agent.
      },
    ],
    &quot;submittedBy&quot;: &quot;A String&quot;, # Output only. The email address of the user submitting the job. For jobs submitted on the cluster, the address is username@hostname.
    &quot;yarnApplications&quot;: [ # Output only. The collection of YARN applications spun up by this job.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
      { # A YARN application created by a job. Application information is a subset of org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
        &quot;name&quot;: &quot;A String&quot;, # Output only. The application name.
        &quot;progress&quot;: 3.14, # Output only. The numerical progress of the application, from 1 to 100.
        &quot;state&quot;: &quot;A String&quot;, # Output only. The application state.
        &quot;trackingUrl&quot;: &quot;A String&quot;, # Output only. The HTTP URL of the ApplicationMaster, HistoryServer, or TimelineServer that provides application-specific information. The URL uses the internal hostname, and requires a proxy server for resolution and, possibly, access.
      },
    ],
  },
  &quot;requestId&quot;: &quot;A String&quot;, # Optional. A unique id used to identify the request. If the server receives two SubmitJobRequest requests with the same id, then the second request will be ignored and the first Job created and stored in the backend is returned.It is recommended to always set this value to a UUID (https://en.wikipedia.org/wiki/Universally_unique_identifier).The id must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), and hyphens (-). The maximum length is 40 characters.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is false, it means the operation is still in progress. If true, the operation is completed, and either error or response is available.
  &quot;error&quot;: { # The Status type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by gRPC (https://github.com/grpc). Each Status message contains three pieces of data: error code, error message, and error details.You can find out more about this error model and how to work with it in the API Design Guide (https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the name should be a resource name ending with operations/{unique_id}.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as Delete, the response is google.protobuf.Empty. If the original method is standard Get/Create/Update, the response should be the resource. For other methods, the response should have the type XxxResponse, where Xxx is the original method name. For example, if the original method name is TakeSnapshot(), the inferred response type is TakeSnapshotResponse.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="testIamPermissions">testIamPermissions(resource, body=None, x__xgafv=None)</code>
  <pre>Returns permissions that a caller has on the specified resource. If the resource does not exist, this will return an empty set of permissions, not a NOT_FOUND error.Note: This operation is designed to be used for building permission-aware UIs and command-line tools, not for authorization checking. This operation may &quot;fail open&quot; without warning.

Args:
  resource: string, REQUIRED: The resource for which the policy detail is being requested. See the operation documentation for the appropriate value for this field. (required)
  body: object, The request body.
    The object takes the form of:

{ # Request message for TestIamPermissions method.
  &quot;permissions&quot;: [ # The set of permissions to check for the resource. Permissions with wildcards (such as &#x27;*&#x27; or &#x27;storage.*&#x27;) are not allowed. For more information see IAM Overview (https://cloud.google.com/iam/docs/overview#permissions).
    &quot;A String&quot;,
  ],
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response message for TestIamPermissions method.
  &quot;permissions&quot;: [ # A subset of TestPermissionsRequest.permissions that the caller is allowed.
    &quot;A String&quot;,
  ],
}</pre>
</div>

</body></html>