@Override public TapWith<Configuration, RecordReader, OutputCollector> withChildIdentifier( String identifier ) { Path path = new Path( identifier ); if( !path.toString().startsWith( getPath().toString() ) ) path = new Path( getPath(), path ); return create( getScheme(), path, getSinkMode() ); }
@Override public TapWith<Configuration, RecordReader, OutputCollector> withSinkMode( SinkMode sinkMode ) { return create( getScheme(), getPath(), sinkMode ); }
@Override public TapWith<Configuration, RecordReader, OutputCollector> withChildIdentifier( String identifier ) { Path path = new Path( identifier ); if( !path.toString().startsWith( getPath().toString() ) ) path = new Path( getPath(), path ); return create( getScheme(), path, getSinkMode() ); }
@Override public TapWith<Configuration, RecordReader, OutputCollector> withSinkMode( SinkMode sinkMode ) { return create( getScheme(), getPath(), sinkMode ); }
@Override public boolean applies( PlannerContext plannerContext, ElementGraph elementGraph, Scope scope ) { FlowElement edgeSource = elementGraph.getEdgeSource( scope ); FlowElement edgeTarget = elementGraph.getEdgeTarget( scope ); if( !( edgeSource instanceof Hfs ) || !( edgeTarget instanceof Hfs ) ) throw new IllegalStateException( "non Hfs Taps matched" ); Hfs predecessor = (Hfs) edgeSource; Hfs successor = (Hfs) edgeTarget; // does this scheme source what it sinks if( !successor.getScheme().isSymmetrical() ) return false; HadoopPlanner flowPlanner = (HadoopPlanner) plannerContext.getFlowPlanner(); URI tempURIScheme = flowPlanner.getDefaultURIScheme( predecessor ); // temp uses default fs URI successorURIScheme = flowPlanner.getURIScheme( successor ); if( !tempURIScheme.equals( successorURIScheme ) ) return false; // safe, both are symmetrical // should be called after fields are resolved if( !predecessor.getSourceFields().equals( successor.getSourceFields() ) ) return true; return true; } }
@Override public boolean applies( PlannerContext plannerContext, ElementGraph elementGraph, Scope scope ) { FlowElement edgeSource = elementGraph.getEdgeSource( scope ); FlowElement edgeTarget = elementGraph.getEdgeTarget( scope ); if( !( edgeSource instanceof Hfs ) || !( edgeTarget instanceof Hfs ) ) throw new IllegalStateException( "non Hfs Taps matched" ); Hfs predecessor = (Hfs) edgeSource; Hfs successor = (Hfs) edgeTarget; // does this scheme source what it sinks if( !successor.getScheme().isSymmetrical() ) return false; HadoopPlanner flowPlanner = (HadoopPlanner) plannerContext.getFlowPlanner(); URI tempURIScheme = flowPlanner.getDefaultURIScheme( predecessor ); // temp uses default fs URI successorURIScheme = flowPlanner.getURIScheme( successor ); if( !tempURIScheme.equals( successorURIScheme ) ) return false; // safe, both are symmetrical // should be called after fields are resolved if( !predecessor.getSourceFields().equals( successor.getSourceFields() ) ) return true; return true; } }