org.apache.hadoop.mapred.JobProfile.java Source code

Java tutorial

Introduction

Here is the source code for org.apache.hadoop.mapred.JobProfile.java

Source

/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.hadoop.mapred;

import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import java.net.URL;

import org.apache.hadoop.classification.InterfaceAudience;
import org.apache.hadoop.classification.InterfaceStability;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.Writable;
import org.apache.hadoop.io.WritableFactories;
import org.apache.hadoop.io.WritableFactory;
import org.apache.hadoop.util.StringInterner;

/**************************************************
 * A JobProfile is a MapReduce primitive.  Tracks a job,
 * whether living or dead.
 *
 **************************************************/
@InterfaceAudience.LimitedPrivate({ "MapReduce" })
@InterfaceStability.Unstable
public class JobProfile implements Writable {

    static { // register a ctor
        WritableFactories.setFactory(JobProfile.class, new WritableFactory() {
            public Writable newInstance() {
                return new JobProfile();
            }
        });
    }

    String user;
    final JobID jobid;
    String jobFile;
    String url;
    String name;
    String queueName;

    /**
     * Construct an empty {@link JobProfile}.
     */
    public JobProfile() {
        jobid = new JobID();
    }

    /**
     * Construct a {@link JobProfile} the userid, jobid, 
     * job config-file, job-details url and job name. 
     * 
     * @param user userid of the person who submitted the job.
     * @param jobid id of the job.
     * @param jobFile job configuration file. 
     * @param url link to the web-ui for details of the job.
     * @param name user-specified job name.
     */
    public JobProfile(String user, org.apache.hadoop.mapreduce.JobID jobid, String jobFile, String url,
            String name) {
        this(user, jobid, jobFile, url, name, JobConf.DEFAULT_QUEUE_NAME);
    }

    /**
     * Construct a {@link JobProfile} the userid, jobid, 
     * job config-file, job-details url and job name. 
     * 
     * @param user userid of the person who submitted the job.
     * @param jobid id of the job.
     * @param jobFile job configuration file. 
     * @param url link to the web-ui for details of the job.
     * @param name user-specified job name.
     * @param queueName name of the queue to which the job is submitted
     */
    public JobProfile(String user, org.apache.hadoop.mapreduce.JobID jobid, String jobFile, String url, String name,
            String queueName) {
        this.user = user;
        this.jobid = JobID.downgrade(jobid);
        this.jobFile = jobFile;
        this.url = url;
        this.name = name;
        this.queueName = queueName;
    }

    /**
     * @deprecated use JobProfile(String, JobID, String, String, String) instead
     */
    @Deprecated
    public JobProfile(String user, String jobid, String jobFile, String url, String name) {
        this(user, JobID.forName(jobid), jobFile, url, name);
    }

    /**
     * Get the user id.
     */
    public String getUser() {
        return user;
    }

    /**
     * Get the job id.
     */
    public JobID getJobID() {
        return jobid;
    }

    /**
     * @deprecated use getJobID() instead
     */
    @Deprecated
    public String getJobId() {
        return jobid.toString();
    }

    /**
     * Get the configuration file for the job.
     */
    public String getJobFile() {
        return jobFile;
    }

    /**
     * Get the link to the web-ui for details of the job.
     */
    public URL getURL() {
        try {
            return new URL(url);
        } catch (IOException ie) {
            return null;
        }
    }

    /**
     * Get the user-specified job name.
     */
    public String getJobName() {
        return name;
    }

    /**
     * Get the name of the queue to which the job is submitted.
     * @return name of the queue.
     */
    public String getQueueName() {
        return queueName;
    }

    ///////////////////////////////////////
    // Writable
    ///////////////////////////////////////
    public void write(DataOutput out) throws IOException {
        jobid.write(out);
        Text.writeString(out, jobFile);
        Text.writeString(out, url);
        Text.writeString(out, user);
        Text.writeString(out, name);
        Text.writeString(out, queueName);
    }

    public void readFields(DataInput in) throws IOException {
        jobid.readFields(in);
        this.jobFile = StringInterner.weakIntern(Text.readString(in));
        this.url = StringInterner.weakIntern(Text.readString(in));
        this.user = StringInterner.weakIntern(Text.readString(in));
        this.name = StringInterner.weakIntern(Text.readString(in));
        this.queueName = StringInterner.weakIntern(Text.readString(in));
    }
}