<html><body>
<style>

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

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

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

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

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

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

pre {
  margin-top: 0.5em;
}

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

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

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

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

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

</style>

<h1><a href="dataproc_v1beta2.html">Cloud Dataproc API</a> . <a href="dataproc_v1beta2.projects.html">projects</a> . <a href="dataproc_v1beta2.projects.regions.html">regions</a> . <a href="dataproc_v1beta2.projects.regions.jobs.html">jobs</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#cancel">cancel(projectId, region, jobId, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Starts a job cancellation request. To access the job resource after cancellation, call regions/{region}/jobs.list or regions/{region}/jobs.get.</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, 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, pageSize=None, x__xgafv=None, jobStateMatcher=None, pageToken=None, clusterName=None, filter=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, 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, x__xgafv=None)</a></code></p>
<p class="firstline">Sets the access control policy on the specified resource. Replaces any existing policy.</p>
<p class="toc_element">
  <code><a href="#submit">submit(projectId, region, body, x__xgafv=None)</a></code></p>
<p class="firstline">Submits a job to a cluster.</p>
<p class="toc_element">
  <code><a href="#testIamPermissions">testIamPermissions(resource, body, 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 or regions/{region}/jobs.get.

Args:
  projectId: string, Required. The ID of the Google Cloud Platform project that the job belongs to. (required)
  region: string, Required. The Cloud 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 Cloud Dataproc job resource.
    "status": { # Cloud Dataproc job status. # Output only. The job status. Additional application-specific status information may be contained in the <code>type_job</code> and <code>yarn_applications</code> fields.
      "state": "A String", # Output only. A state message specifying the overall job state.
      "stateStartTime": "A String", # Output only. The time when this state was entered.
      "substate": "A String", # Output only. Additional state information, which includes status reported by the agent.
      "details": "A String", # Output only. Optional job state details, such as an error description if the state is <code>ERROR</code>.
    },
    "hadoopJob": { # A Cloud 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). # Job is a Hadoop job.
      "args": [ # 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.
        "A String",
      ],
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "jarFileUris": [ # Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.
        "A String",
      ],
      "fileUris": [ # 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.
        "A String",
      ],
      "mainClass": "A String", # The name of the driver's main class. The jar file containing the class must be in the default CLASSPATH or specified in jar_file_uris.
      "archiveUris": [ # 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.
        "A String",
      ],
      "mainJarFileUri": "A String", # The HCFS URI of the jar file containing the main class. Examples:  'gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar'  'hdfs:/tmp/test-samples/custom-wordcount.jar'  'file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar'
      "properties": { # Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code.
        "a_key": "A String",
      },
    },
    "pigJob": { # A Cloud Dataproc job for running Apache Pig (https://pig.apache.org/) queries on YARN. # Job is a Pig job.
      "queryFileUri": "A String", # The HCFS URI of the script that contains the Pig queries.
      "scriptVariables": { # Optional. Mapping of query variable names to values (equivalent to the Pig command: name=[value]).
        "a_key": "A String",
      },
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "jarFileUris": [ # Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs.
        "A String",
      ],
      "queryList": { # A list of queries to run on a cluster. # A list of queries.
        "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
            # "hiveJob": {
            #   "queryList": {
            #     "queries": [
            #       "query1",
            #       "query2",
            #       "query3;query4",
            #     ]
            #   }
            # }
          "A String",
        ],
      },
      "continueOnFailure": 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.
      "properties": { # Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Cloud 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.
        "a_key": "A String",
      },
    },
    "placement": { # Cloud Dataproc job config. # Required. Job information, including how, when, and where to run the job.
      "clusterName": "A String", # Required. The name of the cluster where the job will be submitted.
      "clusterUuid": "A String", # Output only. A cluster UUID generated by the Cloud Dataproc service when the job is submitted.
    },
    "sparkRJob": { # A Cloud Dataproc job for running Apache SparkR (https://spark.apache.org/docs/latest/sparkr.html) applications on YARN. # Job is a SparkR job.
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "args": [ # 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.
        "A String",
      ],
      "mainRFileUri": "A String", # Required. The HCFS URI of the main R file to use as the driver. Must be a .R file.
      "fileUris": [ # Optional. HCFS URIs of files to be copied to the working directory of R drivers and distributed tasks. Useful for naively parallel tasks.
        "A String",
      ],
      "archiveUris": [ # Optional. HCFS URIs of archives to be extracted in the working directory of Spark drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
        "A String",
      ],
      "properties": { # Optional. A mapping of property names to values, used to configure SparkR. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
        "a_key": "A String",
      },
    },
    "reference": { # 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 <code>job_id</code>.
      "projectId": "A String", # Required. The ID of the Google Cloud Platform project that the job belongs to.
      "jobId": "A String", # 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.
    },
    "sparkSqlJob": { # A Cloud Dataproc job for running Apache Spark SQL (http://spark.apache.org/sql/) queries. # Job is a SparkSql job.
      "queryFileUri": "A String", # The HCFS URI of the script that contains SQL queries.
      "scriptVariables": { # Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name="value";).
        "a_key": "A String",
      },
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "jarFileUris": [ # Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH.
        "A String",
      ],
      "queryList": { # A list of queries to run on a cluster. # A list of queries.
        "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
            # "hiveJob": {
            #   "queryList": {
            #     "queries": [
            #       "query1",
            #       "query2",
            #       "query3;query4",
            #     ]
            #   }
            # }
          "A String",
        ],
      },
      "properties": { # Optional. A mapping of property names to values, used to configure Spark SQL's SparkConf. Properties that conflict with values set by the Cloud Dataproc API may be overwritten.
        "a_key": "A String",
      },
    },
    "yarnApplications": [ # 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 <code>org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto</code>.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
        "progress": 3.14, # Required. The numerical progress of the application, from 1 to 100.
        "state": "A String", # Required. The application state.
        "trackingUrl": "A String", # 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.
        "name": "A String", # Required. The application name.
      },
    ],
    "submittedBy": "A String", # Output only. The email address of the user submitting the job. For jobs submitted on the cluster, the address is <code>username@hostname</code>.
    "jobUuid": "A String", # 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.
    "pysparkJob": { # A Cloud Dataproc job for running Apache PySpark (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN. # Job is a Pyspark job.
      "mainPythonFileUri": "A String", # Required. The HCFS URI of the main Python file to use as the driver. Must be a .py file.
      "jarFileUris": [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks.
        "A String",
      ],
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "args": [ # 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.
        "A String",
      ],
      "fileUris": [ # Optional. HCFS URIs of files to be copied to the working directory of Python drivers and distributed tasks. Useful for naively parallel tasks.
        "A String",
      ],
      "archiveUris": [ # Optional. HCFS URIs of archives to be extracted in the working directory of .jar, .tar, .tar.gz, .tgz, and .zip.
        "A String",
      ],
      "pythonFileUris": [ # Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip.
        "A String",
      ],
      "properties": { # Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
        "a_key": "A String",
      },
    },
    "labels": { # 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.
      "a_key": "A String",
    },
    "driverControlFilesUri": "A String", # 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.
    "sparkJob": { # A Cloud Dataproc job for running Apache Spark (http://spark.apache.org/) applications on YARN. # Job is a Spark job.
      "args": [ # 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.
        "A String",
      ],
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "jarFileUris": [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks.
        "A String",
      ],
      "fileUris": [ # Optional. HCFS URIs of files to be copied to the working directory of Spark drivers and distributed tasks. Useful for naively parallel tasks.
        "A String",
      ],
      "mainClass": "A String", # The name of the driver's main class. The jar file that contains the class must be in the default CLASSPATH or specified in jar_file_uris.
      "archiveUris": [ # Optional. HCFS URIs of archives to be extracted in the working directory of Spark drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
        "A String",
      ],
      "mainJarFileUri": "A String", # The HCFS URI of the jar file that contains the main class.
      "properties": { # Optional. A mapping of property names to values, used to configure Spark. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
        "a_key": "A String",
      },
    },
    "driverOutputResourceUri": "A String", # Output only. A URI pointing to the location of the stdout of the job's driver program.
    "prestoJob": { # A Cloud Dataproc job for running Presto (https://prestosql.io/) queries # Job is a Presto job
      "queryFileUri": "A String", # The HCFS URI of the script that contains SQL queries.
      "outputFormat": "A String", # Optional. The format in which query output will be displayed. See the Presto documentation for supported output formats
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "clientTags": [ # Optional. Presto client tags to attach to this query
        "A String",
      ],
      "queryList": { # A list of queries to run on a cluster. # A list of queries.
        "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
            # "hiveJob": {
            #   "queryList": {
            #     "queries": [
            #       "query1",
            #       "query2",
            #       "query3;query4",
            #     ]
            #   }
            # }
          "A String",
        ],
      },
      "continueOnFailure": 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.
      "properties": { # 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
        "a_key": "A String",
      },
    },
    "scheduling": { # Job scheduling options. # Optional. Job scheduling configuration.
      "maxFailuresPerHour": 42, # Optional. Maximum number of times per hour a driver may be restarted as a result of driver terminating with non-zero code before job is reported failed.A job may be reported as thrashing if driver exits with non-zero code 4 times within 10 minute window.Maximum value is 10.
    },
    "statusHistory": [ # Output only. The previous job status.
      { # Cloud Dataproc job status.
        "state": "A String", # Output only. A state message specifying the overall job state.
        "stateStartTime": "A String", # Output only. The time when this state was entered.
        "substate": "A String", # Output only. Additional state information, which includes status reported by the agent.
        "details": "A String", # Output only. Optional job state details, such as an error description if the state is <code>ERROR</code>.
      },
    ],
    "hiveJob": { # A Cloud Dataproc job for running Apache Hive (https://hive.apache.org/) queries on YARN. # Job is a Hive job.
      "queryFileUri": "A String", # The HCFS URI of the script that contains Hive queries.
      "scriptVariables": { # Optional. Mapping of query variable names to values (equivalent to the Hive command: SET name="value";).
        "a_key": "A String",
      },
      "jarFileUris": [ # 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.
        "A String",
      ],
      "queryList": { # A list of queries to run on a cluster. # A list of queries.
        "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
            # "hiveJob": {
            #   "queryList": {
            #     "queries": [
            #       "query1",
            #       "query2",
            #       "query3;query4",
            #     ]
            #   }
            # }
          "A String",
        ],
      },
      "continueOnFailure": 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.
      "properties": { # Optional. A mapping of property names and values, used to configure Hive. Properties that conflict with values set by the Cloud 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.
        "a_key": "A String",
      },
    },
  }</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 Cloud 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 Cloud 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 Cloud Dataproc job resource.
    "status": { # Cloud Dataproc job status. # Output only. The job status. Additional application-specific status information may be contained in the <code>type_job</code> and <code>yarn_applications</code> fields.
      "state": "A String", # Output only. A state message specifying the overall job state.
      "stateStartTime": "A String", # Output only. The time when this state was entered.
      "substate": "A String", # Output only. Additional state information, which includes status reported by the agent.
      "details": "A String", # Output only. Optional job state details, such as an error description if the state is <code>ERROR</code>.
    },
    "hadoopJob": { # A Cloud 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). # Job is a Hadoop job.
      "args": [ # 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.
        "A String",
      ],
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "jarFileUris": [ # Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.
        "A String",
      ],
      "fileUris": [ # 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.
        "A String",
      ],
      "mainClass": "A String", # The name of the driver's main class. The jar file containing the class must be in the default CLASSPATH or specified in jar_file_uris.
      "archiveUris": [ # 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.
        "A String",
      ],
      "mainJarFileUri": "A String", # The HCFS URI of the jar file containing the main class. Examples:  'gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar'  'hdfs:/tmp/test-samples/custom-wordcount.jar'  'file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar'
      "properties": { # Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code.
        "a_key": "A String",
      },
    },
    "pigJob": { # A Cloud Dataproc job for running Apache Pig (https://pig.apache.org/) queries on YARN. # Job is a Pig job.
      "queryFileUri": "A String", # The HCFS URI of the script that contains the Pig queries.
      "scriptVariables": { # Optional. Mapping of query variable names to values (equivalent to the Pig command: name=[value]).
        "a_key": "A String",
      },
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "jarFileUris": [ # Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs.
        "A String",
      ],
      "queryList": { # A list of queries to run on a cluster. # A list of queries.
        "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
            # "hiveJob": {
            #   "queryList": {
            #     "queries": [
            #       "query1",
            #       "query2",
            #       "query3;query4",
            #     ]
            #   }
            # }
          "A String",
        ],
      },
      "continueOnFailure": 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.
      "properties": { # Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Cloud 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.
        "a_key": "A String",
      },
    },
    "placement": { # Cloud Dataproc job config. # Required. Job information, including how, when, and where to run the job.
      "clusterName": "A String", # Required. The name of the cluster where the job will be submitted.
      "clusterUuid": "A String", # Output only. A cluster UUID generated by the Cloud Dataproc service when the job is submitted.
    },
    "sparkRJob": { # A Cloud Dataproc job for running Apache SparkR (https://spark.apache.org/docs/latest/sparkr.html) applications on YARN. # Job is a SparkR job.
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "args": [ # 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.
        "A String",
      ],
      "mainRFileUri": "A String", # Required. The HCFS URI of the main R file to use as the driver. Must be a .R file.
      "fileUris": [ # Optional. HCFS URIs of files to be copied to the working directory of R drivers and distributed tasks. Useful for naively parallel tasks.
        "A String",
      ],
      "archiveUris": [ # Optional. HCFS URIs of archives to be extracted in the working directory of Spark drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
        "A String",
      ],
      "properties": { # Optional. A mapping of property names to values, used to configure SparkR. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
        "a_key": "A String",
      },
    },
    "reference": { # 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 <code>job_id</code>.
      "projectId": "A String", # Required. The ID of the Google Cloud Platform project that the job belongs to.
      "jobId": "A String", # 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.
    },
    "sparkSqlJob": { # A Cloud Dataproc job for running Apache Spark SQL (http://spark.apache.org/sql/) queries. # Job is a SparkSql job.
      "queryFileUri": "A String", # The HCFS URI of the script that contains SQL queries.
      "scriptVariables": { # Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name="value";).
        "a_key": "A String",
      },
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "jarFileUris": [ # Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH.
        "A String",
      ],
      "queryList": { # A list of queries to run on a cluster. # A list of queries.
        "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
            # "hiveJob": {
            #   "queryList": {
            #     "queries": [
            #       "query1",
            #       "query2",
            #       "query3;query4",
            #     ]
            #   }
            # }
          "A String",
        ],
      },
      "properties": { # Optional. A mapping of property names to values, used to configure Spark SQL's SparkConf. Properties that conflict with values set by the Cloud Dataproc API may be overwritten.
        "a_key": "A String",
      },
    },
    "yarnApplications": [ # 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 <code>org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto</code>.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
        "progress": 3.14, # Required. The numerical progress of the application, from 1 to 100.
        "state": "A String", # Required. The application state.
        "trackingUrl": "A String", # 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.
        "name": "A String", # Required. The application name.
      },
    ],
    "submittedBy": "A String", # Output only. The email address of the user submitting the job. For jobs submitted on the cluster, the address is <code>username@hostname</code>.
    "jobUuid": "A String", # 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.
    "pysparkJob": { # A Cloud Dataproc job for running Apache PySpark (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN. # Job is a Pyspark job.
      "mainPythonFileUri": "A String", # Required. The HCFS URI of the main Python file to use as the driver. Must be a .py file.
      "jarFileUris": [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks.
        "A String",
      ],
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "args": [ # 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.
        "A String",
      ],
      "fileUris": [ # Optional. HCFS URIs of files to be copied to the working directory of Python drivers and distributed tasks. Useful for naively parallel tasks.
        "A String",
      ],
      "archiveUris": [ # Optional. HCFS URIs of archives to be extracted in the working directory of .jar, .tar, .tar.gz, .tgz, and .zip.
        "A String",
      ],
      "pythonFileUris": [ # Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip.
        "A String",
      ],
      "properties": { # Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
        "a_key": "A String",
      },
    },
    "labels": { # 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.
      "a_key": "A String",
    },
    "driverControlFilesUri": "A String", # 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.
    "sparkJob": { # A Cloud Dataproc job for running Apache Spark (http://spark.apache.org/) applications on YARN. # Job is a Spark job.
      "args": [ # 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.
        "A String",
      ],
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "jarFileUris": [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks.
        "A String",
      ],
      "fileUris": [ # Optional. HCFS URIs of files to be copied to the working directory of Spark drivers and distributed tasks. Useful for naively parallel tasks.
        "A String",
      ],
      "mainClass": "A String", # The name of the driver's main class. The jar file that contains the class must be in the default CLASSPATH or specified in jar_file_uris.
      "archiveUris": [ # Optional. HCFS URIs of archives to be extracted in the working directory of Spark drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
        "A String",
      ],
      "mainJarFileUri": "A String", # The HCFS URI of the jar file that contains the main class.
      "properties": { # Optional. A mapping of property names to values, used to configure Spark. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
        "a_key": "A String",
      },
    },
    "driverOutputResourceUri": "A String", # Output only. A URI pointing to the location of the stdout of the job's driver program.
    "prestoJob": { # A Cloud Dataproc job for running Presto (https://prestosql.io/) queries # Job is a Presto job
      "queryFileUri": "A String", # The HCFS URI of the script that contains SQL queries.
      "outputFormat": "A String", # Optional. The format in which query output will be displayed. See the Presto documentation for supported output formats
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "clientTags": [ # Optional. Presto client tags to attach to this query
        "A String",
      ],
      "queryList": { # A list of queries to run on a cluster. # A list of queries.
        "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
            # "hiveJob": {
            #   "queryList": {
            #     "queries": [
            #       "query1",
            #       "query2",
            #       "query3;query4",
            #     ]
            #   }
            # }
          "A String",
        ],
      },
      "continueOnFailure": 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.
      "properties": { # 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
        "a_key": "A String",
      },
    },
    "scheduling": { # Job scheduling options. # Optional. Job scheduling configuration.
      "maxFailuresPerHour": 42, # Optional. Maximum number of times per hour a driver may be restarted as a result of driver terminating with non-zero code before job is reported failed.A job may be reported as thrashing if driver exits with non-zero code 4 times within 10 minute window.Maximum value is 10.
    },
    "statusHistory": [ # Output only. The previous job status.
      { # Cloud Dataproc job status.
        "state": "A String", # Output only. A state message specifying the overall job state.
        "stateStartTime": "A String", # Output only. The time when this state was entered.
        "substate": "A String", # Output only. Additional state information, which includes status reported by the agent.
        "details": "A String", # Output only. Optional job state details, such as an error description if the state is <code>ERROR</code>.
      },
    ],
    "hiveJob": { # A Cloud Dataproc job for running Apache Hive (https://hive.apache.org/) queries on YARN. # Job is a Hive job.
      "queryFileUri": "A String", # The HCFS URI of the script that contains Hive queries.
      "scriptVariables": { # Optional. Mapping of query variable names to values (equivalent to the Hive command: SET name="value";).
        "a_key": "A String",
      },
      "jarFileUris": [ # 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.
        "A String",
      ],
      "queryList": { # A list of queries to run on a cluster. # A list of queries.
        "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
            # "hiveJob": {
            #   "queryList": {
            #     "queries": [
            #       "query1",
            #       "query2",
            #       "query3;query4",
            #     ]
            #   }
            # }
          "A String",
        ],
      },
      "continueOnFailure": 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.
      "properties": { # Optional. A mapping of property names and values, used to configure Hive. Properties that conflict with values set by the Cloud 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.
        "a_key": "A String",
      },
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="getIamPolicy">getIamPolicy(resource, 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)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources.A Policy consists of a list of bindings. A binding binds a list of members to a role, where the members can be user accounts, Google groups, Google domains, and service accounts. A role is a named list of permissions defined by IAM.JSON Example
      # {
      #   "bindings": [
      #     {
      #       "role": "roles/owner",
      #       "members": [
      #         "user:mike@example.com",
      #         "group:admins@example.com",
      #         "domain:google.com",
      #         "serviceAccount:my-other-app@appspot.gserviceaccount.com"
      #       ]
      #     },
      #     {
      #       "role": "roles/viewer",
      #       "members": ["user:sean@example.com"]
      #     }
      #   ]
      # }
      # YAML Example
      # bindings:
      # - members:
      #   - user:mike@example.com
      #   - group:admins@example.com
      #   - domain:google.com
      #   - serviceAccount:my-other-app@appspot.gserviceaccount.com
      #   role: roles/owner
      # - members:
      #   - user:sean@example.com
      #   role: roles/viewer
      # For a description of IAM and its features, see the IAM developer's guide (https://cloud.google.com/iam/docs).
    "bindings": [ # Associates a list of members to a role. bindings with no members will result in an error.
      { # Associates members with a role.
        "role": "A String", # Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner.
        "members": [ # 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@gmail.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.
            # domain:{domain}: The G Suite domain (primary) that represents all the  users of that domain. For example, google.com or example.com.
          "A String",
        ],
        "condition": { # Represents an expression text. Example: # The condition that is associated with this binding. NOTE: An unsatisfied condition will not allow user access via current binding. Different bindings, including their conditions, are examined independently.
            # title: "User account presence"
            # description: "Determines whether the request has a user account"
            # expression: "size(request.user) > 0"
          "location": "A String", # An optional string indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
          "expression": "A String", # Textual representation of an expression in Common Expression Language syntax.The application context of the containing message determines which well-known feature set of CEL is supported.
          "description": "A String", # An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
          "title": "A String", # An 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.
        },
      },
    ],
    "etag": "A String", # 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.If no etag is provided in the call to setIamPolicy, then the existing policy is overwritten blindly.
    "version": 42, # Deprecated.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(projectId, region, pageSize=None, x__xgafv=None, jobStateMatcher=None, pageToken=None, clusterName=None, filter=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 Cloud Dataproc region in which to handle the request. (required)
  pageSize: integer, Optional. The number of results to return in each response.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format
  jobStateMatcher: string, Optional. Specifies enumerated categories of jobs to list. (default = match ALL jobs).If filter is provided, jobStateMatcher will be ignored.
  pageToken: string, Optional. The page token, returned by a previous call, to request the next page of results.
  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 = *

Returns:
  An object of the form:

    { # A list of jobs in a project.
    "nextPageToken": "A String", # 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 <code>ListJobsRequest</code>.
    "jobs": [ # Output only. Jobs list.
      { # A Cloud Dataproc job resource.
        "status": { # Cloud Dataproc job status. # Output only. The job status. Additional application-specific status information may be contained in the <code>type_job</code> and <code>yarn_applications</code> fields.
          "state": "A String", # Output only. A state message specifying the overall job state.
          "stateStartTime": "A String", # Output only. The time when this state was entered.
          "substate": "A String", # Output only. Additional state information, which includes status reported by the agent.
          "details": "A String", # Output only. Optional job state details, such as an error description if the state is <code>ERROR</code>.
        },
        "hadoopJob": { # A Cloud 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). # Job is a Hadoop job.
          "args": [ # 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.
            "A String",
          ],
          "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
            "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
              "a_key": "A String",
            },
          },
          "jarFileUris": [ # Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.
            "A String",
          ],
          "fileUris": [ # 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.
            "A String",
          ],
          "mainClass": "A String", # The name of the driver's main class. The jar file containing the class must be in the default CLASSPATH or specified in jar_file_uris.
          "archiveUris": [ # 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.
            "A String",
          ],
          "mainJarFileUri": "A String", # The HCFS URI of the jar file containing the main class. Examples:  'gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar'  'hdfs:/tmp/test-samples/custom-wordcount.jar'  'file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar'
          "properties": { # Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code.
            "a_key": "A String",
          },
        },
        "pigJob": { # A Cloud Dataproc job for running Apache Pig (https://pig.apache.org/) queries on YARN. # Job is a Pig job.
          "queryFileUri": "A String", # The HCFS URI of the script that contains the Pig queries.
          "scriptVariables": { # Optional. Mapping of query variable names to values (equivalent to the Pig command: name=[value]).
            "a_key": "A String",
          },
          "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
            "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
              "a_key": "A String",
            },
          },
          "jarFileUris": [ # Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs.
            "A String",
          ],
          "queryList": { # A list of queries to run on a cluster. # A list of queries.
            "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
                # "hiveJob": {
                #   "queryList": {
                #     "queries": [
                #       "query1",
                #       "query2",
                #       "query3;query4",
                #     ]
                #   }
                # }
              "A String",
            ],
          },
          "continueOnFailure": 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.
          "properties": { # Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Cloud 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.
            "a_key": "A String",
          },
        },
        "placement": { # Cloud Dataproc job config. # Required. Job information, including how, when, and where to run the job.
          "clusterName": "A String", # Required. The name of the cluster where the job will be submitted.
          "clusterUuid": "A String", # Output only. A cluster UUID generated by the Cloud Dataproc service when the job is submitted.
        },
        "sparkRJob": { # A Cloud Dataproc job for running Apache SparkR (https://spark.apache.org/docs/latest/sparkr.html) applications on YARN. # Job is a SparkR job.
          "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
            "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
              "a_key": "A String",
            },
          },
          "args": [ # 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.
            "A String",
          ],
          "mainRFileUri": "A String", # Required. The HCFS URI of the main R file to use as the driver. Must be a .R file.
          "fileUris": [ # Optional. HCFS URIs of files to be copied to the working directory of R drivers and distributed tasks. Useful for naively parallel tasks.
            "A String",
          ],
          "archiveUris": [ # Optional. HCFS URIs of archives to be extracted in the working directory of Spark drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
            "A String",
          ],
          "properties": { # Optional. A mapping of property names to values, used to configure SparkR. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
            "a_key": "A String",
          },
        },
        "reference": { # 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 <code>job_id</code>.
          "projectId": "A String", # Required. The ID of the Google Cloud Platform project that the job belongs to.
          "jobId": "A String", # 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.
        },
        "sparkSqlJob": { # A Cloud Dataproc job for running Apache Spark SQL (http://spark.apache.org/sql/) queries. # Job is a SparkSql job.
          "queryFileUri": "A String", # The HCFS URI of the script that contains SQL queries.
          "scriptVariables": { # Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name="value";).
            "a_key": "A String",
          },
          "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
            "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
              "a_key": "A String",
            },
          },
          "jarFileUris": [ # Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH.
            "A String",
          ],
          "queryList": { # A list of queries to run on a cluster. # A list of queries.
            "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
                # "hiveJob": {
                #   "queryList": {
                #     "queries": [
                #       "query1",
                #       "query2",
                #       "query3;query4",
                #     ]
                #   }
                # }
              "A String",
            ],
          },
          "properties": { # Optional. A mapping of property names to values, used to configure Spark SQL's SparkConf. Properties that conflict with values set by the Cloud Dataproc API may be overwritten.
            "a_key": "A String",
          },
        },
        "yarnApplications": [ # 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 <code>org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto</code>.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
            "progress": 3.14, # Required. The numerical progress of the application, from 1 to 100.
            "state": "A String", # Required. The application state.
            "trackingUrl": "A String", # 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.
            "name": "A String", # Required. The application name.
          },
        ],
        "submittedBy": "A String", # Output only. The email address of the user submitting the job. For jobs submitted on the cluster, the address is <code>username@hostname</code>.
        "jobUuid": "A String", # 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.
        "pysparkJob": { # A Cloud Dataproc job for running Apache PySpark (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN. # Job is a Pyspark job.
          "mainPythonFileUri": "A String", # Required. The HCFS URI of the main Python file to use as the driver. Must be a .py file.
          "jarFileUris": [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks.
            "A String",
          ],
          "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
            "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
              "a_key": "A String",
            },
          },
          "args": [ # 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.
            "A String",
          ],
          "fileUris": [ # Optional. HCFS URIs of files to be copied to the working directory of Python drivers and distributed tasks. Useful for naively parallel tasks.
            "A String",
          ],
          "archiveUris": [ # Optional. HCFS URIs of archives to be extracted in the working directory of .jar, .tar, .tar.gz, .tgz, and .zip.
            "A String",
          ],
          "pythonFileUris": [ # Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip.
            "A String",
          ],
          "properties": { # Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
            "a_key": "A String",
          },
        },
        "labels": { # 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.
          "a_key": "A String",
        },
        "driverControlFilesUri": "A String", # 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.
        "sparkJob": { # A Cloud Dataproc job for running Apache Spark (http://spark.apache.org/) applications on YARN. # Job is a Spark job.
          "args": [ # 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.
            "A String",
          ],
          "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
            "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
              "a_key": "A String",
            },
          },
          "jarFileUris": [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks.
            "A String",
          ],
          "fileUris": [ # Optional. HCFS URIs of files to be copied to the working directory of Spark drivers and distributed tasks. Useful for naively parallel tasks.
            "A String",
          ],
          "mainClass": "A String", # The name of the driver's main class. The jar file that contains the class must be in the default CLASSPATH or specified in jar_file_uris.
          "archiveUris": [ # Optional. HCFS URIs of archives to be extracted in the working directory of Spark drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
            "A String",
          ],
          "mainJarFileUri": "A String", # The HCFS URI of the jar file that contains the main class.
          "properties": { # Optional. A mapping of property names to values, used to configure Spark. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
            "a_key": "A String",
          },
        },
        "driverOutputResourceUri": "A String", # Output only. A URI pointing to the location of the stdout of the job's driver program.
        "prestoJob": { # A Cloud Dataproc job for running Presto (https://prestosql.io/) queries # Job is a Presto job
          "queryFileUri": "A String", # The HCFS URI of the script that contains SQL queries.
          "outputFormat": "A String", # Optional. The format in which query output will be displayed. See the Presto documentation for supported output formats
          "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
            "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
              "a_key": "A String",
            },
          },
          "clientTags": [ # Optional. Presto client tags to attach to this query
            "A String",
          ],
          "queryList": { # A list of queries to run on a cluster. # A list of queries.
            "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
                # "hiveJob": {
                #   "queryList": {
                #     "queries": [
                #       "query1",
                #       "query2",
                #       "query3;query4",
                #     ]
                #   }
                # }
              "A String",
            ],
          },
          "continueOnFailure": 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.
          "properties": { # 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
            "a_key": "A String",
          },
        },
        "scheduling": { # Job scheduling options. # Optional. Job scheduling configuration.
          "maxFailuresPerHour": 42, # Optional. Maximum number of times per hour a driver may be restarted as a result of driver terminating with non-zero code before job is reported failed.A job may be reported as thrashing if driver exits with non-zero code 4 times within 10 minute window.Maximum value is 10.
        },
        "statusHistory": [ # Output only. The previous job status.
          { # Cloud Dataproc job status.
            "state": "A String", # Output only. A state message specifying the overall job state.
            "stateStartTime": "A String", # Output only. The time when this state was entered.
            "substate": "A String", # Output only. Additional state information, which includes status reported by the agent.
            "details": "A String", # Output only. Optional job state details, such as an error description if the state is <code>ERROR</code>.
          },
        ],
        "hiveJob": { # A Cloud Dataproc job for running Apache Hive (https://hive.apache.org/) queries on YARN. # Job is a Hive job.
          "queryFileUri": "A String", # The HCFS URI of the script that contains Hive queries.
          "scriptVariables": { # Optional. Mapping of query variable names to values (equivalent to the Hive command: SET name="value";).
            "a_key": "A String",
          },
          "jarFileUris": [ # 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.
            "A String",
          ],
          "queryList": { # A list of queries to run on a cluster. # A list of queries.
            "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
                # "hiveJob": {
                #   "queryList": {
                #     "queries": [
                #       "query1",
                #       "query2",
                #       "query3;query4",
                #     ]
                #   }
                # }
              "A String",
            ],
          },
          "continueOnFailure": 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.
          "properties": { # Optional. A mapping of property names and values, used to configure Hive. Properties that conflict with values set by the Cloud 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.
            "a_key": "A String",
          },
        },
      },
    ],
  }</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 'execute()' 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, 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 Cloud Dataproc region in which to handle the request. (required)
  jobId: string, Required. The job ID. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # A Cloud Dataproc job resource.
  "status": { # Cloud Dataproc job status. # Output only. The job status. Additional application-specific status information may be contained in the <code>type_job</code> and <code>yarn_applications</code> fields.
    "state": "A String", # Output only. A state message specifying the overall job state.
    "stateStartTime": "A String", # Output only. The time when this state was entered.
    "substate": "A String", # Output only. Additional state information, which includes status reported by the agent.
    "details": "A String", # Output only. Optional job state details, such as an error description if the state is <code>ERROR</code>.
  },
  "hadoopJob": { # A Cloud 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). # Job is a Hadoop job.
    "args": [ # 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.
      "A String",
    ],
    "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
        "a_key": "A String",
      },
    },
    "jarFileUris": [ # Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.
      "A String",
    ],
    "fileUris": [ # 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.
      "A String",
    ],
    "mainClass": "A String", # The name of the driver's main class. The jar file containing the class must be in the default CLASSPATH or specified in jar_file_uris.
    "archiveUris": [ # 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.
      "A String",
    ],
    "mainJarFileUri": "A String", # The HCFS URI of the jar file containing the main class. Examples:  'gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar'  'hdfs:/tmp/test-samples/custom-wordcount.jar'  'file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar'
    "properties": { # Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code.
      "a_key": "A String",
    },
  },
  "pigJob": { # A Cloud Dataproc job for running Apache Pig (https://pig.apache.org/) queries on YARN. # Job is a Pig job.
    "queryFileUri": "A String", # The HCFS URI of the script that contains the Pig queries.
    "scriptVariables": { # Optional. Mapping of query variable names to values (equivalent to the Pig command: name=[value]).
      "a_key": "A String",
    },
    "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
        "a_key": "A String",
      },
    },
    "jarFileUris": [ # Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs.
      "A String",
    ],
    "queryList": { # A list of queries to run on a cluster. # A list of queries.
      "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
          # "hiveJob": {
          #   "queryList": {
          #     "queries": [
          #       "query1",
          #       "query2",
          #       "query3;query4",
          #     ]
          #   }
          # }
        "A String",
      ],
    },
    "continueOnFailure": 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.
    "properties": { # Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Cloud 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.
      "a_key": "A String",
    },
  },
  "placement": { # Cloud Dataproc job config. # Required. Job information, including how, when, and where to run the job.
    "clusterName": "A String", # Required. The name of the cluster where the job will be submitted.
    "clusterUuid": "A String", # Output only. A cluster UUID generated by the Cloud Dataproc service when the job is submitted.
  },
  "sparkRJob": { # A Cloud Dataproc job for running Apache SparkR (https://spark.apache.org/docs/latest/sparkr.html) applications on YARN. # Job is a SparkR job.
    "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
        "a_key": "A String",
      },
    },
    "args": [ # 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.
      "A String",
    ],
    "mainRFileUri": "A String", # Required. The HCFS URI of the main R file to use as the driver. Must be a .R file.
    "fileUris": [ # Optional. HCFS URIs of files to be copied to the working directory of R drivers and distributed tasks. Useful for naively parallel tasks.
      "A String",
    ],
    "archiveUris": [ # Optional. HCFS URIs of archives to be extracted in the working directory of Spark drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
      "A String",
    ],
    "properties": { # Optional. A mapping of property names to values, used to configure SparkR. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
      "a_key": "A String",
    },
  },
  "reference": { # 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 <code>job_id</code>.
    "projectId": "A String", # Required. The ID of the Google Cloud Platform project that the job belongs to.
    "jobId": "A String", # 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.
  },
  "sparkSqlJob": { # A Cloud Dataproc job for running Apache Spark SQL (http://spark.apache.org/sql/) queries. # Job is a SparkSql job.
    "queryFileUri": "A String", # The HCFS URI of the script that contains SQL queries.
    "scriptVariables": { # Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name="value";).
      "a_key": "A String",
    },
    "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
        "a_key": "A String",
      },
    },
    "jarFileUris": [ # Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH.
      "A String",
    ],
    "queryList": { # A list of queries to run on a cluster. # A list of queries.
      "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
          # "hiveJob": {
          #   "queryList": {
          #     "queries": [
          #       "query1",
          #       "query2",
          #       "query3;query4",
          #     ]
          #   }
          # }
        "A String",
      ],
    },
    "properties": { # Optional. A mapping of property names to values, used to configure Spark SQL's SparkConf. Properties that conflict with values set by the Cloud Dataproc API may be overwritten.
      "a_key": "A String",
    },
  },
  "yarnApplications": [ # 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 <code>org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto</code>.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
      "progress": 3.14, # Required. The numerical progress of the application, from 1 to 100.
      "state": "A String", # Required. The application state.
      "trackingUrl": "A String", # 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.
      "name": "A String", # Required. The application name.
    },
  ],
  "submittedBy": "A String", # Output only. The email address of the user submitting the job. For jobs submitted on the cluster, the address is <code>username@hostname</code>.
  "jobUuid": "A String", # 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.
  "pysparkJob": { # A Cloud Dataproc job for running Apache PySpark (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN. # Job is a Pyspark job.
    "mainPythonFileUri": "A String", # Required. The HCFS URI of the main Python file to use as the driver. Must be a .py file.
    "jarFileUris": [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks.
      "A String",
    ],
    "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
        "a_key": "A String",
      },
    },
    "args": [ # 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.
      "A String",
    ],
    "fileUris": [ # Optional. HCFS URIs of files to be copied to the working directory of Python drivers and distributed tasks. Useful for naively parallel tasks.
      "A String",
    ],
    "archiveUris": [ # Optional. HCFS URIs of archives to be extracted in the working directory of .jar, .tar, .tar.gz, .tgz, and .zip.
      "A String",
    ],
    "pythonFileUris": [ # Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip.
      "A String",
    ],
    "properties": { # Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
      "a_key": "A String",
    },
  },
  "labels": { # 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.
    "a_key": "A String",
  },
  "driverControlFilesUri": "A String", # 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.
  "sparkJob": { # A Cloud Dataproc job for running Apache Spark (http://spark.apache.org/) applications on YARN. # Job is a Spark job.
    "args": [ # 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.
      "A String",
    ],
    "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
        "a_key": "A String",
      },
    },
    "jarFileUris": [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks.
      "A String",
    ],
    "fileUris": [ # Optional. HCFS URIs of files to be copied to the working directory of Spark drivers and distributed tasks. Useful for naively parallel tasks.
      "A String",
    ],
    "mainClass": "A String", # The name of the driver's main class. The jar file that contains the class must be in the default CLASSPATH or specified in jar_file_uris.
    "archiveUris": [ # Optional. HCFS URIs of archives to be extracted in the working directory of Spark drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
      "A String",
    ],
    "mainJarFileUri": "A String", # The HCFS URI of the jar file that contains the main class.
    "properties": { # Optional. A mapping of property names to values, used to configure Spark. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
      "a_key": "A String",
    },
  },
  "driverOutputResourceUri": "A String", # Output only. A URI pointing to the location of the stdout of the job's driver program.
  "prestoJob": { # A Cloud Dataproc job for running Presto (https://prestosql.io/) queries # Job is a Presto job
    "queryFileUri": "A String", # The HCFS URI of the script that contains SQL queries.
    "outputFormat": "A String", # Optional. The format in which query output will be displayed. See the Presto documentation for supported output formats
    "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
      "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
        "a_key": "A String",
      },
    },
    "clientTags": [ # Optional. Presto client tags to attach to this query
      "A String",
    ],
    "queryList": { # A list of queries to run on a cluster. # A list of queries.
      "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
          # "hiveJob": {
          #   "queryList": {
          #     "queries": [
          #       "query1",
          #       "query2",
          #       "query3;query4",
          #     ]
          #   }
          # }
        "A String",
      ],
    },
    "continueOnFailure": 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.
    "properties": { # 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
      "a_key": "A String",
    },
  },
  "scheduling": { # Job scheduling options. # Optional. Job scheduling configuration.
    "maxFailuresPerHour": 42, # Optional. Maximum number of times per hour a driver may be restarted as a result of driver terminating with non-zero code before job is reported failed.A job may be reported as thrashing if driver exits with non-zero code 4 times within 10 minute window.Maximum value is 10.
  },
  "statusHistory": [ # Output only. The previous job status.
    { # Cloud Dataproc job status.
      "state": "A String", # Output only. A state message specifying the overall job state.
      "stateStartTime": "A String", # Output only. The time when this state was entered.
      "substate": "A String", # Output only. Additional state information, which includes status reported by the agent.
      "details": "A String", # Output only. Optional job state details, such as an error description if the state is <code>ERROR</code>.
    },
  ],
  "hiveJob": { # A Cloud Dataproc job for running Apache Hive (https://hive.apache.org/) queries on YARN. # Job is a Hive job.
    "queryFileUri": "A String", # The HCFS URI of the script that contains Hive queries.
    "scriptVariables": { # Optional. Mapping of query variable names to values (equivalent to the Hive command: SET name="value";).
      "a_key": "A String",
    },
    "jarFileUris": [ # 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.
      "A String",
    ],
    "queryList": { # A list of queries to run on a cluster. # A list of queries.
      "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
          # "hiveJob": {
          #   "queryList": {
          #     "queries": [
          #       "query1",
          #       "query2",
          #       "query3;query4",
          #     ]
          #   }
          # }
        "A String",
      ],
    },
    "continueOnFailure": 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.
    "properties": { # Optional. A mapping of property names and values, used to configure Hive. Properties that conflict with values set by the Cloud 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.
      "a_key": "A String",
    },
  },
}

  updateMask: string, Required. Specifies the path, relative to <code>Job</code>, of the field to update. For example, to update the labels of a Job the <code>update_mask</code> parameter would be specified as <code>labels</code>, and the PATCH request body would specify the new value. <strong>Note:</strong> Currently, <code>labels</code> 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 Cloud Dataproc job resource.
    "status": { # Cloud Dataproc job status. # Output only. The job status. Additional application-specific status information may be contained in the <code>type_job</code> and <code>yarn_applications</code> fields.
      "state": "A String", # Output only. A state message specifying the overall job state.
      "stateStartTime": "A String", # Output only. The time when this state was entered.
      "substate": "A String", # Output only. Additional state information, which includes status reported by the agent.
      "details": "A String", # Output only. Optional job state details, such as an error description if the state is <code>ERROR</code>.
    },
    "hadoopJob": { # A Cloud 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). # Job is a Hadoop job.
      "args": [ # 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.
        "A String",
      ],
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "jarFileUris": [ # Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.
        "A String",
      ],
      "fileUris": [ # 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.
        "A String",
      ],
      "mainClass": "A String", # The name of the driver's main class. The jar file containing the class must be in the default CLASSPATH or specified in jar_file_uris.
      "archiveUris": [ # 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.
        "A String",
      ],
      "mainJarFileUri": "A String", # The HCFS URI of the jar file containing the main class. Examples:  'gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar'  'hdfs:/tmp/test-samples/custom-wordcount.jar'  'file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar'
      "properties": { # Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code.
        "a_key": "A String",
      },
    },
    "pigJob": { # A Cloud Dataproc job for running Apache Pig (https://pig.apache.org/) queries on YARN. # Job is a Pig job.
      "queryFileUri": "A String", # The HCFS URI of the script that contains the Pig queries.
      "scriptVariables": { # Optional. Mapping of query variable names to values (equivalent to the Pig command: name=[value]).
        "a_key": "A String",
      },
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "jarFileUris": [ # Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs.
        "A String",
      ],
      "queryList": { # A list of queries to run on a cluster. # A list of queries.
        "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
            # "hiveJob": {
            #   "queryList": {
            #     "queries": [
            #       "query1",
            #       "query2",
            #       "query3;query4",
            #     ]
            #   }
            # }
          "A String",
        ],
      },
      "continueOnFailure": 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.
      "properties": { # Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Cloud 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.
        "a_key": "A String",
      },
    },
    "placement": { # Cloud Dataproc job config. # Required. Job information, including how, when, and where to run the job.
      "clusterName": "A String", # Required. The name of the cluster where the job will be submitted.
      "clusterUuid": "A String", # Output only. A cluster UUID generated by the Cloud Dataproc service when the job is submitted.
    },
    "sparkRJob": { # A Cloud Dataproc job for running Apache SparkR (https://spark.apache.org/docs/latest/sparkr.html) applications on YARN. # Job is a SparkR job.
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "args": [ # 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.
        "A String",
      ],
      "mainRFileUri": "A String", # Required. The HCFS URI of the main R file to use as the driver. Must be a .R file.
      "fileUris": [ # Optional. HCFS URIs of files to be copied to the working directory of R drivers and distributed tasks. Useful for naively parallel tasks.
        "A String",
      ],
      "archiveUris": [ # Optional. HCFS URIs of archives to be extracted in the working directory of Spark drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
        "A String",
      ],
      "properties": { # Optional. A mapping of property names to values, used to configure SparkR. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
        "a_key": "A String",
      },
    },
    "reference": { # 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 <code>job_id</code>.
      "projectId": "A String", # Required. The ID of the Google Cloud Platform project that the job belongs to.
      "jobId": "A String", # 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.
    },
    "sparkSqlJob": { # A Cloud Dataproc job for running Apache Spark SQL (http://spark.apache.org/sql/) queries. # Job is a SparkSql job.
      "queryFileUri": "A String", # The HCFS URI of the script that contains SQL queries.
      "scriptVariables": { # Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name="value";).
        "a_key": "A String",
      },
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "jarFileUris": [ # Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH.
        "A String",
      ],
      "queryList": { # A list of queries to run on a cluster. # A list of queries.
        "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
            # "hiveJob": {
            #   "queryList": {
            #     "queries": [
            #       "query1",
            #       "query2",
            #       "query3;query4",
            #     ]
            #   }
            # }
          "A String",
        ],
      },
      "properties": { # Optional. A mapping of property names to values, used to configure Spark SQL's SparkConf. Properties that conflict with values set by the Cloud Dataproc API may be overwritten.
        "a_key": "A String",
      },
    },
    "yarnApplications": [ # 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 <code>org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto</code>.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
        "progress": 3.14, # Required. The numerical progress of the application, from 1 to 100.
        "state": "A String", # Required. The application state.
        "trackingUrl": "A String", # 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.
        "name": "A String", # Required. The application name.
      },
    ],
    "submittedBy": "A String", # Output only. The email address of the user submitting the job. For jobs submitted on the cluster, the address is <code>username@hostname</code>.
    "jobUuid": "A String", # 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.
    "pysparkJob": { # A Cloud Dataproc job for running Apache PySpark (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN. # Job is a Pyspark job.
      "mainPythonFileUri": "A String", # Required. The HCFS URI of the main Python file to use as the driver. Must be a .py file.
      "jarFileUris": [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks.
        "A String",
      ],
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "args": [ # 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.
        "A String",
      ],
      "fileUris": [ # Optional. HCFS URIs of files to be copied to the working directory of Python drivers and distributed tasks. Useful for naively parallel tasks.
        "A String",
      ],
      "archiveUris": [ # Optional. HCFS URIs of archives to be extracted in the working directory of .jar, .tar, .tar.gz, .tgz, and .zip.
        "A String",
      ],
      "pythonFileUris": [ # Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip.
        "A String",
      ],
      "properties": { # Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
        "a_key": "A String",
      },
    },
    "labels": { # 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.
      "a_key": "A String",
    },
    "driverControlFilesUri": "A String", # 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.
    "sparkJob": { # A Cloud Dataproc job for running Apache Spark (http://spark.apache.org/) applications on YARN. # Job is a Spark job.
      "args": [ # 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.
        "A String",
      ],
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "jarFileUris": [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks.
        "A String",
      ],
      "fileUris": [ # Optional. HCFS URIs of files to be copied to the working directory of Spark drivers and distributed tasks. Useful for naively parallel tasks.
        "A String",
      ],
      "mainClass": "A String", # The name of the driver's main class. The jar file that contains the class must be in the default CLASSPATH or specified in jar_file_uris.
      "archiveUris": [ # Optional. HCFS URIs of archives to be extracted in the working directory of Spark drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
        "A String",
      ],
      "mainJarFileUri": "A String", # The HCFS URI of the jar file that contains the main class.
      "properties": { # Optional. A mapping of property names to values, used to configure Spark. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
        "a_key": "A String",
      },
    },
    "driverOutputResourceUri": "A String", # Output only. A URI pointing to the location of the stdout of the job's driver program.
    "prestoJob": { # A Cloud Dataproc job for running Presto (https://prestosql.io/) queries # Job is a Presto job
      "queryFileUri": "A String", # The HCFS URI of the script that contains SQL queries.
      "outputFormat": "A String", # Optional. The format in which query output will be displayed. See the Presto documentation for supported output formats
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "clientTags": [ # Optional. Presto client tags to attach to this query
        "A String",
      ],
      "queryList": { # A list of queries to run on a cluster. # A list of queries.
        "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
            # "hiveJob": {
            #   "queryList": {
            #     "queries": [
            #       "query1",
            #       "query2",
            #       "query3;query4",
            #     ]
            #   }
            # }
          "A String",
        ],
      },
      "continueOnFailure": 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.
      "properties": { # 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
        "a_key": "A String",
      },
    },
    "scheduling": { # Job scheduling options. # Optional. Job scheduling configuration.
      "maxFailuresPerHour": 42, # Optional. Maximum number of times per hour a driver may be restarted as a result of driver terminating with non-zero code before job is reported failed.A job may be reported as thrashing if driver exits with non-zero code 4 times within 10 minute window.Maximum value is 10.
    },
    "statusHistory": [ # Output only. The previous job status.
      { # Cloud Dataproc job status.
        "state": "A String", # Output only. A state message specifying the overall job state.
        "stateStartTime": "A String", # Output only. The time when this state was entered.
        "substate": "A String", # Output only. Additional state information, which includes status reported by the agent.
        "details": "A String", # Output only. Optional job state details, such as an error description if the state is <code>ERROR</code>.
      },
    ],
    "hiveJob": { # A Cloud Dataproc job for running Apache Hive (https://hive.apache.org/) queries on YARN. # Job is a Hive job.
      "queryFileUri": "A String", # The HCFS URI of the script that contains Hive queries.
      "scriptVariables": { # Optional. Mapping of query variable names to values (equivalent to the Hive command: SET name="value";).
        "a_key": "A String",
      },
      "jarFileUris": [ # 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.
        "A String",
      ],
      "queryList": { # A list of queries to run on a cluster. # A list of queries.
        "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
            # "hiveJob": {
            #   "queryList": {
            #     "queries": [
            #       "query1",
            #       "query2",
            #       "query3;query4",
            #     ]
            #   }
            # }
          "A String",
        ],
      },
      "continueOnFailure": 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.
      "properties": { # Optional. A mapping of property names and values, used to configure Hive. Properties that conflict with values set by the Cloud 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.
        "a_key": "A String",
      },
    },
  }</pre>
</div>

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

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. (required)
    The object takes the form of:

{ # Request message for SetIamPolicy method.
    "policy": { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources.A Policy consists of a list of bindings. A binding binds a list of members to a role, where the members can be user accounts, Google groups, Google domains, and service accounts. A role is a named list of permissions defined by IAM.JSON Example # 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.
        # {
        #   "bindings": [
        #     {
        #       "role": "roles/owner",
        #       "members": [
        #         "user:mike@example.com",
        #         "group:admins@example.com",
        #         "domain:google.com",
        #         "serviceAccount:my-other-app@appspot.gserviceaccount.com"
        #       ]
        #     },
        #     {
        #       "role": "roles/viewer",
        #       "members": ["user:sean@example.com"]
        #     }
        #   ]
        # }
        # YAML Example
        # bindings:
        # - members:
        #   - user:mike@example.com
        #   - group:admins@example.com
        #   - domain:google.com
        #   - serviceAccount:my-other-app@appspot.gserviceaccount.com
        #   role: roles/owner
        # - members:
        #   - user:sean@example.com
        #   role: roles/viewer
        # For a description of IAM and its features, see the IAM developer's guide (https://cloud.google.com/iam/docs).
      "bindings": [ # Associates a list of members to a role. bindings with no members will result in an error.
        { # Associates members with a role.
          "role": "A String", # Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner.
          "members": [ # 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@gmail.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.
              # domain:{domain}: The G Suite domain (primary) that represents all the  users of that domain. For example, google.com or example.com.
            "A String",
          ],
          "condition": { # Represents an expression text. Example: # The condition that is associated with this binding. NOTE: An unsatisfied condition will not allow user access via current binding. Different bindings, including their conditions, are examined independently.
              # title: "User account presence"
              # description: "Determines whether the request has a user account"
              # expression: "size(request.user) > 0"
            "location": "A String", # An optional string indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
            "expression": "A String", # Textual representation of an expression in Common Expression Language syntax.The application context of the containing message determines which well-known feature set of CEL is supported.
            "description": "A String", # An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
            "title": "A String", # An 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.
          },
        },
      ],
      "etag": "A String", # 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.If no etag is provided in the call to setIamPolicy, then the existing policy is overwritten blindly.
      "version": 42, # Deprecated.
    },
  }

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

Returns:
  An object of the form:

    { # Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources.A Policy consists of a list of bindings. A binding binds a list of members to a role, where the members can be user accounts, Google groups, Google domains, and service accounts. A role is a named list of permissions defined by IAM.JSON Example
      # {
      #   "bindings": [
      #     {
      #       "role": "roles/owner",
      #       "members": [
      #         "user:mike@example.com",
      #         "group:admins@example.com",
      #         "domain:google.com",
      #         "serviceAccount:my-other-app@appspot.gserviceaccount.com"
      #       ]
      #     },
      #     {
      #       "role": "roles/viewer",
      #       "members": ["user:sean@example.com"]
      #     }
      #   ]
      # }
      # YAML Example
      # bindings:
      # - members:
      #   - user:mike@example.com
      #   - group:admins@example.com
      #   - domain:google.com
      #   - serviceAccount:my-other-app@appspot.gserviceaccount.com
      #   role: roles/owner
      # - members:
      #   - user:sean@example.com
      #   role: roles/viewer
      # For a description of IAM and its features, see the IAM developer's guide (https://cloud.google.com/iam/docs).
    "bindings": [ # Associates a list of members to a role. bindings with no members will result in an error.
      { # Associates members with a role.
        "role": "A String", # Role that is assigned to members. For example, roles/viewer, roles/editor, or roles/owner.
        "members": [ # 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@gmail.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.
            # domain:{domain}: The G Suite domain (primary) that represents all the  users of that domain. For example, google.com or example.com.
          "A String",
        ],
        "condition": { # Represents an expression text. Example: # The condition that is associated with this binding. NOTE: An unsatisfied condition will not allow user access via current binding. Different bindings, including their conditions, are examined independently.
            # title: "User account presence"
            # description: "Determines whether the request has a user account"
            # expression: "size(request.user) > 0"
          "location": "A String", # An optional string indicating the location of the expression for error reporting, e.g. a file name and a position in the file.
          "expression": "A String", # Textual representation of an expression in Common Expression Language syntax.The application context of the containing message determines which well-known feature set of CEL is supported.
          "description": "A String", # An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.
          "title": "A String", # An 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.
        },
      },
    ],
    "etag": "A String", # 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.If no etag is provided in the call to setIamPolicy, then the existing policy is overwritten blindly.
    "version": 42, # Deprecated.
  }</pre>
</div>

<div class="method">
    <code class="details" id="submit">submit(projectId, region, body, 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 Cloud Dataproc region in which to handle the request. (required)
  body: object, The request body. (required)
    The object takes the form of:

{ # A request to submit a job.
    "job": { # A Cloud Dataproc job resource. # Required. The job resource.
      "status": { # Cloud Dataproc job status. # Output only. The job status. Additional application-specific status information may be contained in the <code>type_job</code> and <code>yarn_applications</code> fields.
        "state": "A String", # Output only. A state message specifying the overall job state.
        "stateStartTime": "A String", # Output only. The time when this state was entered.
        "substate": "A String", # Output only. Additional state information, which includes status reported by the agent.
        "details": "A String", # Output only. Optional job state details, such as an error description if the state is <code>ERROR</code>.
      },
      "hadoopJob": { # A Cloud 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). # Job is a Hadoop job.
        "args": [ # 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.
          "A String",
        ],
        "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
          "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
            "a_key": "A String",
          },
        },
        "jarFileUris": [ # Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.
          "A String",
        ],
        "fileUris": [ # 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.
          "A String",
        ],
        "mainClass": "A String", # The name of the driver's main class. The jar file containing the class must be in the default CLASSPATH or specified in jar_file_uris.
        "archiveUris": [ # 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.
          "A String",
        ],
        "mainJarFileUri": "A String", # The HCFS URI of the jar file containing the main class. Examples:  'gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar'  'hdfs:/tmp/test-samples/custom-wordcount.jar'  'file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar'
        "properties": { # Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code.
          "a_key": "A String",
        },
      },
      "pigJob": { # A Cloud Dataproc job for running Apache Pig (https://pig.apache.org/) queries on YARN. # Job is a Pig job.
        "queryFileUri": "A String", # The HCFS URI of the script that contains the Pig queries.
        "scriptVariables": { # Optional. Mapping of query variable names to values (equivalent to the Pig command: name=[value]).
          "a_key": "A String",
        },
        "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
          "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
            "a_key": "A String",
          },
        },
        "jarFileUris": [ # Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs.
          "A String",
        ],
        "queryList": { # A list of queries to run on a cluster. # A list of queries.
          "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
              # "hiveJob": {
              #   "queryList": {
              #     "queries": [
              #       "query1",
              #       "query2",
              #       "query3;query4",
              #     ]
              #   }
              # }
            "A String",
          ],
        },
        "continueOnFailure": 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.
        "properties": { # Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Cloud 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.
          "a_key": "A String",
        },
      },
      "placement": { # Cloud Dataproc job config. # Required. Job information, including how, when, and where to run the job.
        "clusterName": "A String", # Required. The name of the cluster where the job will be submitted.
        "clusterUuid": "A String", # Output only. A cluster UUID generated by the Cloud Dataproc service when the job is submitted.
      },
      "sparkRJob": { # A Cloud Dataproc job for running Apache SparkR (https://spark.apache.org/docs/latest/sparkr.html) applications on YARN. # Job is a SparkR job.
        "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
          "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
            "a_key": "A String",
          },
        },
        "args": [ # 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.
          "A String",
        ],
        "mainRFileUri": "A String", # Required. The HCFS URI of the main R file to use as the driver. Must be a .R file.
        "fileUris": [ # Optional. HCFS URIs of files to be copied to the working directory of R drivers and distributed tasks. Useful for naively parallel tasks.
          "A String",
        ],
        "archiveUris": [ # Optional. HCFS URIs of archives to be extracted in the working directory of Spark drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
          "A String",
        ],
        "properties": { # Optional. A mapping of property names to values, used to configure SparkR. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
          "a_key": "A String",
        },
      },
      "reference": { # 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 <code>job_id</code>.
        "projectId": "A String", # Required. The ID of the Google Cloud Platform project that the job belongs to.
        "jobId": "A String", # 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.
      },
      "sparkSqlJob": { # A Cloud Dataproc job for running Apache Spark SQL (http://spark.apache.org/sql/) queries. # Job is a SparkSql job.
        "queryFileUri": "A String", # The HCFS URI of the script that contains SQL queries.
        "scriptVariables": { # Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name="value";).
          "a_key": "A String",
        },
        "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
          "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
            "a_key": "A String",
          },
        },
        "jarFileUris": [ # Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH.
          "A String",
        ],
        "queryList": { # A list of queries to run on a cluster. # A list of queries.
          "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
              # "hiveJob": {
              #   "queryList": {
              #     "queries": [
              #       "query1",
              #       "query2",
              #       "query3;query4",
              #     ]
              #   }
              # }
            "A String",
          ],
        },
        "properties": { # Optional. A mapping of property names to values, used to configure Spark SQL's SparkConf. Properties that conflict with values set by the Cloud Dataproc API may be overwritten.
          "a_key": "A String",
        },
      },
      "yarnApplications": [ # 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 <code>org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto</code>.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
          "progress": 3.14, # Required. The numerical progress of the application, from 1 to 100.
          "state": "A String", # Required. The application state.
          "trackingUrl": "A String", # 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.
          "name": "A String", # Required. The application name.
        },
      ],
      "submittedBy": "A String", # Output only. The email address of the user submitting the job. For jobs submitted on the cluster, the address is <code>username@hostname</code>.
      "jobUuid": "A String", # 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.
      "pysparkJob": { # A Cloud Dataproc job for running Apache PySpark (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN. # Job is a Pyspark job.
        "mainPythonFileUri": "A String", # Required. The HCFS URI of the main Python file to use as the driver. Must be a .py file.
        "jarFileUris": [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks.
          "A String",
        ],
        "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
          "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
            "a_key": "A String",
          },
        },
        "args": [ # 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.
          "A String",
        ],
        "fileUris": [ # Optional. HCFS URIs of files to be copied to the working directory of Python drivers and distributed tasks. Useful for naively parallel tasks.
          "A String",
        ],
        "archiveUris": [ # Optional. HCFS URIs of archives to be extracted in the working directory of .jar, .tar, .tar.gz, .tgz, and .zip.
          "A String",
        ],
        "pythonFileUris": [ # Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip.
          "A String",
        ],
        "properties": { # Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
          "a_key": "A String",
        },
      },
      "labels": { # 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.
        "a_key": "A String",
      },
      "driverControlFilesUri": "A String", # 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.
      "sparkJob": { # A Cloud Dataproc job for running Apache Spark (http://spark.apache.org/) applications on YARN. # Job is a Spark job.
        "args": [ # 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.
          "A String",
        ],
        "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
          "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
            "a_key": "A String",
          },
        },
        "jarFileUris": [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks.
          "A String",
        ],
        "fileUris": [ # Optional. HCFS URIs of files to be copied to the working directory of Spark drivers and distributed tasks. Useful for naively parallel tasks.
          "A String",
        ],
        "mainClass": "A String", # The name of the driver's main class. The jar file that contains the class must be in the default CLASSPATH or specified in jar_file_uris.
        "archiveUris": [ # Optional. HCFS URIs of archives to be extracted in the working directory of Spark drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
          "A String",
        ],
        "mainJarFileUri": "A String", # The HCFS URI of the jar file that contains the main class.
        "properties": { # Optional. A mapping of property names to values, used to configure Spark. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
          "a_key": "A String",
        },
      },
      "driverOutputResourceUri": "A String", # Output only. A URI pointing to the location of the stdout of the job's driver program.
      "prestoJob": { # A Cloud Dataproc job for running Presto (https://prestosql.io/) queries # Job is a Presto job
        "queryFileUri": "A String", # The HCFS URI of the script that contains SQL queries.
        "outputFormat": "A String", # Optional. The format in which query output will be displayed. See the Presto documentation for supported output formats
        "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
          "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
            "a_key": "A String",
          },
        },
        "clientTags": [ # Optional. Presto client tags to attach to this query
          "A String",
        ],
        "queryList": { # A list of queries to run on a cluster. # A list of queries.
          "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
              # "hiveJob": {
              #   "queryList": {
              #     "queries": [
              #       "query1",
              #       "query2",
              #       "query3;query4",
              #     ]
              #   }
              # }
            "A String",
          ],
        },
        "continueOnFailure": 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.
        "properties": { # 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
          "a_key": "A String",
        },
      },
      "scheduling": { # Job scheduling options. # Optional. Job scheduling configuration.
        "maxFailuresPerHour": 42, # Optional. Maximum number of times per hour a driver may be restarted as a result of driver terminating with non-zero code before job is reported failed.A job may be reported as thrashing if driver exits with non-zero code 4 times within 10 minute window.Maximum value is 10.
      },
      "statusHistory": [ # Output only. The previous job status.
        { # Cloud Dataproc job status.
          "state": "A String", # Output only. A state message specifying the overall job state.
          "stateStartTime": "A String", # Output only. The time when this state was entered.
          "substate": "A String", # Output only. Additional state information, which includes status reported by the agent.
          "details": "A String", # Output only. Optional job state details, such as an error description if the state is <code>ERROR</code>.
        },
      ],
      "hiveJob": { # A Cloud Dataproc job for running Apache Hive (https://hive.apache.org/) queries on YARN. # Job is a Hive job.
        "queryFileUri": "A String", # The HCFS URI of the script that contains Hive queries.
        "scriptVariables": { # Optional. Mapping of query variable names to values (equivalent to the Hive command: SET name="value";).
          "a_key": "A String",
        },
        "jarFileUris": [ # 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.
          "A String",
        ],
        "queryList": { # A list of queries to run on a cluster. # A list of queries.
          "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
              # "hiveJob": {
              #   "queryList": {
              #     "queries": [
              #       "query1",
              #       "query2",
              #       "query3;query4",
              #     ]
              #   }
              # }
            "A String",
          ],
        },
        "continueOnFailure": 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.
        "properties": { # Optional. A mapping of property names and values, used to configure Hive. Properties that conflict with values set by the Cloud 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.
          "a_key": "A String",
        },
      },
    },
    "requestId": "A String", # 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 Cloud Dataproc job resource.
    "status": { # Cloud Dataproc job status. # Output only. The job status. Additional application-specific status information may be contained in the <code>type_job</code> and <code>yarn_applications</code> fields.
      "state": "A String", # Output only. A state message specifying the overall job state.
      "stateStartTime": "A String", # Output only. The time when this state was entered.
      "substate": "A String", # Output only. Additional state information, which includes status reported by the agent.
      "details": "A String", # Output only. Optional job state details, such as an error description if the state is <code>ERROR</code>.
    },
    "hadoopJob": { # A Cloud 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). # Job is a Hadoop job.
      "args": [ # 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.
        "A String",
      ],
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "jarFileUris": [ # Optional. Jar file URIs to add to the CLASSPATHs of the Hadoop driver and tasks.
        "A String",
      ],
      "fileUris": [ # 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.
        "A String",
      ],
      "mainClass": "A String", # The name of the driver's main class. The jar file containing the class must be in the default CLASSPATH or specified in jar_file_uris.
      "archiveUris": [ # 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.
        "A String",
      ],
      "mainJarFileUri": "A String", # The HCFS URI of the jar file containing the main class. Examples:  'gs://foo-bucket/analytics-binaries/extract-useful-metrics-mr.jar'  'hdfs:/tmp/test-samples/custom-wordcount.jar'  'file:///home/usr/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar'
      "properties": { # Optional. A mapping of property names to values, used to configure Hadoop. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/hadoop/conf/*-site and classes in user code.
        "a_key": "A String",
      },
    },
    "pigJob": { # A Cloud Dataproc job for running Apache Pig (https://pig.apache.org/) queries on YARN. # Job is a Pig job.
      "queryFileUri": "A String", # The HCFS URI of the script that contains the Pig queries.
      "scriptVariables": { # Optional. Mapping of query variable names to values (equivalent to the Pig command: name=[value]).
        "a_key": "A String",
      },
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "jarFileUris": [ # Optional. HCFS URIs of jar files to add to the CLASSPATH of the Pig Client and Hadoop MapReduce (MR) tasks. Can contain Pig UDFs.
        "A String",
      ],
      "queryList": { # A list of queries to run on a cluster. # A list of queries.
        "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
            # "hiveJob": {
            #   "queryList": {
            #     "queries": [
            #       "query1",
            #       "query2",
            #       "query3;query4",
            #     ]
            #   }
            # }
          "A String",
        ],
      },
      "continueOnFailure": 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.
      "properties": { # Optional. A mapping of property names to values, used to configure Pig. Properties that conflict with values set by the Cloud 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.
        "a_key": "A String",
      },
    },
    "placement": { # Cloud Dataproc job config. # Required. Job information, including how, when, and where to run the job.
      "clusterName": "A String", # Required. The name of the cluster where the job will be submitted.
      "clusterUuid": "A String", # Output only. A cluster UUID generated by the Cloud Dataproc service when the job is submitted.
    },
    "sparkRJob": { # A Cloud Dataproc job for running Apache SparkR (https://spark.apache.org/docs/latest/sparkr.html) applications on YARN. # Job is a SparkR job.
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "args": [ # 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.
        "A String",
      ],
      "mainRFileUri": "A String", # Required. The HCFS URI of the main R file to use as the driver. Must be a .R file.
      "fileUris": [ # Optional. HCFS URIs of files to be copied to the working directory of R drivers and distributed tasks. Useful for naively parallel tasks.
        "A String",
      ],
      "archiveUris": [ # Optional. HCFS URIs of archives to be extracted in the working directory of Spark drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
        "A String",
      ],
      "properties": { # Optional. A mapping of property names to values, used to configure SparkR. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
        "a_key": "A String",
      },
    },
    "reference": { # 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 <code>job_id</code>.
      "projectId": "A String", # Required. The ID of the Google Cloud Platform project that the job belongs to.
      "jobId": "A String", # 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.
    },
    "sparkSqlJob": { # A Cloud Dataproc job for running Apache Spark SQL (http://spark.apache.org/sql/) queries. # Job is a SparkSql job.
      "queryFileUri": "A String", # The HCFS URI of the script that contains SQL queries.
      "scriptVariables": { # Optional. Mapping of query variable names to values (equivalent to the Spark SQL command: SET name="value";).
        "a_key": "A String",
      },
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "jarFileUris": [ # Optional. HCFS URIs of jar files to be added to the Spark CLASSPATH.
        "A String",
      ],
      "queryList": { # A list of queries to run on a cluster. # A list of queries.
        "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
            # "hiveJob": {
            #   "queryList": {
            #     "queries": [
            #       "query1",
            #       "query2",
            #       "query3;query4",
            #     ]
            #   }
            # }
          "A String",
        ],
      },
      "properties": { # Optional. A mapping of property names to values, used to configure Spark SQL's SparkConf. Properties that conflict with values set by the Cloud Dataproc API may be overwritten.
        "a_key": "A String",
      },
    },
    "yarnApplications": [ # 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 <code>org.apache.hadoop.yarn.proto.YarnProtos.ApplicationReportProto</code>.Beta Feature: This report is available for testing purposes only. It may be changed before final release.
        "progress": 3.14, # Required. The numerical progress of the application, from 1 to 100.
        "state": "A String", # Required. The application state.
        "trackingUrl": "A String", # 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.
        "name": "A String", # Required. The application name.
      },
    ],
    "submittedBy": "A String", # Output only. The email address of the user submitting the job. For jobs submitted on the cluster, the address is <code>username@hostname</code>.
    "jobUuid": "A String", # 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.
    "pysparkJob": { # A Cloud Dataproc job for running Apache PySpark (https://spark.apache.org/docs/0.9.0/python-programming-guide.html) applications on YARN. # Job is a Pyspark job.
      "mainPythonFileUri": "A String", # Required. The HCFS URI of the main Python file to use as the driver. Must be a .py file.
      "jarFileUris": [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Python driver and tasks.
        "A String",
      ],
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "args": [ # 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.
        "A String",
      ],
      "fileUris": [ # Optional. HCFS URIs of files to be copied to the working directory of Python drivers and distributed tasks. Useful for naively parallel tasks.
        "A String",
      ],
      "archiveUris": [ # Optional. HCFS URIs of archives to be extracted in the working directory of .jar, .tar, .tar.gz, .tgz, and .zip.
        "A String",
      ],
      "pythonFileUris": [ # Optional. HCFS file URIs of Python files to pass to the PySpark framework. Supported file types: .py, .egg, and .zip.
        "A String",
      ],
      "properties": { # Optional. A mapping of property names to values, used to configure PySpark. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
        "a_key": "A String",
      },
    },
    "labels": { # 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.
      "a_key": "A String",
    },
    "driverControlFilesUri": "A String", # 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.
    "sparkJob": { # A Cloud Dataproc job for running Apache Spark (http://spark.apache.org/) applications on YARN. # Job is a Spark job.
      "args": [ # 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.
        "A String",
      ],
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "jarFileUris": [ # Optional. HCFS URIs of jar files to add to the CLASSPATHs of the Spark driver and tasks.
        "A String",
      ],
      "fileUris": [ # Optional. HCFS URIs of files to be copied to the working directory of Spark drivers and distributed tasks. Useful for naively parallel tasks.
        "A String",
      ],
      "mainClass": "A String", # The name of the driver's main class. The jar file that contains the class must be in the default CLASSPATH or specified in jar_file_uris.
      "archiveUris": [ # Optional. HCFS URIs of archives to be extracted in the working directory of Spark drivers and tasks. Supported file types: .jar, .tar, .tar.gz, .tgz, and .zip.
        "A String",
      ],
      "mainJarFileUri": "A String", # The HCFS URI of the jar file that contains the main class.
      "properties": { # Optional. A mapping of property names to values, used to configure Spark. Properties that conflict with values set by the Cloud Dataproc API may be overwritten. Can include properties set in /etc/spark/conf/spark-defaults.conf and classes in user code.
        "a_key": "A String",
      },
    },
    "driverOutputResourceUri": "A String", # Output only. A URI pointing to the location of the stdout of the job's driver program.
    "prestoJob": { # A Cloud Dataproc job for running Presto (https://prestosql.io/) queries # Job is a Presto job
      "queryFileUri": "A String", # The HCFS URI of the script that contains SQL queries.
      "outputFormat": "A String", # Optional. The format in which query output will be displayed. See the Presto documentation for supported output formats
      "loggingConfig": { # The runtime logging config of the job. # Optional. The runtime log config for job execution.
        "driverLogLevels": { # The per-package log levels for the driver. This may include "root" package name to configure rootLogger. Examples:  'com.google = FATAL', 'root = INFO', 'org.apache = DEBUG'
          "a_key": "A String",
        },
      },
      "clientTags": [ # Optional. Presto client tags to attach to this query
        "A String",
      ],
      "queryList": { # A list of queries to run on a cluster. # A list of queries.
        "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
            # "hiveJob": {
            #   "queryList": {
            #     "queries": [
            #       "query1",
            #       "query2",
            #       "query3;query4",
            #     ]
            #   }
            # }
          "A String",
        ],
      },
      "continueOnFailure": 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.
      "properties": { # 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
        "a_key": "A String",
      },
    },
    "scheduling": { # Job scheduling options. # Optional. Job scheduling configuration.
      "maxFailuresPerHour": 42, # Optional. Maximum number of times per hour a driver may be restarted as a result of driver terminating with non-zero code before job is reported failed.A job may be reported as thrashing if driver exits with non-zero code 4 times within 10 minute window.Maximum value is 10.
    },
    "statusHistory": [ # Output only. The previous job status.
      { # Cloud Dataproc job status.
        "state": "A String", # Output only. A state message specifying the overall job state.
        "stateStartTime": "A String", # Output only. The time when this state was entered.
        "substate": "A String", # Output only. Additional state information, which includes status reported by the agent.
        "details": "A String", # Output only. Optional job state details, such as an error description if the state is <code>ERROR</code>.
      },
    ],
    "hiveJob": { # A Cloud Dataproc job for running Apache Hive (https://hive.apache.org/) queries on YARN. # Job is a Hive job.
      "queryFileUri": "A String", # The HCFS URI of the script that contains Hive queries.
      "scriptVariables": { # Optional. Mapping of query variable names to values (equivalent to the Hive command: SET name="value";).
        "a_key": "A String",
      },
      "jarFileUris": [ # 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.
        "A String",
      ],
      "queryList": { # A list of queries to run on a cluster. # A list of queries.
        "queries": [ # Required. The queries to execute. You do not need to terminate a query with a semicolon. Multiple queries can be specified in one string by separating each with a semicolon. Here is an example of an Cloud Dataproc API snippet that uses a QueryList to specify a HiveJob:
            # "hiveJob": {
            #   "queryList": {
            #     "queries": [
            #       "query1",
            #       "query2",
            #       "query3;query4",
            #     ]
            #   }
            # }
          "A String",
        ],
      },
      "continueOnFailure": 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.
      "properties": { # Optional. A mapping of property names and values, used to configure Hive. Properties that conflict with values set by the Cloud 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.
        "a_key": "A String",
      },
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="testIamPermissions">testIamPermissions(resource, body, 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 "fail open" 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. (required)
    The object takes the form of:

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

  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.
    "permissions": [ # A subset of TestPermissionsRequest.permissions that the caller is allowed.
      "A String",
    ],
  }</pre>
</div>

</body></html>