Java源码示例:org.apache.flink.api.common.ExecutionMode

示例1
@Test
public void testBatch() {
	// BATCH should result in batching the shuffle all the way
	verifyBranchingJoiningPlan(ExecutionMode.BATCH,
			DataExchangeMode.PIPELINED,   // to map
			DataExchangeMode.PIPELINED,   // to combiner connections are pipelined
			DataExchangeMode.BATCH,       // to reduce
			DataExchangeMode.BATCH,       // to filter
			DataExchangeMode.PIPELINED,   // to sink after reduce
			DataExchangeMode.BATCH,       // to join (first input)
			DataExchangeMode.BATCH,       // to join (second input)
			DataExchangeMode.PIPELINED,   // combiner connections are pipelined
			DataExchangeMode.BATCH,       // to other reducer
			DataExchangeMode.PIPELINED,   // to flatMap
			DataExchangeMode.PIPELINED,   // to sink after flatMap
			DataExchangeMode.BATCH,       // to coGroup (first input)
			DataExchangeMode.BATCH,       // to coGroup (second input)
			DataExchangeMode.PIPELINED    // to sink after coGroup
	);
}
 
示例2
/**
 * This function connects the operators that produce the broadcast inputs to this operator.
 *
 * @param operatorToNode The map from program operators to optimizer nodes.
 * @param defaultExchangeMode The data exchange mode to use, if the operator does not
 *                            specify one.
 *
 * @throws CompilerException
 */
public void setBroadcastInputs(Map<Operator<?>, OptimizerNode> operatorToNode, ExecutionMode defaultExchangeMode) {
	// skip for Operators that don't support broadcast variables 
	if (!(getOperator() instanceof AbstractUdfOperator<?, ?>)) {
		return;
	}

	// get all broadcast inputs
	AbstractUdfOperator<?, ?> operator = ((AbstractUdfOperator<?, ?>) getOperator());

	// create connections and add them
	for (Map.Entry<String, Operator<?>> input : operator.getBroadcastInputs().entrySet()) {
		OptimizerNode predecessor = operatorToNode.get(input.getValue());
		DagConnection connection = new DagConnection(predecessor, this,
														ShipStrategyType.BROADCAST, defaultExchangeMode);
		addBroadcastConnection(input.getKey(), connection);
		predecessor.addOutgoingConnection(connection);
	}
}
 
示例3
@Test
public void testBatchForced() {
	// BATCH_FORCED should result in batching all the way
	verifyBranchingJoiningPlan(ExecutionMode.BATCH_FORCED,
			DataExchangeMode.BATCH,       // to map
			DataExchangeMode.PIPELINED,   // to combiner connections are pipelined
			DataExchangeMode.BATCH,       // to reduce
			DataExchangeMode.BATCH,       // to filter
			DataExchangeMode.BATCH,       // to sink after reduce
			DataExchangeMode.BATCH,       // to join (first input)
			DataExchangeMode.BATCH,       // to join (second input)
			DataExchangeMode.PIPELINED,   // combiner connections are pipelined
			DataExchangeMode.BATCH,       // to other reducer
			DataExchangeMode.BATCH,       // to flatMap
			DataExchangeMode.BATCH,       // to sink after flatMap
			DataExchangeMode.BATCH,       // to coGroup (first input)
			DataExchangeMode.BATCH,       // to coGroup (second input)
			DataExchangeMode.BATCH        // to sink after coGroup
	);
}
 
示例4
@Test
public void testBatch() {
	// BATCH should result in batching the shuffle all the way
	verifyBranchingJoiningPlan(ExecutionMode.BATCH,
			DataExchangeMode.PIPELINED,   // to map
			DataExchangeMode.PIPELINED,   // to combiner connections are pipelined
			DataExchangeMode.BATCH,       // to reduce
			DataExchangeMode.BATCH,       // to filter
			DataExchangeMode.PIPELINED,   // to sink after reduce
			DataExchangeMode.BATCH,       // to join (first input)
			DataExchangeMode.BATCH,       // to join (second input)
			DataExchangeMode.PIPELINED,   // combiner connections are pipelined
			DataExchangeMode.BATCH,       // to other reducer
			DataExchangeMode.PIPELINED,   // to flatMap
			DataExchangeMode.PIPELINED,   // to sink after flatMap
			DataExchangeMode.BATCH,       // to coGroup (first input)
			DataExchangeMode.BATCH,       // to coGroup (second input)
			DataExchangeMode.PIPELINED    // to sink after coGroup
	);
}
 
示例5
@Test
public void testBatchForced() {
	// BATCH_FORCED should result in batching all the way
	verifyBranchingJoiningPlan(ExecutionMode.BATCH_FORCED,
			DataExchangeMode.BATCH,       // to map
			DataExchangeMode.PIPELINED,   // to combiner connections are pipelined
			DataExchangeMode.BATCH,       // to reduce
			DataExchangeMode.BATCH,       // to filter
			DataExchangeMode.BATCH,       // to sink after reduce
			DataExchangeMode.BATCH,       // to join (first input)
			DataExchangeMode.BATCH,       // to join (second input)
			DataExchangeMode.PIPELINED,   // combiner connections are pipelined
			DataExchangeMode.BATCH,       // to other reducer
			DataExchangeMode.BATCH,       // to flatMap
			DataExchangeMode.BATCH,       // to sink after flatMap
			DataExchangeMode.BATCH,       // to coGroup (first input)
			DataExchangeMode.BATCH,       // to coGroup (second input)
			DataExchangeMode.BATCH        // to sink after coGroup
	);
}
 
示例6
private static JobGraph createJobGraph(
		ScheduleMode scheduleMode,
		ResultPartitionType resultPartitionType,
		ExecutionMode executionMode) throws IOException {
	SlotSharingGroup slotSharingGroup = new SlotSharingGroup();

	JobVertex source = new JobVertex("source");
	source.setInvokableClass(LongValueSource.class);
	source.setParallelism(PARALLELISM);
	source.setSlotSharingGroup(slotSharingGroup);

	JobVertex sink = new JobVertex("sink");
	sink.setInvokableClass(ResultVerifyingSink.class);
	sink.setParallelism(PARALLELISM);
	sink.setSlotSharingGroup(slotSharingGroup);

	sink.connectNewDataSetAsInput(source, DistributionPattern.ALL_TO_ALL, resultPartitionType);
	JobGraph jobGraph = new JobGraph(source, sink);
	jobGraph.setScheduleMode(scheduleMode);

	ExecutionConfig executionConfig = new ExecutionConfig();
	executionConfig.setExecutionMode(executionMode);
	jobGraph.setExecutionConfig(executionConfig);

	return jobGraph;
}
 
示例7
@Test
public void testBatch() {
	// BATCH should result in batching the shuffle all the way
	verifyBranchingJoiningPlan(ExecutionMode.BATCH,
			DataExchangeMode.PIPELINED,   // to map
			DataExchangeMode.PIPELINED,   // to combiner connections are pipelined
			DataExchangeMode.BATCH,       // to reduce
			DataExchangeMode.BATCH,       // to filter
			DataExchangeMode.PIPELINED,   // to sink after reduce
			DataExchangeMode.BATCH,       // to join (first input)
			DataExchangeMode.BATCH,       // to join (second input)
			DataExchangeMode.PIPELINED,   // combiner connections are pipelined
			DataExchangeMode.BATCH,       // to other reducer
			DataExchangeMode.PIPELINED,   // to flatMap
			DataExchangeMode.PIPELINED,   // to sink after flatMap
			DataExchangeMode.BATCH,       // to coGroup (first input)
			DataExchangeMode.BATCH,       // to coGroup (second input)
			DataExchangeMode.PIPELINED    // to sink after coGroup
	);
}
 
示例8
@Test
public void testBatchForced() {
	// BATCH_FORCED should result in batching all the way
	verifyBranchingJoiningPlan(ExecutionMode.BATCH_FORCED,
			DataExchangeMode.BATCH,       // to map
			DataExchangeMode.PIPELINED,   // to combiner connections are pipelined
			DataExchangeMode.BATCH,       // to reduce
			DataExchangeMode.BATCH,       // to filter
			DataExchangeMode.BATCH,       // to sink after reduce
			DataExchangeMode.BATCH,       // to join (first input)
			DataExchangeMode.BATCH,       // to join (second input)
			DataExchangeMode.PIPELINED,   // combiner connections are pipelined
			DataExchangeMode.BATCH,       // to other reducer
			DataExchangeMode.BATCH,       // to flatMap
			DataExchangeMode.BATCH,       // to sink after flatMap
			DataExchangeMode.BATCH,       // to coGroup (first input)
			DataExchangeMode.BATCH,       // to coGroup (second input)
			DataExchangeMode.BATCH        // to sink after coGroup
	);
}
 
示例9
@Test
public void testPipelineBreakerBroadcastedAllReduce() {
	try {
		ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
		env.getConfig().setExecutionMode(ExecutionMode.PIPELINED);
		env.setParallelism(64);
		
		DataSet<Long> sourceWithMapper = env.generateSequence(1, 10).map(new IdentityMapper<Long>());
		
		DataSet<Long> bcInput1 = sourceWithMapper
									.map(new IdentityMapper<Long>())
									.reduce(new SelectOneReducer<Long>());
		DataSet<Long> bcInput2 = env.generateSequence(1, 10);
		
		DataSet<Long> result = sourceWithMapper
				.map(new IdentityMapper<Long>())
						.withBroadcastSet(bcInput1, "bc1")
						.withBroadcastSet(bcInput2, "bc2");
		
		result.output(new DiscardingOutputFormat<Long>());
		
		Plan p = env.createProgramPlan();
		OptimizedPlan op = compileNoStats(p);
		
		SinkPlanNode sink = op.getDataSinks().iterator().next();
		SingleInputPlanNode mapper = (SingleInputPlanNode) sink.getInput().getSource();

		assertEquals(TempMode.NONE, mapper.getInput().getTempMode());
		assertEquals(DataExchangeMode.BATCH, mapper.getInput().getDataExchangeMode());
	}
	catch (Exception e) {
		e.printStackTrace();
		fail(e.getMessage());
	}
}
 
示例10
public UnionClosedBranchingTest(
	ExecutionMode executionMode,
	DataExchangeMode sourceToUnion,
	DataExchangeMode unionToJoin) {

	this.executionMode = executionMode;
	this.sourceToUnion = sourceToUnion;
	this.unionToJoin = unionToJoin;
}
 
示例11
@Override
public void setInput(Map<Operator<?>, OptimizerNode> contractToNode, ExecutionMode defaultExchangeMode) {
	Operator<?> children = getOperator().getInput();

	final OptimizerNode pred;
	final DagConnection conn;
	
	pred = contractToNode.get(children);
	conn = new DagConnection(pred, this, defaultExchangeMode);
		
	// create the connection and add it
	this.input = conn;
	pred.addOutgoingConnection(conn);
}
 
示例12
public SinkJoiner(OptimizerNode input1, OptimizerNode input2) {
	super(new NoOpBinaryUdfOp<Nothing>(new NothingTypeInfo()));

	DagConnection conn1 = new DagConnection(input1, this, null, ExecutionMode.PIPELINED);
	DagConnection conn2 = new DagConnection(input2, this, null, ExecutionMode.PIPELINED);
	
	this.input1 = conn1;
	this.input2 = conn2;
	
	setParallelism(1);
}
 
示例13
/**
 * Gets the data exchange mode to use for this connection.
 *
 * @return The data exchange mode to use for this connection.
 */
public ExecutionMode getDataExchangeMode() {
	if (dataExchangeMode == null) {
		throw new IllegalStateException("This connection does not have the data exchange mode set");
	}
	return dataExchangeMode;
}
 
示例14
@Test
public void testPipelined() {
	// PIPELINED should result in pipelining all the way
	verifyBranchigPlan(ExecutionMode.PIPELINED,
			DataExchangeMode.PIPELINED, DataExchangeMode.PIPELINED,
			DataExchangeMode.PIPELINED, DataExchangeMode.PIPELINED,
			DataExchangeMode.PIPELINED, DataExchangeMode.PIPELINED,
			DataExchangeMode.PIPELINED);
}
 
示例15
@Test
public void testBatch() {
	// BATCH should result in batching the shuffle all the way
	verifyBranchigPlan(ExecutionMode.BATCH,
			DataExchangeMode.PIPELINED, DataExchangeMode.PIPELINED,
			DataExchangeMode.PIPELINED, DataExchangeMode.BATCH,
			DataExchangeMode.BATCH, DataExchangeMode.PIPELINED,
			DataExchangeMode.PIPELINED);
}
 
示例16
@Test
public void testPipelined() {
	// PIPELINED should result in pipelining all the way
	verifyBranchigPlan(ExecutionMode.PIPELINED,
			DataExchangeMode.PIPELINED, DataExchangeMode.PIPELINED,
			DataExchangeMode.PIPELINED, DataExchangeMode.PIPELINED,
			DataExchangeMode.PIPELINED, DataExchangeMode.PIPELINED,
			DataExchangeMode.PIPELINED);
}
 
示例17
@Test
public void testPipelineBreakerBroadcastedAllReduce() {
	try {
		ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
		env.getConfig().setExecutionMode(ExecutionMode.PIPELINED);
		env.setParallelism(64);
		
		DataSet<Long> sourceWithMapper = env.generateSequence(1, 10).map(new IdentityMapper<Long>());
		
		DataSet<Long> bcInput1 = sourceWithMapper
									.map(new IdentityMapper<Long>())
									.reduce(new SelectOneReducer<Long>());
		DataSet<Long> bcInput2 = env.generateSequence(1, 10);
		
		DataSet<Long> result = sourceWithMapper
				.map(new IdentityMapper<Long>())
						.withBroadcastSet(bcInput1, "bc1")
						.withBroadcastSet(bcInput2, "bc2");
		
		result.output(new DiscardingOutputFormat<Long>());
		
		Plan p = env.createProgramPlan();
		OptimizedPlan op = compileNoStats(p);
		
		SinkPlanNode sink = op.getDataSinks().iterator().next();
		SingleInputPlanNode mapper = (SingleInputPlanNode) sink.getInput().getSource();

		assertEquals(TempMode.NONE, mapper.getInput().getTempMode());
		assertEquals(DataExchangeMode.BATCH, mapper.getInput().getDataExchangeMode());
	}
	catch (Exception e) {
		e.printStackTrace();
		fail(e.getMessage());
	}
}
 
示例18
public ArchivedExecutionConfig build() {
	return new ArchivedExecutionConfig(
		executionMode != null ? executionMode : ExecutionMode.PIPELINED.name(),
		restartStrategyDescription != null ? restartStrategyDescription : "default",
		parallelism,
		objectReuseEnabled,
		globalJobParameters != null ? globalJobParameters : Collections.<String, String>emptyMap()
	);
}
 
示例19
@Test
public void testPipelinedForced() {
	// PIPELINED_FORCED should result in pipelining all the way
	verifyBranchigPlan(ExecutionMode.PIPELINED_FORCED,
			DataExchangeMode.PIPELINED, DataExchangeMode.PIPELINED,
			DataExchangeMode.PIPELINED, DataExchangeMode.PIPELINED,
			DataExchangeMode.PIPELINED, DataExchangeMode.PIPELINED,
			DataExchangeMode.PIPELINED);
}
 
示例20
@Test
public void testBatch() {
	// BATCH should result in batching the shuffle all the way
	verifyBranchigPlan(ExecutionMode.BATCH,
			DataExchangeMode.PIPELINED, DataExchangeMode.PIPELINED,
			DataExchangeMode.PIPELINED, DataExchangeMode.BATCH,
			DataExchangeMode.BATCH, DataExchangeMode.PIPELINED,
			DataExchangeMode.PIPELINED);
}
 
示例21
@Test
public void testBatchForced() {
	// BATCH_FORCED should result in batching all the way
	verifyBranchigPlan(ExecutionMode.BATCH_FORCED,
			DataExchangeMode.BATCH, DataExchangeMode.BATCH,
			DataExchangeMode.BATCH, DataExchangeMode.BATCH,
			DataExchangeMode.BATCH, DataExchangeMode.BATCH,
			DataExchangeMode.BATCH);
}
 
示例22
@Test
public void testPipelinedForced() {
	// PIPELINED_FORCED should result in pipelining all the way
	verifySimpleForwardPlan(ExecutionMode.PIPELINED_FORCED,
			DataExchangeMode.PIPELINED, DataExchangeMode.PIPELINED,
			DataExchangeMode.PIPELINED, DataExchangeMode.PIPELINED,
			DataExchangeMode.PIPELINED, DataExchangeMode.PIPELINED);
}
 
示例23
/**
 * Gets the data exchange mode to use for this connection.
 *
 * @return The data exchange mode to use for this connection.
 */
public ExecutionMode getDataExchangeMode() {
	if (dataExchangeMode == null) {
		throw new IllegalStateException("This connection does not have the data exchange mode set");
	}
	return dataExchangeMode;
}
 
示例24
@Test
public void testBatch() {
	// BATCH should result in batching the shuffle all the way
	verifySimpleForwardPlan(ExecutionMode.BATCH,
			DataExchangeMode.PIPELINED, DataExchangeMode.PIPELINED,
			DataExchangeMode.PIPELINED, DataExchangeMode.PIPELINED,
			DataExchangeMode.BATCH, DataExchangeMode.PIPELINED);
}
 
示例25
@Test
public void testPipelineBreakerWithBroadcastVariable() {
	try {
		ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
		env.getConfig().setExecutionMode(ExecutionMode.PIPELINED);
		env.setParallelism(64);
		
		DataSet<Long> source = env.generateSequence(1, 10).map(new IdentityMapper<Long>());
		
		DataSet<Long> result = source.map(new IdentityMapper<Long>())
									.map(new IdentityMapper<Long>())
										.withBroadcastSet(source, "bc");
		
		result.output(new DiscardingOutputFormat<Long>());
		
		
		Plan p = env.createProgramPlan();
		OptimizedPlan op = compileNoStats(p);
		
		SinkPlanNode sink = op.getDataSinks().iterator().next();
		SingleInputPlanNode mapper = (SingleInputPlanNode) sink.getInput().getSource();
		SingleInputPlanNode mapperInput = (SingleInputPlanNode) mapper.getInput().getSource();
		
		assertEquals(TempMode.NONE, mapper.getInput().getTempMode());
		assertEquals(TempMode.NONE, mapper.getBroadcastInputs().get(0).getTempMode());
		
		assertEquals(DataExchangeMode.BATCH, mapperInput.getInput().getDataExchangeMode());
		assertEquals(DataExchangeMode.BATCH, mapper.getBroadcastInputs().get(0).getDataExchangeMode());
		
	}
	catch (Exception e) {
		e.printStackTrace();
		fail(e.getMessage());
	}
}
 
示例26
public UnionClosedBranchingTest(
	ExecutionMode executionMode,
	DataExchangeMode sourceToUnion,
	DataExchangeMode unionToJoin) {

	this.executionMode = executionMode;
	this.sourceToUnion = sourceToUnion;
	this.unionToJoin = unionToJoin;
}
 
示例27
@Test
public void testPipelinedForced() {
	// PIPELINED_FORCED should result in pipelining all the way
	verifySimpleForwardPlan(ExecutionMode.PIPELINED_FORCED,
			DataExchangeMode.PIPELINED, DataExchangeMode.PIPELINED,
			DataExchangeMode.PIPELINED, DataExchangeMode.PIPELINED,
			DataExchangeMode.PIPELINED, DataExchangeMode.PIPELINED);
}
 
示例28
public ArchivedExecutionConfig build() {
	return new ArchivedExecutionConfig(
		executionMode != null ? executionMode : ExecutionMode.PIPELINED.name(),
		restartStrategyDescription != null ? restartStrategyDescription : "default",
		parallelism,
		objectReuseEnabled,
		globalJobParameters != null ? globalJobParameters : Collections.<String, String>emptyMap()
	);
}
 
示例29
@Override
public void setInput(Map<Operator<?>, OptimizerNode> contractToNode, ExecutionMode defaultExchangeMode) {
	Operator<?> children = getOperator().getInput();

	final OptimizerNode pred;
	final DagConnection conn;
	
	pred = contractToNode.get(children);
	conn = new DagConnection(pred, this, defaultExchangeMode);
		
	// create the connection and add it
	this.input = conn;
	pred.addOutgoingConnection(conn);
}
 
示例30
@Test
public void testBatchForced() {
	// BATCH_FORCED should result in batching all the way
	verifySimpleForwardPlan(ExecutionMode.BATCH_FORCED,
			DataExchangeMode.BATCH, DataExchangeMode.BATCH,
			DataExchangeMode.BATCH, DataExchangeMode.PIPELINED,
			DataExchangeMode.BATCH, DataExchangeMode.BATCH);
}