Class Job

All Implemented Interfaces:
Serializable

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(com.google.cloud.bigquery.BigQuery.JobOption...). Job adds a layer of service-related functionality over JobInfo.

See Also:
  • Method Details

    • exists

      public boolean exists()
      Checks if this job exists.

      Example of checking that a job exists.

      
       if (!job.exists()) {
         // job doesn't exist
       }
       
      Returns:
      true if this job exists, false otherwise
      Throws:
      BigQueryException - upon failure
    • 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:
      true if this job is in JobStatus.State.DONE state or if it does not exist, false if the state is not JobStatus.State.DONE
      Throws:
      BigQueryException - upon failure
    • waitFor

      public Job waitFor(com.google.cloud.RetryOption... waitOptions) throws InterruptedException
      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.

      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
       }
       
      Parameters:
      waitOptions - options to configure checking period and timeout
      Throws:
      BigQueryException - upon failure, check Throwable.getCause() for details
      InterruptedException - if the current thread gets interrupted while waiting for the job to complete
    • getQueryResults

      public TableResult getQueryResults(BigQuery.QueryResultsOption... options) throws InterruptedException, JobException
      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...) or reload(JobOption...).

      Throws:
      BigQueryException - upon failure
      InterruptedException
      JobException
    • reload

      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));
       }
       
      Parameters:
      options - job options
      Returns:
      a Job object with latest information or null if not found
      Throws:
      BigQueryException - upon failure
    • 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:
      true if cancel request was sent successfully, false if job was not found
      Throws:
      BigQueryException - upon failure
    • getBigQuery

      public BigQuery getBigQuery()
      Returns the job's BigQuery object used to issue requests.
    • toBuilder

      public Job.Builder toBuilder()
      Description copied from class: JobInfo
      Returns a builder for the job object.
      Overrides:
      toBuilder in class JobInfo
    • equals

      public final boolean equals(Object obj)
      Overrides:
      equals in class JobInfo
    • hashCode

      public final int hashCode()
      Overrides:
      hashCode in class JobInfo