Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * 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.pig.backend.hadoop.executionengine.physicalLayer.relationalOperators;
 
 import java.util.List;
 
The store operator which is used in two ways: 1) As a local operator it can be used to store files 2) In the Map Reduce setting, it is used to create jobs from MapReduce operators which keep the loads and stores in the Map and Reduce Plans till the job is created
 
 public class POStore extends PhysicalOperator {
 
     private static final long serialVersionUID = 1L;
     private static Result empty = new Result(.null);
     transient private StoreFuncInterface storer;    
     transient private POStoreImpl impl;
     private FileSpec sFile;
     private Schema schema;
     
     transient private Counter outputRecordCounter = null;
 
     // flag to distinguish user stores from MRCompiler stores.
     private boolean isTmpStore;
     
     // flag to distinguish single store from multiquery store.
     private boolean isMultiStore;
     
     // flag to indicate if the custom counter should be disabled.
     private boolean disableCounter = false;
     
     // the index of multiquery store to track counters
     private int index;
     
     // If we know how to reload the store, here's how. The lFile
     // FileSpec is set in PigServer.postProcess. It can be used to
     // reload this store, if the optimizer has the need.
     private FileSpec lFile;
     
     // if the predecessor of store is Sort (order by)
     // then sortInfo will have information of the sort 
     // column names and the asc/dsc info
     private SortInfo sortInfo;
     
     private String signature;
     
     public POStore(OperatorKey k) {
         this(k, -1, null);
     }
 
     public POStore(OperatorKey kint rp) {
         this(krpnull);
     }
     
     public POStore(OperatorKey kint rpList<PhysicalOperatorinp) {
         super(krpinp);
     }
    
    
Set up the storer

    public void setUp() throws IOException{
        if ( != null) {
            try{
                 = .createStoreFunc(this);
                if (! && ! &&  instanceof MapReducePOStoreImpl) {
                     = 
                        ((MapReducePOStoreImpl).createRecordCounter(this);
                }
            }catch (IOException ioe) {
                int errCode = 2081;
                String msg = "Unable to setup the store function.";            
                throw new ExecException(msgerrCode.ioe);
            }
        }
    }
    
    
Called at the end of processing for clean up.

    public void tearDown() throws IOException{
        if ( != null) {
            .tearDown();
        }
   }
    
    
To perform cleanup when there is an error.

    public void cleanUp() throws IOException{
        if ( != null) {
            .cleanUp();
        }
    }
    
    @Override
    public Result getNextTuple() throws ExecException {
        Result res = processInput();
        try {
            switch (res.returnStatus) {
            case .:
                if ( == null) {
                    .putNext((Tuple)res.result);
                } else
                    illustratorMarkup(res.resultres.result, 0);
                res = ;
                if ( != null) {
                    .increment(1);
                }
                break;
            case .:
                break;
            case .:
            case .:
            default:
                break;
            }
        } catch (IOException ioe) {
            int errCode = 2135;
            String msg = "Received error from store function." + ioe.getMessage();
            throw new ExecException(msgerrCodeioe);
        }
        return res;
    }
    @Override
    public String name() {
        return ( != null) ? getAliasString() + "Store" + "("
                + .toString() + ")" + " - " + .toString()
                : getAliasString() + "Store" + "(" + "DummyFil:DummyLdr" + ")"
                        + " - " + .toString();
    }
    @Override
    public boolean supportsMultipleInputs() {
        return false;
    }
    @Override
    public boolean supportsMultipleOutputs() {
        return true;
    }
    @Override
    public void visit(PhyPlanVisitor vthrows VisitorException {
        v.visitStore(this);
    }
    public FileSpec getSFile() {
        return ;
    }
    public void setSFile(FileSpec sFile) {
        this. = sFile;
         = null;
    }
    public void setInputSpec(FileSpec lFile) {
        this. = lFile;
    }
    public FileSpec getInputSpec() {
        return ;
    }
    
    public void setIsTmpStore(boolean tmp) {
         = tmp;
    }
    
    public boolean isTmpStore() {
        return ;
    }
    public void setStoreImpl(POStoreImpl impl) {
        this. = impl;
    }
    public void setSchema(Schema schema) {
        this. = schema;
    }
    
    public Schema getSchema() {
        return ;
    }
    
    
    public StoreFuncInterface getStoreFunc() {
        if( == null){
             = (StoreFuncInterface)PigContext.instantiateFuncFromSpec(.getFuncSpec());
        }
        return ;
    }
    
    

Parameters:
sortInfo the sortInfo to set
    public void setSortInfo(SortInfo sortInfo) {
        this. = sortInfo;
    }

    

Returns:
the sortInfo
    public SortInfo getSortInfo() {
        return ;
    }
    
    public String getSignature() {
        return ;
    }
    
    public void setSignature(String signature) {
        this. = signature;
    }
    public void setMultiStore(boolean isMultiStore) {
        this. = isMultiStore;
    }
    public boolean isMultiStore() {
        return ;
    }
    
    @Override
    public Tuple illustratorMarkup(Object inObject outint eqClassIndex) {
        if( != null) {
            ExampleTuple tIn = (ExampleTuplein;
            LineageTracer lineage = .getLineage();
            lineage.insert(tIn);
            if (!)
                .getEquivalenceClasses().get(eqClassIndex).add(tIn);
            .addData((Tupleout);
        }
        return (Tupleout;
    }
    public void setIndex(int index) {
        this. = index;
    }
    public int getIndex() {
        return ;
    }
    public void setDisableCounter(boolean disableCounter) {
        this. = disableCounter;
    }
    public boolean disableCounter() {
        return ;
    }
    public void setStoreFunc(StoreFuncInterface storeFunc) {
        this. = storeFunc;
    }
New to GrepCode? Check out our FAQ X