# Class Job (2.65.0)

2.65.0 (latest) 2.62.0 2.61.0 2.60.0 2.59.0 2.58.0 2.57.2 2.56.0 2.55.3 2.54.2 2.53.0 2.52.0 2.51.0 2.50.1 2.49.0 2.48.1 2.47.0 2.46.0 2.45.0 2.44.0 2.43.3 2.42.3 2.41.0 2.40.3 2.39.1 2.38.2 2.37.2 2.36.0 2.35.0 2.34.2 2.33.2

    public class Job extends JobInfo

A Google BigQuery Job.

Objects of this class are immutable. To get a `Job` object with the most recent
information use [#reload](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.Job#com_google_cloud_bigquery_Job_reload_). `Job` adds a layer of service-related functionality over
[JobInfo](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.JobInfo).

## Inheritance

[Object](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html) \> [JobInfo](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.JobInfo) \> Job

## Inherited Members

[JobInfo.\<C\>getConfiguration()](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.JobInfo#com_google_cloud_bigquery_JobInfo__C_getConfiguration__) [JobInfo.\<S\>getStatistics()](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.JobInfo#com_google_cloud_bigquery_JobInfo__S_getStatistics__) [JobInfo.equals(Object)](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.JobInfo#com_google_cloud_bigquery_JobInfo_equals_java_lang_Object_) [JobInfo.getEtag()](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.JobInfo#com_google_cloud_bigquery_JobInfo_getEtag__) [JobInfo.getGeneratedId()](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.JobInfo#com_google_cloud_bigquery_JobInfo_getGeneratedId__) [JobInfo.getJobId()](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.JobInfo#com_google_cloud_bigquery_JobInfo_getJobId__) [JobInfo.getSelfLink()](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.JobInfo#com_google_cloud_bigquery_JobInfo_getSelfLink__) [JobInfo.getStatus()](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.JobInfo#com_google_cloud_bigquery_JobInfo_getStatus__) [JobInfo.getUserEmail()](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.JobInfo#com_google_cloud_bigquery_JobInfo_getUserEmail__) [JobInfo.hashCode()](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.JobInfo#com_google_cloud_bigquery_JobInfo_hashCode__) [JobInfo.newBuilder(JobConfiguration)](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.JobInfo#com_google_cloud_bigquery_JobInfo_newBuilder_com_google_cloud_bigquery_JobConfiguration_) [JobInfo.of(JobConfiguration)](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.JobInfo#com_google_cloud_bigquery_JobInfo_of_com_google_cloud_bigquery_JobConfiguration_) [JobInfo.of(JobId,JobConfiguration)](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.JobInfo#com_google_cloud_bigquery_JobInfo_of_com_google_cloud_bigquery_JobId_com_google_cloud_bigquery_JobConfiguration_) [JobInfo.toBuilder()](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.JobInfo#com_google_cloud_bigquery_JobInfo_toBuilder__) [JobInfo.toString()](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.JobInfo#com_google_cloud_bigquery_JobInfo_toString__) [Object.clone()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#clone--) [Object.finalize()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#finalize--) [Object.getClass()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#getClass--) [Object.notify()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notify--) [Object.notifyAll()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#notifyAll--) [Object.wait()](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait--) [Object.wait(long)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-) [Object.wait(long,int)](https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html#wait-long-int-)

## Methods

### cancel()

    public boolean cancel()

Sends a job cancel request.

Example of cancelling a job.


     if (job.cancel()) {
       return true; // job successfully cancelled
     } else {
       // job not found
     }
     
| **Returns** ||
|---|---|
| **Type** | **Description** |
| `https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html` | `true` if cancel request was sent successfully, `false` if job was not found |

### equals(Object obj)

    public final boolean equals(Object obj)

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `obj` | `https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html` |   |

**Overrides** [JobInfo.equals(Object obj)](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.JobInfo#com_google_cloud_bigquery_JobInfo_equals_java_lang_Object_)

### exists()

    public boolean exists()

Checks if this job exists.

Example of checking that a job exists.


     if (!job.exists()) {
       // job doesn't exist
     }
     
| **Returns** ||
|---|---|
| **Type** | **Description** |
| `https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html` | `true` if this job exists, `false` otherwise |

### getBigQuery()

    public BigQuery getBigQuery()

Returns the job's `BigQuery` object used to issue requests.

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.BigQuery` |   |

### getQueryResults(BigQuery.QueryResultsOption\[\] options)

    public TableResult getQueryResults(BigQuery.QueryResultsOption[] options)

Gets the query results of this job. This job must be of type `
JobConfiguration.Type.QUERY`, otherwise this method will throw UnsupportedOperationException.

If the job hasn't finished, this method waits for the job to complete. However, the state of
the current `Job` instance is not updated. To get the new state, call [#waitFor(RetryOption...)](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.Job#com_google_cloud_bigquery_Job_waitFor_) or [#reload(JobOption...)](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.Job#com_google_cloud_bigquery_Job_reload_).

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `options` | `https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.BigQuery.QueryResultsOption[]` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.TableResult` |   |

| **Exceptions** ||
|---|---|
| **Type** | **Description** |
| `https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html` | upon failure |
| `https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.JobException` | upon failure |

### hashCode()

    public final int hashCode()

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html` |   |

**Overrides** [JobInfo.hashCode()](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.JobInfo#com_google_cloud_bigquery_JobInfo_hashCode__)

### isDone()

    public boolean isDone()

Checks if this job has completed its execution, either failing or succeeding. If the job does
not exist this method returns `true`.

Example of waiting for a job until it reports that it is done.


     while (!job.isDone()) {
       Thread.sleep(1000L);
     }
     
| **Returns** ||
|---|---|
| **Type** | **Description** |
| `https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html` | `true` if this job is in [JobStatus.State#DONE](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.JobStatus.State#com_google_cloud_bigquery_JobStatus_State_DONE) state or if it does not exist, `false` if the state is not [JobStatus.State#DONE](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.JobStatus.State#com_google_cloud_bigquery_JobStatus_State_DONE) |

### reload(BigQuery.JobOption\[\] options)

    public Job reload(BigQuery.JobOption[] options)

Fetches current job's latest information. Returns `null` if the job does not exist.

Example of reloading all fields until job status is DONE.


     while (!JobStatus.State.DONE.equals(job.getStatus().getState())) {
       Thread.sleep(1000L);
       job = job.reload();
     }
     
Example of reloading status field until job status is DONE.


     while (!JobStatus.State.DONE.equals(job.getStatus().getState())) {
       Thread.sleep(1000L);
       job = job.reload(BigQuery.JobOption.fields(BigQuery.JobField.STATUS));
     }
     
| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `options` | `https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.BigQuery.JobOption[]` job options |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.Job` | a `Job` object with latest information or `null` if not found |

### toBuilder()

    public Job.Builder toBuilder()

Returns a builder for the job object.

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.Job.Builder` |   |

**Overrides** [JobInfo.toBuilder()](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.JobInfo#com_google_cloud_bigquery_JobInfo_toBuilder__)

### waitFor(RetryOption\[\] waitOptions)

    public Job waitFor(RetryOption[] waitOptions)

See [#waitFor(BigQueryRetryConfig, RetryOption...)](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.Job#com_google_cloud_bigquery_Job_waitFor_)

| **Parameter** ||
|---|---|
| **Name** | **Description** |
| `waitOptions` | `com.google.cloud.RetryOption[]` |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.Job` |   |

| **Exceptions** ||
|---|---|
| **Type** | **Description** |
| `https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html` |   |

### waitFor(BigQueryRetryConfig bigQueryRetryConfig, RetryOption\[\] waitOptions)

    public Job waitFor(BigQueryRetryConfig bigQueryRetryConfig, RetryOption[] waitOptions)

Blocks until this job completes its execution, either failing or succeeding. This method
returns current job's latest information. If the job no longer exists, this method returns
`null`. By default, the job status is checked using jittered exponential backoff with 1
second as an initial delay, 2.0 as a backoff factor, 1 minute as maximum delay between polls,
12 hours as a total timeout and unlimited number of attempts. For query jobs, the job status
check can be configured to retry on specific BigQuery error messages using [BigQueryRetryConfig](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.BigQueryRetryConfig). This [BigQueryRetryConfig](https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.BigQueryRetryConfig) configuration is not available for
non-query jobs.

Example usage of `waitFor()`.


     Job completedJob = job.waitFor();
     if (completedJob == null) {
       // job no longer exists
     } else if (completedJob.getStatus().getError() != null) {
       // job failed, handle error
     } else {
       // job completed successfully
     }
     
Example usage of `waitFor()` with checking period and timeout.


     Job completedJob =
         job.waitFor(
             RetryOption.initialRetryDelay(Duration.ofSeconds(1)),
             RetryOption.totalTimeout(Duration.ofMinutes(1)));
     if (completedJob == null) {
       // job no longer exists
     } else if (completedJob.getStatus().getError() != null) {
       // job failed, handle error
     } else {
       // job completed successfully
     }
     
Example usage of `waitFor()` with BigQuery retry configuration to retry on rate limit
exceeded error messages for query jobs.


     Job completedJob =
         job.waitFor(
                 BigQueryRetryConfig.newBuilder()
                     .retryOnMessage(BigQueryErrorMessages.RATE_LIMIT_EXCEEDED_MSG)
                     .retryOnMessage(BigQueryErrorMessages.JOB_RATE_LIMIT_EXCEEDED_MSG)
                     .retryOnRegEx(BigQueryErrorMessages.RetryRegExPatterns.RATE_LIMIT_EXCEEDED_REGEX)
                     .build());
     if (completedJob == null) {
       // job no longer exists
     } else if (completedJob.getStatus().getError() != null) {
       // job failed, handle error
     } else {
       // job completed successfully
     }
     
| **Parameters** ||
|---|---|
| **Name** | **Description** |
| `bigQueryRetryConfig` | `https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.BigQueryRetryConfig` configures retries for query jobs for BigQuery failures |
| `waitOptions` | `com.google.cloud.RetryOption[]` options to configure checking period and timeout |

| **Returns** ||
|---|---|
| **Type** | **Description** |
| `https://docs.cloud.google.com/java/docs/reference/google-cloud-bigquery/latest/com.google.cloud.bigquery.Job` |   |

| **Exceptions** ||
|---|---|
| **Type** | **Description** |
| `https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html` | upon failure, check BigQueryException#getCause() for details |