<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_v1.html">Cloud Dataproc API</a> . <a href="dataproc_v1.projects.html">projects</a> . <a href="dataproc_v1.projects.regions.html">regions</a> . <a href="dataproc_v1.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/v1/projects.regions.jobs/list) or regions/{region}/jobs.get (https://cloud.google.com/dataproc/docs/reference/rest/v1/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, body=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/v1/projects.regions.jobs/list) or regions/{region}/jobs.get (https://cloud.google.com/dataproc/docs/reference/rest/v1/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 exiting 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. # 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;, # Optional. Output only. 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;, # Optional. Output only. 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;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;, # Required. The application name.
      &quot;progress&quot;: 3.14, # Required. The numerical progress of the application, from 1 to 100.
      &quot;state&quot;: &quot;A String&quot;, # Required. The application state.
      &quot;trackingUrl&quot;: &quot;A String&quot;, # Optional. 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 exiting 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. # 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;, # Optional. Output only. 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;, # Optional. Output only. 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;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;, # Required. The application name.
      &quot;progress&quot;: 3.14, # Required. The numerical progress of the application, from 1 to 100.
      &quot;state&quot;: &quot;A String&quot;, # Required. The application state.
      &quot;trackingUrl&quot;: &quot;A String&quot;, # Optional. 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, body=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)
  body: object, The request body.
    The object takes the form of:

{ # Request message for GetIamPolicy method.
  &quot;options&quot;: { # Encapsulates settings provided to GetIamPolicy. # OPTIONAL: A GetPolicyOptions object for specifying options to GetIamPolicy.
    &quot;requestedPolicyVersion&quot;: 42, # 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 exiting 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. # 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;, # Optional. Output only. 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;, # Optional. Output only. 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;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;, # Required. The application name.
          &quot;progress&quot;: 3.14, # Required. The numerical progress of the application, from 1 to 100.
          &quot;state&quot;: &quot;A String&quot;, # Required. The application state.
          &quot;trackingUrl&quot;: &quot;A String&quot;, # Optional. 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 exiting 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. # 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;, # Optional. Output only. 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;, # Optional. Output only. 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;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;, # Required. The application name.
      &quot;progress&quot;: 3.14, # Required. The numerical progress of the application, from 1 to 100.
      &quot;state&quot;: &quot;A String&quot;, # Required. The application state.
      &quot;trackingUrl&quot;: &quot;A String&quot;, # Optional. 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 exiting 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. # 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;, # Optional. Output only. 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;, # Optional. Output only. 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;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;, # Required. The application name.
      &quot;progress&quot;: 3.14, # Required. The numerical progress of the application, from 1 to 100.
      &quot;state&quot;: &quot;A String&quot;, # Required. The application state.
      &quot;trackingUrl&quot;: &quot;A String&quot;, # Optional. 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 exiting 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. # 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;, # Optional. Output only. 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;, # Optional. Output only. 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;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;, # Required. The application name.
        &quot;progress&quot;: 3.14, # Required. The numerical progress of the application, from 1 to 100.
        &quot;state&quot;: &quot;A String&quot;, # Required. The application state.
        &quot;trackingUrl&quot;: &quot;A String&quot;, # Optional. 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 exiting 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. # 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;, # Optional. Output only. 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;, # Optional. Output only. 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;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;, # Required. The application name.
      &quot;progress&quot;: 3.14, # Required. The numerical progress of the application, from 1 to 100.
      &quot;state&quot;: &quot;A String&quot;, # Required. The application state.
      &quot;trackingUrl&quot;: &quot;A String&quot;, # Optional. 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 exiting 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. # 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;, # Optional. Output only. 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;, # Optional. Output only. 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;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;, # Required. The application name.
        &quot;progress&quot;: 3.14, # Required. The numerical progress of the application, from 1 to 100.
        &quot;state&quot;: &quot;A String&quot;, # Required. The application state.
        &quot;trackingUrl&quot;: &quot;A String&quot;, # Optional. 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>