001/* 002 * Copyright (c) 2016-2017 Chris K Wensel <chris@wensel.net>. All Rights Reserved. 003 * Copyright (c) 2007-2017 Xplenty, Inc. All Rights Reserved. 004 * 005 * Project and contact information: http://www.cascading.org/ 006 * 007 * This file is part of the Cascading project. 008 * 009 * Licensed under the Apache License, Version 2.0 (the "License"); 010 * you may not use this file except in compliance with the License. 011 * You may obtain a copy of the License at 012 * 013 * http://www.apache.org/licenses/LICENSE-2.0 014 * 015 * Unless required by applicable law or agreed to in writing, software 016 * distributed under the License is distributed on an "AS IS" BASIS, 017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 018 * See the License for the specific language governing permissions and 019 * limitations under the License. 020 */ 021 022package cascading.flow.planner.rule; 023 024/** 025 */ 026public enum ProcessLevel 027 { 028 /** 029 * Applies assertions or transformations to the whole FlowElement assembly. 030 */ 031 Assembly, 032 033 /** 034 * Applies to sub-graphs of a flow where a step is a submitted unit of cluster work. 035 */ 036 Step, 037 038 /** 039 * Applies to generation sub-graphs of steps where is a node is a unit of processing with a step. 040 * <p> 041 * In MapReduce its a Map or Reduce node (where Map and Reduce are Kinds). 042 * <p> 043 * In Tez its a Processor. 044 */ 045 Node, 046 047 /** 048 * Applies to sub-graphs within nodes having a single streamed input, and multiple accumulated inputs. 049 * <p> 050 * In MapReduce, a Mapper task can arbitrarily process a given input file via the MultiInputSplit. 051 * <p> 052 * Tez currently does not allow multiply physical inputs per processor. 053 */ 054 Pipeline; 055 056 public static ProcessLevel parent( ProcessLevel level ) 057 { 058 if( level == Assembly ) 059 return null; 060 061 return ProcessLevel.values()[ level.ordinal() - 1 ]; 062 } 063 }