Java Code Examples for org.apache.flink.optimizer.plan.WorksetIterationPlanNode#getSolutionSetDeltaPlanNode()
The following examples show how to use
org.apache.flink.optimizer.plan.WorksetIterationPlanNode#getSolutionSetDeltaPlanNode() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: SpargelCompilerTest.java From flink with Apache License 2.0 | 4 votes |
@SuppressWarnings("serial") @Test public void testSpargelCompiler() { ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(DEFAULT_PARALLELISM); // compose test program DataSet<Vertex<Long, Long>> initialVertices = env.fromElements( new Tuple2<>(1L, 1L), new Tuple2<>(2L, 2L)) .map(new Tuple2ToVertexMap<>()); DataSet<Edge<Long, NullValue>> edges = env.fromElements(new Tuple2<>(1L, 2L)) .map(new MapFunction<Tuple2<Long, Long>, Edge<Long, NullValue>>() { public Edge<Long, NullValue> map(Tuple2<Long, Long> edge) { return new Edge<>(edge.f0, edge.f1, NullValue.getInstance()); } }); Graph<Long, Long, NullValue> graph = Graph.fromDataSet(initialVertices, edges, env); DataSet<Vertex<Long, Long>> result = graph.runScatterGatherIteration( new ConnectedComponents.CCMessenger<>(BasicTypeInfo.LONG_TYPE_INFO), new ConnectedComponents.CCUpdater<>(), 100) .getVertices(); result.output(new DiscardingOutputFormat<>()); Plan p = env.createProgramPlan("Spargel Connected Components"); OptimizedPlan op = compileNoStats(p); // check the sink SinkPlanNode sink = op.getDataSinks().iterator().next(); assertEquals(ShipStrategyType.FORWARD, sink.getInput().getShipStrategy()); assertEquals(DEFAULT_PARALLELISM, sink.getParallelism()); // check the iteration WorksetIterationPlanNode iteration = (WorksetIterationPlanNode) sink.getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, iteration.getParallelism()); // check the solution set join and the delta PlanNode ssDelta = iteration.getSolutionSetDeltaPlanNode(); assertTrue(ssDelta instanceof DualInputPlanNode); // this is only true if the update functions preserves the partitioning DualInputPlanNode ssJoin = (DualInputPlanNode) ssDelta; assertEquals(DEFAULT_PARALLELISM, ssJoin.getParallelism()); assertEquals(ShipStrategyType.PARTITION_HASH, ssJoin.getInput1().getShipStrategy()); assertEquals(new FieldList(0), ssJoin.getInput1().getShipStrategyKeys()); // check the workset set join DualInputPlanNode edgeJoin = (DualInputPlanNode) ssJoin.getInput1().getSource(); assertEquals(DEFAULT_PARALLELISM, edgeJoin.getParallelism()); assertEquals(ShipStrategyType.PARTITION_HASH, edgeJoin.getInput1().getShipStrategy()); assertEquals(ShipStrategyType.FORWARD, edgeJoin.getInput2().getShipStrategy()); assertTrue(edgeJoin.getInput1().getTempMode().isCached()); assertEquals(new FieldList(0), edgeJoin.getInput1().getShipStrategyKeys()); // check that the initial partitioning is pushed out of the loop assertEquals(ShipStrategyType.PARTITION_HASH, iteration.getInput1().getShipStrategy()); assertEquals(ShipStrategyType.PARTITION_HASH, iteration.getInput2().getShipStrategy()); assertEquals(new FieldList(0), iteration.getInput1().getShipStrategyKeys()); assertEquals(new FieldList(0), iteration.getInput2().getShipStrategyKeys()); // check that the initial workset sort is outside the loop assertEquals(LocalStrategy.SORT, iteration.getInput2().getLocalStrategy()); assertEquals(new FieldList(0), iteration.getInput2().getLocalStrategyKeys()); }
Example 2
Source File: GSACompilerTest.java From flink with Apache License 2.0 | 4 votes |
@Test public void testGSACompiler() { ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(DEFAULT_PARALLELISM); // compose test program DataSet<Edge<Long, NullValue>> edges = env.fromElements(new Tuple3<>( 1L, 2L, NullValue.getInstance())).map(new Tuple3ToEdgeMap<>()); Graph<Long, Long, NullValue> graph = Graph.fromDataSet(edges, new InitVertices(), env); DataSet<Vertex<Long, Long>> result = graph.runGatherSumApplyIteration( new GatherNeighborIds(), new SelectMinId(), new UpdateComponentId(), 100).getVertices(); result.output(new DiscardingOutputFormat<>()); Plan p = env.createProgramPlan("GSA Connected Components"); OptimizedPlan op = compileNoStats(p); // check the sink SinkPlanNode sink = op.getDataSinks().iterator().next(); assertEquals(ShipStrategyType.FORWARD, sink.getInput().getShipStrategy()); assertEquals(DEFAULT_PARALLELISM, sink.getParallelism()); assertEquals(PartitioningProperty.HASH_PARTITIONED, sink.getGlobalProperties().getPartitioning()); // check the iteration WorksetIterationPlanNode iteration = (WorksetIterationPlanNode) sink.getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, iteration.getParallelism()); // check the solution set join and the delta PlanNode ssDelta = iteration.getSolutionSetDeltaPlanNode(); assertTrue(ssDelta instanceof DualInputPlanNode); // this is only true if the update function preserves the partitioning DualInputPlanNode ssJoin = (DualInputPlanNode) ssDelta; assertEquals(DEFAULT_PARALLELISM, ssJoin.getParallelism()); assertEquals(ShipStrategyType.PARTITION_HASH, ssJoin.getInput1().getShipStrategy()); assertEquals(new FieldList(0), ssJoin.getInput1().getShipStrategyKeys()); // check the workset set join SingleInputPlanNode sumReducer = (SingleInputPlanNode) ssJoin.getInput1().getSource(); SingleInputPlanNode gatherMapper = (SingleInputPlanNode) sumReducer.getInput().getSource(); DualInputPlanNode edgeJoin = (DualInputPlanNode) gatherMapper.getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, edgeJoin.getParallelism()); // input1 is the workset assertEquals(ShipStrategyType.FORWARD, edgeJoin.getInput1().getShipStrategy()); // input2 is the edges assertEquals(ShipStrategyType.PARTITION_HASH, edgeJoin.getInput2().getShipStrategy()); assertTrue(edgeJoin.getInput2().getTempMode().isCached()); assertEquals(new FieldList(0), edgeJoin.getInput2().getShipStrategyKeys()); }
Example 3
Source File: SpargelCompilerTest.java From flink with Apache License 2.0 | 4 votes |
@SuppressWarnings("serial") @Test public void testSpargelCompilerWithBroadcastVariable() { final String broadcastVariableName = "broadcast variable"; ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(DEFAULT_PARALLELISM); // compose test program DataSet<Long> bcVar = env.fromElements(1L); DataSet<Vertex<Long, Long>> initialVertices = env.fromElements( new Tuple2<>(1L, 1L), new Tuple2<>(2L, 2L)) .map(new Tuple2ToVertexMap<>()); DataSet<Edge<Long, NullValue>> edges = env.fromElements(new Tuple2<>(1L, 2L)) .map(new MapFunction<Tuple2<Long, Long>, Edge<Long, NullValue>>() { public Edge<Long, NullValue> map(Tuple2<Long, Long> edge) { return new Edge<>(edge.f0, edge.f1, NullValue.getInstance()); } }); Graph<Long, Long, NullValue> graph = Graph.fromDataSet(initialVertices, edges, env); ScatterGatherConfiguration parameters = new ScatterGatherConfiguration(); parameters.addBroadcastSetForScatterFunction(broadcastVariableName, bcVar); parameters.addBroadcastSetForGatherFunction(broadcastVariableName, bcVar); DataSet<Vertex<Long, Long>> result = graph.runScatterGatherIteration( new ConnectedComponents.CCMessenger<>(BasicTypeInfo.LONG_TYPE_INFO), new ConnectedComponents.CCUpdater<>(), 100) .getVertices(); result.output(new DiscardingOutputFormat<>()); Plan p = env.createProgramPlan("Spargel Connected Components"); OptimizedPlan op = compileNoStats(p); // check the sink SinkPlanNode sink = op.getDataSinks().iterator().next(); assertEquals(ShipStrategyType.FORWARD, sink.getInput().getShipStrategy()); assertEquals(DEFAULT_PARALLELISM, sink.getParallelism()); // check the iteration WorksetIterationPlanNode iteration = (WorksetIterationPlanNode) sink.getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, iteration.getParallelism()); // check the solution set join and the delta PlanNode ssDelta = iteration.getSolutionSetDeltaPlanNode(); assertTrue(ssDelta instanceof DualInputPlanNode); // this is only true if the update functions preserves the partitioning DualInputPlanNode ssJoin = (DualInputPlanNode) ssDelta; assertEquals(DEFAULT_PARALLELISM, ssJoin.getParallelism()); assertEquals(ShipStrategyType.PARTITION_HASH, ssJoin.getInput1().getShipStrategy()); assertEquals(new FieldList(0), ssJoin.getInput1().getShipStrategyKeys()); // check the workset set join DualInputPlanNode edgeJoin = (DualInputPlanNode) ssJoin.getInput1().getSource(); assertEquals(DEFAULT_PARALLELISM, edgeJoin.getParallelism()); assertEquals(ShipStrategyType.PARTITION_HASH, edgeJoin.getInput1().getShipStrategy()); assertEquals(ShipStrategyType.FORWARD, edgeJoin.getInput2().getShipStrategy()); assertTrue(edgeJoin.getInput1().getTempMode().isCached()); assertEquals(new FieldList(0), edgeJoin.getInput1().getShipStrategyKeys()); // check that the initial partitioning is pushed out of the loop assertEquals(ShipStrategyType.PARTITION_HASH, iteration.getInput1().getShipStrategy()); assertEquals(ShipStrategyType.PARTITION_HASH, iteration.getInput2().getShipStrategy()); assertEquals(new FieldList(0), iteration.getInput1().getShipStrategyKeys()); assertEquals(new FieldList(0), iteration.getInput2().getShipStrategyKeys()); }
Example 4
Source File: SpargelCompilerTest.java From flink with Apache License 2.0 | 4 votes |
@SuppressWarnings("serial") @Test public void testSpargelCompiler() { ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(DEFAULT_PARALLELISM); // compose test program DataSet<Vertex<Long, Long>> initialVertices = env.fromElements( new Tuple2<>(1L, 1L), new Tuple2<>(2L, 2L)) .map(new Tuple2ToVertexMap<>()); DataSet<Edge<Long, NullValue>> edges = env.fromElements(new Tuple2<>(1L, 2L)) .map(new MapFunction<Tuple2<Long, Long>, Edge<Long, NullValue>>() { public Edge<Long, NullValue> map(Tuple2<Long, Long> edge) { return new Edge<>(edge.f0, edge.f1, NullValue.getInstance()); } }); Graph<Long, Long, NullValue> graph = Graph.fromDataSet(initialVertices, edges, env); DataSet<Vertex<Long, Long>> result = graph.runScatterGatherIteration( new ConnectedComponents.CCMessenger<>(BasicTypeInfo.LONG_TYPE_INFO), new ConnectedComponents.CCUpdater<>(), 100) .getVertices(); result.output(new DiscardingOutputFormat<>()); Plan p = env.createProgramPlan("Spargel Connected Components"); OptimizedPlan op = compileNoStats(p); // check the sink SinkPlanNode sink = op.getDataSinks().iterator().next(); assertEquals(ShipStrategyType.FORWARD, sink.getInput().getShipStrategy()); assertEquals(DEFAULT_PARALLELISM, sink.getParallelism()); // check the iteration WorksetIterationPlanNode iteration = (WorksetIterationPlanNode) sink.getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, iteration.getParallelism()); // check the solution set join and the delta PlanNode ssDelta = iteration.getSolutionSetDeltaPlanNode(); assertTrue(ssDelta instanceof DualInputPlanNode); // this is only true if the update functions preserves the partitioning DualInputPlanNode ssJoin = (DualInputPlanNode) ssDelta; assertEquals(DEFAULT_PARALLELISM, ssJoin.getParallelism()); assertEquals(ShipStrategyType.PARTITION_HASH, ssJoin.getInput1().getShipStrategy()); assertEquals(new FieldList(0), ssJoin.getInput1().getShipStrategyKeys()); // check the workset set join DualInputPlanNode edgeJoin = (DualInputPlanNode) ssJoin.getInput1().getSource(); assertEquals(DEFAULT_PARALLELISM, edgeJoin.getParallelism()); assertEquals(ShipStrategyType.PARTITION_HASH, edgeJoin.getInput1().getShipStrategy()); assertEquals(ShipStrategyType.FORWARD, edgeJoin.getInput2().getShipStrategy()); assertTrue(edgeJoin.getInput1().getTempMode().isCached()); assertEquals(new FieldList(0), edgeJoin.getInput1().getShipStrategyKeys()); // check that the initial partitioning is pushed out of the loop assertEquals(ShipStrategyType.PARTITION_HASH, iteration.getInput1().getShipStrategy()); assertEquals(ShipStrategyType.PARTITION_HASH, iteration.getInput2().getShipStrategy()); assertEquals(new FieldList(0), iteration.getInput1().getShipStrategyKeys()); assertEquals(new FieldList(0), iteration.getInput2().getShipStrategyKeys()); // check that the initial workset sort is outside the loop assertEquals(LocalStrategy.SORT, iteration.getInput2().getLocalStrategy()); assertEquals(new FieldList(0), iteration.getInput2().getLocalStrategyKeys()); }
Example 5
Source File: PregelCompilerTest.java From flink with Apache License 2.0 | 4 votes |
@SuppressWarnings("serial") @Test public void testPregelWithCombiner() { ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(DEFAULT_PARALLELISM); // compose test program { DataSet<Vertex<Long, Long>> initialVertices = env.fromElements( new Tuple2<>(1L, 1L), new Tuple2<>(2L, 2L)) .map(new Tuple2ToVertexMap<>()); DataSet<Edge<Long, NullValue>> edges = env.fromElements(new Tuple2<>(1L, 2L)) .map(new MapFunction<Tuple2<Long, Long>, Edge<Long, NullValue>>() { public Edge<Long, NullValue> map(Tuple2<Long, Long> edge) { return new Edge<>(edge.f0, edge.f1, NullValue.getInstance()); } }); Graph<Long, Long, NullValue> graph = Graph.fromDataSet(initialVertices, edges, env); DataSet<Vertex<Long, Long>> result = graph.runVertexCentricIteration( new CCCompute(), new CCCombiner(), 100).getVertices(); result.output(new DiscardingOutputFormat<>()); } Plan p = env.createProgramPlan("Pregel Connected Components"); OptimizedPlan op = compileNoStats(p); // check the sink SinkPlanNode sink = op.getDataSinks().iterator().next(); assertEquals(ShipStrategyType.FORWARD, sink.getInput().getShipStrategy()); assertEquals(DEFAULT_PARALLELISM, sink.getParallelism()); // check the iteration WorksetIterationPlanNode iteration = (WorksetIterationPlanNode) sink.getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, iteration.getParallelism()); // check the combiner SingleInputPlanNode combiner = (SingleInputPlanNode) iteration.getInput2().getSource(); assertEquals(ShipStrategyType.FORWARD, combiner.getInput().getShipStrategy()); // check the solution set delta PlanNode ssDelta = iteration.getSolutionSetDeltaPlanNode(); assertTrue(ssDelta instanceof SingleInputPlanNode); SingleInputPlanNode ssFlatMap = (SingleInputPlanNode) ((SingleInputPlanNode) (ssDelta)).getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, ssFlatMap.getParallelism()); assertEquals(ShipStrategyType.FORWARD, ssFlatMap.getInput().getShipStrategy()); // check the computation coGroup DualInputPlanNode computationCoGroup = (DualInputPlanNode) (ssFlatMap.getInput().getSource()); assertEquals(DEFAULT_PARALLELISM, computationCoGroup.getParallelism()); assertEquals(ShipStrategyType.FORWARD, computationCoGroup.getInput1().getShipStrategy()); assertEquals(ShipStrategyType.PARTITION_HASH, computationCoGroup.getInput2().getShipStrategy()); assertTrue(computationCoGroup.getInput2().getTempMode().isCached()); assertEquals(new FieldList(0), computationCoGroup.getInput2().getShipStrategyKeys()); // check that the initial partitioning is pushed out of the loop assertEquals(ShipStrategyType.PARTITION_HASH, iteration.getInput1().getShipStrategy()); assertEquals(new FieldList(0), iteration.getInput1().getShipStrategyKeys()); }
Example 6
Source File: PregelCompilerTest.java From flink with Apache License 2.0 | 4 votes |
@SuppressWarnings("serial") @Test public void testPregelCompilerWithBroadcastVariable() { final String broadcastSetName = "broadcast"; ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(DEFAULT_PARALLELISM); // compose test program { DataSet<Long> bcVar = env.fromElements(1L); DataSet<Vertex<Long, Long>> initialVertices = env.fromElements( new Tuple2<>(1L, 1L), new Tuple2<>(2L, 2L)) .map(new Tuple2ToVertexMap<>()); DataSet<Edge<Long, NullValue>> edges = env.fromElements(new Tuple2<>(1L, 2L)) .map(new MapFunction<Tuple2<Long, Long>, Edge<Long, NullValue>>() { public Edge<Long, NullValue> map(Tuple2<Long, Long> edge) { return new Edge<>(edge.f0, edge.f1, NullValue.getInstance()); } }); Graph<Long, Long, NullValue> graph = Graph.fromDataSet(initialVertices, edges, env); VertexCentricConfiguration parameters = new VertexCentricConfiguration(); parameters.addBroadcastSet(broadcastSetName, bcVar); DataSet<Vertex<Long, Long>> result = graph.runVertexCentricIteration( new CCCompute(), null, 100, parameters) .getVertices(); result.output(new DiscardingOutputFormat<>()); } Plan p = env.createProgramPlan("Pregel Connected Components"); OptimizedPlan op = compileNoStats(p); // check the sink SinkPlanNode sink = op.getDataSinks().iterator().next(); assertEquals(ShipStrategyType.FORWARD, sink.getInput().getShipStrategy()); assertEquals(DEFAULT_PARALLELISM, sink.getParallelism()); // check the iteration WorksetIterationPlanNode iteration = (WorksetIterationPlanNode) sink.getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, iteration.getParallelism()); // check the solution set delta PlanNode ssDelta = iteration.getSolutionSetDeltaPlanNode(); assertTrue(ssDelta instanceof SingleInputPlanNode); SingleInputPlanNode ssFlatMap = (SingleInputPlanNode) ((SingleInputPlanNode) (ssDelta)).getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, ssFlatMap.getParallelism()); assertEquals(ShipStrategyType.FORWARD, ssFlatMap.getInput().getShipStrategy()); // check the computation coGroup DualInputPlanNode computationCoGroup = (DualInputPlanNode) (ssFlatMap.getInput().getSource()); assertEquals(DEFAULT_PARALLELISM, computationCoGroup.getParallelism()); assertEquals(ShipStrategyType.FORWARD, computationCoGroup.getInput1().getShipStrategy()); assertEquals(ShipStrategyType.PARTITION_HASH, computationCoGroup.getInput2().getShipStrategy()); assertTrue(computationCoGroup.getInput2().getTempMode().isCached()); assertEquals(new FieldList(0), computationCoGroup.getInput2().getShipStrategyKeys()); // check that the initial partitioning is pushed out of the loop assertEquals(ShipStrategyType.PARTITION_HASH, iteration.getInput1().getShipStrategy()); assertEquals(new FieldList(0), iteration.getInput1().getShipStrategyKeys()); }
Example 7
Source File: PregelCompilerTest.java From flink with Apache License 2.0 | 4 votes |
@SuppressWarnings("serial") @Test public void testPregelCompiler() { ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(DEFAULT_PARALLELISM); // compose test program { DataSet<Vertex<Long, Long>> initialVertices = env.fromElements( new Tuple2<>(1L, 1L), new Tuple2<>(2L, 2L)) .map(new Tuple2ToVertexMap<>()); DataSet<Edge<Long, NullValue>> edges = env.fromElements(new Tuple2<>(1L, 2L)) .map(new MapFunction<Tuple2<Long, Long>, Edge<Long, NullValue>>() { public Edge<Long, NullValue> map(Tuple2<Long, Long> edge) { return new Edge<>(edge.f0, edge.f1, NullValue.getInstance()); } }); Graph<Long, Long, NullValue> graph = Graph.fromDataSet(initialVertices, edges, env); DataSet<Vertex<Long, Long>> result = graph.runVertexCentricIteration( new CCCompute(), null, 100).getVertices(); result.output(new DiscardingOutputFormat<>()); } Plan p = env.createProgramPlan("Pregel Connected Components"); OptimizedPlan op = compileNoStats(p); // check the sink SinkPlanNode sink = op.getDataSinks().iterator().next(); assertEquals(ShipStrategyType.FORWARD, sink.getInput().getShipStrategy()); assertEquals(DEFAULT_PARALLELISM, sink.getParallelism()); // check the iteration WorksetIterationPlanNode iteration = (WorksetIterationPlanNode) sink.getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, iteration.getParallelism()); // check the solution set delta PlanNode ssDelta = iteration.getSolutionSetDeltaPlanNode(); assertTrue(ssDelta instanceof SingleInputPlanNode); SingleInputPlanNode ssFlatMap = (SingleInputPlanNode) ((SingleInputPlanNode) (ssDelta)).getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, ssFlatMap.getParallelism()); assertEquals(ShipStrategyType.FORWARD, ssFlatMap.getInput().getShipStrategy()); // check the computation coGroup DualInputPlanNode computationCoGroup = (DualInputPlanNode) (ssFlatMap.getInput().getSource()); assertEquals(DEFAULT_PARALLELISM, computationCoGroup.getParallelism()); assertEquals(ShipStrategyType.FORWARD, computationCoGroup.getInput1().getShipStrategy()); assertEquals(ShipStrategyType.PARTITION_HASH, computationCoGroup.getInput2().getShipStrategy()); assertTrue(computationCoGroup.getInput2().getTempMode().isCached()); assertEquals(new FieldList(0), computationCoGroup.getInput2().getShipStrategyKeys()); // check that the initial partitioning is pushed out of the loop assertEquals(ShipStrategyType.PARTITION_HASH, iteration.getInput1().getShipStrategy()); assertEquals(new FieldList(0), iteration.getInput1().getShipStrategyKeys()); }
Example 8
Source File: IterationCompilerTest.java From flink with Apache License 2.0 | 4 votes |
@Test public void testWorksetIterationWithUnionRoot() { try { ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(43); DataSet<Tuple2<Long, Long>> input = env.generateSequence(1, 20) .map(new MapFunction<Long, Tuple2<Long, Long>>() { @Override public Tuple2<Long, Long> map(Long value){ return null; } }); DeltaIteration<Tuple2<Long, Long>, Tuple2<Long, Long>> iter = input.iterateDelta(input, 100, 0); iter.closeWith( iter.getWorkset().map(new IdentityMapper<Tuple2<Long,Long>>()) .union( iter.getWorkset().map(new IdentityMapper<Tuple2<Long,Long>>())) , iter.getWorkset().map(new IdentityMapper<Tuple2<Long,Long>>()) .union( iter.getWorkset().map(new IdentityMapper<Tuple2<Long,Long>>())) ) .output(new DiscardingOutputFormat<Tuple2<Long, Long>>()); Plan p = env.createProgramPlan(); OptimizedPlan op = compileNoStats(p); SinkPlanNode sink = op.getDataSinks().iterator().next(); WorksetIterationPlanNode iterNode = (WorksetIterationPlanNode) sink.getInput().getSource(); // make sure that the root is part of the dynamic path // the "NoOp"a that come after the union. SingleInputPlanNode nextWorksetNoop = (SingleInputPlanNode) iterNode.getNextWorkSetPlanNode(); SingleInputPlanNode solutionDeltaNoop = (SingleInputPlanNode) iterNode.getSolutionSetDeltaPlanNode(); NAryUnionPlanNode nextWorksetUnion = (NAryUnionPlanNode) nextWorksetNoop.getInput().getSource(); NAryUnionPlanNode solutionDeltaUnion = (NAryUnionPlanNode) solutionDeltaNoop.getInput().getSource(); assertTrue(nextWorksetNoop.isOnDynamicPath()); assertTrue(nextWorksetNoop.getCostWeight() >= 1); assertTrue(solutionDeltaNoop.isOnDynamicPath()); assertTrue(solutionDeltaNoop.getCostWeight() >= 1); assertTrue(nextWorksetUnion.isOnDynamicPath()); assertTrue(nextWorksetUnion.getCostWeight() >= 1); assertTrue(solutionDeltaUnion.isOnDynamicPath()); assertTrue(solutionDeltaUnion.getCostWeight() >= 1); new JobGraphGenerator().compileJobGraph(op); } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } }
Example 9
Source File: GSACompilerTest.java From flink with Apache License 2.0 | 4 votes |
@Test public void testGSACompiler() { ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(DEFAULT_PARALLELISM); // compose test program DataSet<Edge<Long, NullValue>> edges = env.fromElements(new Tuple3<>( 1L, 2L, NullValue.getInstance())).map(new Tuple3ToEdgeMap<>()); Graph<Long, Long, NullValue> graph = Graph.fromDataSet(edges, new InitVertices(), env); DataSet<Vertex<Long, Long>> result = graph.runGatherSumApplyIteration( new GatherNeighborIds(), new SelectMinId(), new UpdateComponentId(), 100).getVertices(); result.output(new DiscardingOutputFormat<>()); Plan p = env.createProgramPlan("GSA Connected Components"); OptimizedPlan op = compileNoStats(p); // check the sink SinkPlanNode sink = op.getDataSinks().iterator().next(); assertEquals(ShipStrategyType.FORWARD, sink.getInput().getShipStrategy()); assertEquals(DEFAULT_PARALLELISM, sink.getParallelism()); assertEquals(PartitioningProperty.HASH_PARTITIONED, sink.getGlobalProperties().getPartitioning()); // check the iteration WorksetIterationPlanNode iteration = (WorksetIterationPlanNode) sink.getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, iteration.getParallelism()); // check the solution set join and the delta PlanNode ssDelta = iteration.getSolutionSetDeltaPlanNode(); assertTrue(ssDelta instanceof DualInputPlanNode); // this is only true if the update function preserves the partitioning DualInputPlanNode ssJoin = (DualInputPlanNode) ssDelta; assertEquals(DEFAULT_PARALLELISM, ssJoin.getParallelism()); assertEquals(ShipStrategyType.PARTITION_HASH, ssJoin.getInput1().getShipStrategy()); assertEquals(new FieldList(0), ssJoin.getInput1().getShipStrategyKeys()); // check the workset set join SingleInputPlanNode sumReducer = (SingleInputPlanNode) ssJoin.getInput1().getSource(); SingleInputPlanNode gatherMapper = (SingleInputPlanNode) sumReducer.getInput().getSource(); DualInputPlanNode edgeJoin = (DualInputPlanNode) gatherMapper.getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, edgeJoin.getParallelism()); // input1 is the workset assertEquals(ShipStrategyType.FORWARD, edgeJoin.getInput1().getShipStrategy()); // input2 is the edges assertEquals(ShipStrategyType.PARTITION_HASH, edgeJoin.getInput2().getShipStrategy()); assertTrue(edgeJoin.getInput2().getTempMode().isCached()); assertEquals(new FieldList(0), edgeJoin.getInput2().getShipStrategyKeys()); }
Example 10
Source File: SpargelCompilerTest.java From flink with Apache License 2.0 | 4 votes |
@SuppressWarnings("serial") @Test public void testSpargelCompilerWithBroadcastVariable() { final String broadcastVariableName = "broadcast variable"; ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(DEFAULT_PARALLELISM); // compose test program DataSet<Long> bcVar = env.fromElements(1L); DataSet<Vertex<Long, Long>> initialVertices = env.fromElements( new Tuple2<>(1L, 1L), new Tuple2<>(2L, 2L)) .map(new Tuple2ToVertexMap<>()); DataSet<Edge<Long, NullValue>> edges = env.fromElements(new Tuple2<>(1L, 2L)) .map(new MapFunction<Tuple2<Long, Long>, Edge<Long, NullValue>>() { public Edge<Long, NullValue> map(Tuple2<Long, Long> edge) { return new Edge<>(edge.f0, edge.f1, NullValue.getInstance()); } }); Graph<Long, Long, NullValue> graph = Graph.fromDataSet(initialVertices, edges, env); ScatterGatherConfiguration parameters = new ScatterGatherConfiguration(); parameters.addBroadcastSetForScatterFunction(broadcastVariableName, bcVar); parameters.addBroadcastSetForGatherFunction(broadcastVariableName, bcVar); DataSet<Vertex<Long, Long>> result = graph.runScatterGatherIteration( new ConnectedComponents.CCMessenger<>(BasicTypeInfo.LONG_TYPE_INFO), new ConnectedComponents.CCUpdater<>(), 100) .getVertices(); result.output(new DiscardingOutputFormat<>()); Plan p = env.createProgramPlan("Spargel Connected Components"); OptimizedPlan op = compileNoStats(p); // check the sink SinkPlanNode sink = op.getDataSinks().iterator().next(); assertEquals(ShipStrategyType.FORWARD, sink.getInput().getShipStrategy()); assertEquals(DEFAULT_PARALLELISM, sink.getParallelism()); // check the iteration WorksetIterationPlanNode iteration = (WorksetIterationPlanNode) sink.getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, iteration.getParallelism()); // check the solution set join and the delta PlanNode ssDelta = iteration.getSolutionSetDeltaPlanNode(); assertTrue(ssDelta instanceof DualInputPlanNode); // this is only true if the update functions preserves the partitioning DualInputPlanNode ssJoin = (DualInputPlanNode) ssDelta; assertEquals(DEFAULT_PARALLELISM, ssJoin.getParallelism()); assertEquals(ShipStrategyType.PARTITION_HASH, ssJoin.getInput1().getShipStrategy()); assertEquals(new FieldList(0), ssJoin.getInput1().getShipStrategyKeys()); // check the workset set join DualInputPlanNode edgeJoin = (DualInputPlanNode) ssJoin.getInput1().getSource(); assertEquals(DEFAULT_PARALLELISM, edgeJoin.getParallelism()); assertEquals(ShipStrategyType.PARTITION_HASH, edgeJoin.getInput1().getShipStrategy()); assertEquals(ShipStrategyType.FORWARD, edgeJoin.getInput2().getShipStrategy()); assertTrue(edgeJoin.getInput1().getTempMode().isCached()); assertEquals(new FieldList(0), edgeJoin.getInput1().getShipStrategyKeys()); // check that the initial partitioning is pushed out of the loop assertEquals(ShipStrategyType.PARTITION_HASH, iteration.getInput1().getShipStrategy()); assertEquals(ShipStrategyType.PARTITION_HASH, iteration.getInput2().getShipStrategy()); assertEquals(new FieldList(0), iteration.getInput1().getShipStrategyKeys()); assertEquals(new FieldList(0), iteration.getInput2().getShipStrategyKeys()); }
Example 11
Source File: PregelCompilerTest.java From Flink-CEPplus with Apache License 2.0 | 4 votes |
@SuppressWarnings("serial") @Test public void testPregelCompiler() { ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(DEFAULT_PARALLELISM); // compose test program { DataSet<Vertex<Long, Long>> initialVertices = env.fromElements( new Tuple2<>(1L, 1L), new Tuple2<>(2L, 2L)) .map(new Tuple2ToVertexMap<>()); DataSet<Edge<Long, NullValue>> edges = env.fromElements(new Tuple2<>(1L, 2L)) .map(new MapFunction<Tuple2<Long, Long>, Edge<Long, NullValue>>() { public Edge<Long, NullValue> map(Tuple2<Long, Long> edge) { return new Edge<>(edge.f0, edge.f1, NullValue.getInstance()); } }); Graph<Long, Long, NullValue> graph = Graph.fromDataSet(initialVertices, edges, env); DataSet<Vertex<Long, Long>> result = graph.runVertexCentricIteration( new CCCompute(), null, 100).getVertices(); result.output(new DiscardingOutputFormat<>()); } Plan p = env.createProgramPlan("Pregel Connected Components"); OptimizedPlan op = compileNoStats(p); // check the sink SinkPlanNode sink = op.getDataSinks().iterator().next(); assertEquals(ShipStrategyType.FORWARD, sink.getInput().getShipStrategy()); assertEquals(DEFAULT_PARALLELISM, sink.getParallelism()); // check the iteration WorksetIterationPlanNode iteration = (WorksetIterationPlanNode) sink.getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, iteration.getParallelism()); // check the solution set delta PlanNode ssDelta = iteration.getSolutionSetDeltaPlanNode(); assertTrue(ssDelta instanceof SingleInputPlanNode); SingleInputPlanNode ssFlatMap = (SingleInputPlanNode) ((SingleInputPlanNode) (ssDelta)).getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, ssFlatMap.getParallelism()); assertEquals(ShipStrategyType.FORWARD, ssFlatMap.getInput().getShipStrategy()); // check the computation coGroup DualInputPlanNode computationCoGroup = (DualInputPlanNode) (ssFlatMap.getInput().getSource()); assertEquals(DEFAULT_PARALLELISM, computationCoGroup.getParallelism()); assertEquals(ShipStrategyType.FORWARD, computationCoGroup.getInput1().getShipStrategy()); assertEquals(ShipStrategyType.PARTITION_HASH, computationCoGroup.getInput2().getShipStrategy()); assertTrue(computationCoGroup.getInput2().getTempMode().isCached()); assertEquals(new FieldList(0), computationCoGroup.getInput2().getShipStrategyKeys()); // check that the initial partitioning is pushed out of the loop assertEquals(ShipStrategyType.PARTITION_HASH, iteration.getInput1().getShipStrategy()); assertEquals(new FieldList(0), iteration.getInput1().getShipStrategyKeys()); }
Example 12
Source File: PregelCompilerTest.java From flink with Apache License 2.0 | 4 votes |
@SuppressWarnings("serial") @Test public void testPregelWithCombiner() { ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(DEFAULT_PARALLELISM); // compose test program { DataSet<Vertex<Long, Long>> initialVertices = env.fromElements( new Tuple2<>(1L, 1L), new Tuple2<>(2L, 2L)) .map(new Tuple2ToVertexMap<>()); DataSet<Edge<Long, NullValue>> edges = env.fromElements(new Tuple2<>(1L, 2L)) .map(new MapFunction<Tuple2<Long, Long>, Edge<Long, NullValue>>() { public Edge<Long, NullValue> map(Tuple2<Long, Long> edge) { return new Edge<>(edge.f0, edge.f1, NullValue.getInstance()); } }); Graph<Long, Long, NullValue> graph = Graph.fromDataSet(initialVertices, edges, env); DataSet<Vertex<Long, Long>> result = graph.runVertexCentricIteration( new CCCompute(), new CCCombiner(), 100).getVertices(); result.output(new DiscardingOutputFormat<>()); } Plan p = env.createProgramPlan("Pregel Connected Components"); OptimizedPlan op = compileNoStats(p); // check the sink SinkPlanNode sink = op.getDataSinks().iterator().next(); assertEquals(ShipStrategyType.FORWARD, sink.getInput().getShipStrategy()); assertEquals(DEFAULT_PARALLELISM, sink.getParallelism()); // check the iteration WorksetIterationPlanNode iteration = (WorksetIterationPlanNode) sink.getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, iteration.getParallelism()); // check the combiner SingleInputPlanNode combiner = (SingleInputPlanNode) iteration.getInput2().getSource(); assertEquals(ShipStrategyType.FORWARD, combiner.getInput().getShipStrategy()); // check the solution set delta PlanNode ssDelta = iteration.getSolutionSetDeltaPlanNode(); assertTrue(ssDelta instanceof SingleInputPlanNode); SingleInputPlanNode ssFlatMap = (SingleInputPlanNode) ((SingleInputPlanNode) (ssDelta)).getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, ssFlatMap.getParallelism()); assertEquals(ShipStrategyType.FORWARD, ssFlatMap.getInput().getShipStrategy()); // check the computation coGroup DualInputPlanNode computationCoGroup = (DualInputPlanNode) (ssFlatMap.getInput().getSource()); assertEquals(DEFAULT_PARALLELISM, computationCoGroup.getParallelism()); assertEquals(ShipStrategyType.FORWARD, computationCoGroup.getInput1().getShipStrategy()); assertEquals(ShipStrategyType.PARTITION_HASH, computationCoGroup.getInput2().getShipStrategy()); assertTrue(computationCoGroup.getInput2().getTempMode().isCached()); assertEquals(new FieldList(0), computationCoGroup.getInput2().getShipStrategyKeys()); // check that the initial partitioning is pushed out of the loop assertEquals(ShipStrategyType.PARTITION_HASH, iteration.getInput1().getShipStrategy()); assertEquals(new FieldList(0), iteration.getInput1().getShipStrategyKeys()); }
Example 13
Source File: PregelCompilerTest.java From flink with Apache License 2.0 | 4 votes |
@SuppressWarnings("serial") @Test public void testPregelCompilerWithBroadcastVariable() { final String broadcastSetName = "broadcast"; ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(DEFAULT_PARALLELISM); // compose test program { DataSet<Long> bcVar = env.fromElements(1L); DataSet<Vertex<Long, Long>> initialVertices = env.fromElements( new Tuple2<>(1L, 1L), new Tuple2<>(2L, 2L)) .map(new Tuple2ToVertexMap<>()); DataSet<Edge<Long, NullValue>> edges = env.fromElements(new Tuple2<>(1L, 2L)) .map(new MapFunction<Tuple2<Long, Long>, Edge<Long, NullValue>>() { public Edge<Long, NullValue> map(Tuple2<Long, Long> edge) { return new Edge<>(edge.f0, edge.f1, NullValue.getInstance()); } }); Graph<Long, Long, NullValue> graph = Graph.fromDataSet(initialVertices, edges, env); VertexCentricConfiguration parameters = new VertexCentricConfiguration(); parameters.addBroadcastSet(broadcastSetName, bcVar); DataSet<Vertex<Long, Long>> result = graph.runVertexCentricIteration( new CCCompute(), null, 100, parameters) .getVertices(); result.output(new DiscardingOutputFormat<>()); } Plan p = env.createProgramPlan("Pregel Connected Components"); OptimizedPlan op = compileNoStats(p); // check the sink SinkPlanNode sink = op.getDataSinks().iterator().next(); assertEquals(ShipStrategyType.FORWARD, sink.getInput().getShipStrategy()); assertEquals(DEFAULT_PARALLELISM, sink.getParallelism()); // check the iteration WorksetIterationPlanNode iteration = (WorksetIterationPlanNode) sink.getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, iteration.getParallelism()); // check the solution set delta PlanNode ssDelta = iteration.getSolutionSetDeltaPlanNode(); assertTrue(ssDelta instanceof SingleInputPlanNode); SingleInputPlanNode ssFlatMap = (SingleInputPlanNode) ((SingleInputPlanNode) (ssDelta)).getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, ssFlatMap.getParallelism()); assertEquals(ShipStrategyType.FORWARD, ssFlatMap.getInput().getShipStrategy()); // check the computation coGroup DualInputPlanNode computationCoGroup = (DualInputPlanNode) (ssFlatMap.getInput().getSource()); assertEquals(DEFAULT_PARALLELISM, computationCoGroup.getParallelism()); assertEquals(ShipStrategyType.FORWARD, computationCoGroup.getInput1().getShipStrategy()); assertEquals(ShipStrategyType.PARTITION_HASH, computationCoGroup.getInput2().getShipStrategy()); assertTrue(computationCoGroup.getInput2().getTempMode().isCached()); assertEquals(new FieldList(0), computationCoGroup.getInput2().getShipStrategyKeys()); // check that the initial partitioning is pushed out of the loop assertEquals(ShipStrategyType.PARTITION_HASH, iteration.getInput1().getShipStrategy()); assertEquals(new FieldList(0), iteration.getInput1().getShipStrategyKeys()); }
Example 14
Source File: PregelCompilerTest.java From flink with Apache License 2.0 | 4 votes |
@SuppressWarnings("serial") @Test public void testPregelCompiler() { ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(DEFAULT_PARALLELISM); // compose test program { DataSet<Vertex<Long, Long>> initialVertices = env.fromElements( new Tuple2<>(1L, 1L), new Tuple2<>(2L, 2L)) .map(new Tuple2ToVertexMap<>()); DataSet<Edge<Long, NullValue>> edges = env.fromElements(new Tuple2<>(1L, 2L)) .map(new MapFunction<Tuple2<Long, Long>, Edge<Long, NullValue>>() { public Edge<Long, NullValue> map(Tuple2<Long, Long> edge) { return new Edge<>(edge.f0, edge.f1, NullValue.getInstance()); } }); Graph<Long, Long, NullValue> graph = Graph.fromDataSet(initialVertices, edges, env); DataSet<Vertex<Long, Long>> result = graph.runVertexCentricIteration( new CCCompute(), null, 100).getVertices(); result.output(new DiscardingOutputFormat<>()); } Plan p = env.createProgramPlan("Pregel Connected Components"); OptimizedPlan op = compileNoStats(p); // check the sink SinkPlanNode sink = op.getDataSinks().iterator().next(); assertEquals(ShipStrategyType.FORWARD, sink.getInput().getShipStrategy()); assertEquals(DEFAULT_PARALLELISM, sink.getParallelism()); // check the iteration WorksetIterationPlanNode iteration = (WorksetIterationPlanNode) sink.getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, iteration.getParallelism()); // check the solution set delta PlanNode ssDelta = iteration.getSolutionSetDeltaPlanNode(); assertTrue(ssDelta instanceof SingleInputPlanNode); SingleInputPlanNode ssFlatMap = (SingleInputPlanNode) ((SingleInputPlanNode) (ssDelta)).getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, ssFlatMap.getParallelism()); assertEquals(ShipStrategyType.FORWARD, ssFlatMap.getInput().getShipStrategy()); // check the computation coGroup DualInputPlanNode computationCoGroup = (DualInputPlanNode) (ssFlatMap.getInput().getSource()); assertEquals(DEFAULT_PARALLELISM, computationCoGroup.getParallelism()); assertEquals(ShipStrategyType.FORWARD, computationCoGroup.getInput1().getShipStrategy()); assertEquals(ShipStrategyType.PARTITION_HASH, computationCoGroup.getInput2().getShipStrategy()); assertTrue(computationCoGroup.getInput2().getTempMode().isCached()); assertEquals(new FieldList(0), computationCoGroup.getInput2().getShipStrategyKeys()); // check that the initial partitioning is pushed out of the loop assertEquals(ShipStrategyType.PARTITION_HASH, iteration.getInput1().getShipStrategy()); assertEquals(new FieldList(0), iteration.getInput1().getShipStrategyKeys()); }
Example 15
Source File: IterationCompilerTest.java From Flink-CEPplus with Apache License 2.0 | 4 votes |
@Test public void testWorksetIterationWithUnionRoot() { try { ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(43); DataSet<Tuple2<Long, Long>> input = env.generateSequence(1, 20) .map(new MapFunction<Long, Tuple2<Long, Long>>() { @Override public Tuple2<Long, Long> map(Long value){ return null; } }); DeltaIteration<Tuple2<Long, Long>, Tuple2<Long, Long>> iter = input.iterateDelta(input, 100, 0); iter.closeWith( iter.getWorkset().map(new IdentityMapper<Tuple2<Long,Long>>()) .union( iter.getWorkset().map(new IdentityMapper<Tuple2<Long,Long>>())) , iter.getWorkset().map(new IdentityMapper<Tuple2<Long,Long>>()) .union( iter.getWorkset().map(new IdentityMapper<Tuple2<Long,Long>>())) ) .output(new DiscardingOutputFormat<Tuple2<Long, Long>>()); Plan p = env.createProgramPlan(); OptimizedPlan op = compileNoStats(p); SinkPlanNode sink = op.getDataSinks().iterator().next(); WorksetIterationPlanNode iterNode = (WorksetIterationPlanNode) sink.getInput().getSource(); // make sure that the root is part of the dynamic path // the "NoOp"a that come after the union. SingleInputPlanNode nextWorksetNoop = (SingleInputPlanNode) iterNode.getNextWorkSetPlanNode(); SingleInputPlanNode solutionDeltaNoop = (SingleInputPlanNode) iterNode.getSolutionSetDeltaPlanNode(); NAryUnionPlanNode nextWorksetUnion = (NAryUnionPlanNode) nextWorksetNoop.getInput().getSource(); NAryUnionPlanNode solutionDeltaUnion = (NAryUnionPlanNode) solutionDeltaNoop.getInput().getSource(); assertTrue(nextWorksetNoop.isOnDynamicPath()); assertTrue(nextWorksetNoop.getCostWeight() >= 1); assertTrue(solutionDeltaNoop.isOnDynamicPath()); assertTrue(solutionDeltaNoop.getCostWeight() >= 1); assertTrue(nextWorksetUnion.isOnDynamicPath()); assertTrue(nextWorksetUnion.getCostWeight() >= 1); assertTrue(solutionDeltaUnion.isOnDynamicPath()); assertTrue(solutionDeltaUnion.getCostWeight() >= 1); new JobGraphGenerator().compileJobGraph(op); } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } }
Example 16
Source File: GSACompilerTest.java From Flink-CEPplus with Apache License 2.0 | 4 votes |
@Test public void testGSACompiler() { ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(DEFAULT_PARALLELISM); // compose test program DataSet<Edge<Long, NullValue>> edges = env.fromElements(new Tuple3<>( 1L, 2L, NullValue.getInstance())).map(new Tuple3ToEdgeMap<>()); Graph<Long, Long, NullValue> graph = Graph.fromDataSet(edges, new InitVertices(), env); DataSet<Vertex<Long, Long>> result = graph.runGatherSumApplyIteration( new GatherNeighborIds(), new SelectMinId(), new UpdateComponentId(), 100).getVertices(); result.output(new DiscardingOutputFormat<>()); Plan p = env.createProgramPlan("GSA Connected Components"); OptimizedPlan op = compileNoStats(p); // check the sink SinkPlanNode sink = op.getDataSinks().iterator().next(); assertEquals(ShipStrategyType.FORWARD, sink.getInput().getShipStrategy()); assertEquals(DEFAULT_PARALLELISM, sink.getParallelism()); assertEquals(PartitioningProperty.HASH_PARTITIONED, sink.getGlobalProperties().getPartitioning()); // check the iteration WorksetIterationPlanNode iteration = (WorksetIterationPlanNode) sink.getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, iteration.getParallelism()); // check the solution set join and the delta PlanNode ssDelta = iteration.getSolutionSetDeltaPlanNode(); assertTrue(ssDelta instanceof DualInputPlanNode); // this is only true if the update function preserves the partitioning DualInputPlanNode ssJoin = (DualInputPlanNode) ssDelta; assertEquals(DEFAULT_PARALLELISM, ssJoin.getParallelism()); assertEquals(ShipStrategyType.PARTITION_HASH, ssJoin.getInput1().getShipStrategy()); assertEquals(new FieldList(0), ssJoin.getInput1().getShipStrategyKeys()); // check the workset set join SingleInputPlanNode sumReducer = (SingleInputPlanNode) ssJoin.getInput1().getSource(); SingleInputPlanNode gatherMapper = (SingleInputPlanNode) sumReducer.getInput().getSource(); DualInputPlanNode edgeJoin = (DualInputPlanNode) gatherMapper.getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, edgeJoin.getParallelism()); // input1 is the workset assertEquals(ShipStrategyType.FORWARD, edgeJoin.getInput1().getShipStrategy()); // input2 is the edges assertEquals(ShipStrategyType.PARTITION_HASH, edgeJoin.getInput2().getShipStrategy()); assertTrue(edgeJoin.getInput2().getTempMode().isCached()); assertEquals(new FieldList(0), edgeJoin.getInput2().getShipStrategyKeys()); }
Example 17
Source File: SpargelCompilerTest.java From Flink-CEPplus with Apache License 2.0 | 4 votes |
@SuppressWarnings("serial") @Test public void testSpargelCompilerWithBroadcastVariable() { final String broadcastVariableName = "broadcast variable"; ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(DEFAULT_PARALLELISM); // compose test program DataSet<Long> bcVar = env.fromElements(1L); DataSet<Vertex<Long, Long>> initialVertices = env.fromElements( new Tuple2<>(1L, 1L), new Tuple2<>(2L, 2L)) .map(new Tuple2ToVertexMap<>()); DataSet<Edge<Long, NullValue>> edges = env.fromElements(new Tuple2<>(1L, 2L)) .map(new MapFunction<Tuple2<Long, Long>, Edge<Long, NullValue>>() { public Edge<Long, NullValue> map(Tuple2<Long, Long> edge) { return new Edge<>(edge.f0, edge.f1, NullValue.getInstance()); } }); Graph<Long, Long, NullValue> graph = Graph.fromDataSet(initialVertices, edges, env); ScatterGatherConfiguration parameters = new ScatterGatherConfiguration(); parameters.addBroadcastSetForScatterFunction(broadcastVariableName, bcVar); parameters.addBroadcastSetForGatherFunction(broadcastVariableName, bcVar); DataSet<Vertex<Long, Long>> result = graph.runScatterGatherIteration( new ConnectedComponents.CCMessenger<>(BasicTypeInfo.LONG_TYPE_INFO), new ConnectedComponents.CCUpdater<>(), 100) .getVertices(); result.output(new DiscardingOutputFormat<>()); Plan p = env.createProgramPlan("Spargel Connected Components"); OptimizedPlan op = compileNoStats(p); // check the sink SinkPlanNode sink = op.getDataSinks().iterator().next(); assertEquals(ShipStrategyType.FORWARD, sink.getInput().getShipStrategy()); assertEquals(DEFAULT_PARALLELISM, sink.getParallelism()); // check the iteration WorksetIterationPlanNode iteration = (WorksetIterationPlanNode) sink.getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, iteration.getParallelism()); // check the solution set join and the delta PlanNode ssDelta = iteration.getSolutionSetDeltaPlanNode(); assertTrue(ssDelta instanceof DualInputPlanNode); // this is only true if the update functions preserves the partitioning DualInputPlanNode ssJoin = (DualInputPlanNode) ssDelta; assertEquals(DEFAULT_PARALLELISM, ssJoin.getParallelism()); assertEquals(ShipStrategyType.PARTITION_HASH, ssJoin.getInput1().getShipStrategy()); assertEquals(new FieldList(0), ssJoin.getInput1().getShipStrategyKeys()); // check the workset set join DualInputPlanNode edgeJoin = (DualInputPlanNode) ssJoin.getInput1().getSource(); assertEquals(DEFAULT_PARALLELISM, edgeJoin.getParallelism()); assertEquals(ShipStrategyType.PARTITION_HASH, edgeJoin.getInput1().getShipStrategy()); assertEquals(ShipStrategyType.FORWARD, edgeJoin.getInput2().getShipStrategy()); assertTrue(edgeJoin.getInput1().getTempMode().isCached()); assertEquals(new FieldList(0), edgeJoin.getInput1().getShipStrategyKeys()); // check that the initial partitioning is pushed out of the loop assertEquals(ShipStrategyType.PARTITION_HASH, iteration.getInput1().getShipStrategy()); assertEquals(ShipStrategyType.PARTITION_HASH, iteration.getInput2().getShipStrategy()); assertEquals(new FieldList(0), iteration.getInput1().getShipStrategyKeys()); assertEquals(new FieldList(0), iteration.getInput2().getShipStrategyKeys()); }
Example 18
Source File: SpargelCompilerTest.java From Flink-CEPplus with Apache License 2.0 | 4 votes |
@SuppressWarnings("serial") @Test public void testSpargelCompiler() { ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(DEFAULT_PARALLELISM); // compose test program DataSet<Vertex<Long, Long>> initialVertices = env.fromElements( new Tuple2<>(1L, 1L), new Tuple2<>(2L, 2L)) .map(new Tuple2ToVertexMap<>()); DataSet<Edge<Long, NullValue>> edges = env.fromElements(new Tuple2<>(1L, 2L)) .map(new MapFunction<Tuple2<Long, Long>, Edge<Long, NullValue>>() { public Edge<Long, NullValue> map(Tuple2<Long, Long> edge) { return new Edge<>(edge.f0, edge.f1, NullValue.getInstance()); } }); Graph<Long, Long, NullValue> graph = Graph.fromDataSet(initialVertices, edges, env); DataSet<Vertex<Long, Long>> result = graph.runScatterGatherIteration( new ConnectedComponents.CCMessenger<>(BasicTypeInfo.LONG_TYPE_INFO), new ConnectedComponents.CCUpdater<>(), 100) .getVertices(); result.output(new DiscardingOutputFormat<>()); Plan p = env.createProgramPlan("Spargel Connected Components"); OptimizedPlan op = compileNoStats(p); // check the sink SinkPlanNode sink = op.getDataSinks().iterator().next(); assertEquals(ShipStrategyType.FORWARD, sink.getInput().getShipStrategy()); assertEquals(DEFAULT_PARALLELISM, sink.getParallelism()); // check the iteration WorksetIterationPlanNode iteration = (WorksetIterationPlanNode) sink.getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, iteration.getParallelism()); // check the solution set join and the delta PlanNode ssDelta = iteration.getSolutionSetDeltaPlanNode(); assertTrue(ssDelta instanceof DualInputPlanNode); // this is only true if the update functions preserves the partitioning DualInputPlanNode ssJoin = (DualInputPlanNode) ssDelta; assertEquals(DEFAULT_PARALLELISM, ssJoin.getParallelism()); assertEquals(ShipStrategyType.PARTITION_HASH, ssJoin.getInput1().getShipStrategy()); assertEquals(new FieldList(0), ssJoin.getInput1().getShipStrategyKeys()); // check the workset set join DualInputPlanNode edgeJoin = (DualInputPlanNode) ssJoin.getInput1().getSource(); assertEquals(DEFAULT_PARALLELISM, edgeJoin.getParallelism()); assertEquals(ShipStrategyType.PARTITION_HASH, edgeJoin.getInput1().getShipStrategy()); assertEquals(ShipStrategyType.FORWARD, edgeJoin.getInput2().getShipStrategy()); assertTrue(edgeJoin.getInput1().getTempMode().isCached()); assertEquals(new FieldList(0), edgeJoin.getInput1().getShipStrategyKeys()); // check that the initial partitioning is pushed out of the loop assertEquals(ShipStrategyType.PARTITION_HASH, iteration.getInput1().getShipStrategy()); assertEquals(ShipStrategyType.PARTITION_HASH, iteration.getInput2().getShipStrategy()); assertEquals(new FieldList(0), iteration.getInput1().getShipStrategyKeys()); assertEquals(new FieldList(0), iteration.getInput2().getShipStrategyKeys()); // check that the initial workset sort is outside the loop assertEquals(LocalStrategy.SORT, iteration.getInput2().getLocalStrategy()); assertEquals(new FieldList(0), iteration.getInput2().getLocalStrategyKeys()); }
Example 19
Source File: IterationCompilerTest.java From flink with Apache License 2.0 | 4 votes |
@Test public void testWorksetIterationWithUnionRoot() { try { ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(43); DataSet<Tuple2<Long, Long>> input = env.generateSequence(1, 20) .map(new MapFunction<Long, Tuple2<Long, Long>>() { @Override public Tuple2<Long, Long> map(Long value){ return null; } }); DeltaIteration<Tuple2<Long, Long>, Tuple2<Long, Long>> iter = input.iterateDelta(input, 100, 0); iter.closeWith( iter.getWorkset().map(new IdentityMapper<Tuple2<Long,Long>>()) .union( iter.getWorkset().map(new IdentityMapper<Tuple2<Long,Long>>())) , iter.getWorkset().map(new IdentityMapper<Tuple2<Long,Long>>()) .union( iter.getWorkset().map(new IdentityMapper<Tuple2<Long,Long>>())) ) .output(new DiscardingOutputFormat<Tuple2<Long, Long>>()); Plan p = env.createProgramPlan(); OptimizedPlan op = compileNoStats(p); SinkPlanNode sink = op.getDataSinks().iterator().next(); WorksetIterationPlanNode iterNode = (WorksetIterationPlanNode) sink.getInput().getSource(); // make sure that the root is part of the dynamic path // the "NoOp"a that come after the union. SingleInputPlanNode nextWorksetNoop = (SingleInputPlanNode) iterNode.getNextWorkSetPlanNode(); SingleInputPlanNode solutionDeltaNoop = (SingleInputPlanNode) iterNode.getSolutionSetDeltaPlanNode(); NAryUnionPlanNode nextWorksetUnion = (NAryUnionPlanNode) nextWorksetNoop.getInput().getSource(); NAryUnionPlanNode solutionDeltaUnion = (NAryUnionPlanNode) solutionDeltaNoop.getInput().getSource(); assertTrue(nextWorksetNoop.isOnDynamicPath()); assertTrue(nextWorksetNoop.getCostWeight() >= 1); assertTrue(solutionDeltaNoop.isOnDynamicPath()); assertTrue(solutionDeltaNoop.getCostWeight() >= 1); assertTrue(nextWorksetUnion.isOnDynamicPath()); assertTrue(nextWorksetUnion.getCostWeight() >= 1); assertTrue(solutionDeltaUnion.isOnDynamicPath()); assertTrue(solutionDeltaUnion.getCostWeight() >= 1); new JobGraphGenerator().compileJobGraph(op); } catch (Exception e) { e.printStackTrace(); fail(e.getMessage()); } }
Example 20
Source File: PregelCompilerTest.java From Flink-CEPplus with Apache License 2.0 | 4 votes |
@SuppressWarnings("serial") @Test public void testPregelCompilerWithBroadcastVariable() { final String broadcastSetName = "broadcast"; ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(DEFAULT_PARALLELISM); // compose test program { DataSet<Long> bcVar = env.fromElements(1L); DataSet<Vertex<Long, Long>> initialVertices = env.fromElements( new Tuple2<>(1L, 1L), new Tuple2<>(2L, 2L)) .map(new Tuple2ToVertexMap<>()); DataSet<Edge<Long, NullValue>> edges = env.fromElements(new Tuple2<>(1L, 2L)) .map(new MapFunction<Tuple2<Long, Long>, Edge<Long, NullValue>>() { public Edge<Long, NullValue> map(Tuple2<Long, Long> edge) { return new Edge<>(edge.f0, edge.f1, NullValue.getInstance()); } }); Graph<Long, Long, NullValue> graph = Graph.fromDataSet(initialVertices, edges, env); VertexCentricConfiguration parameters = new VertexCentricConfiguration(); parameters.addBroadcastSet(broadcastSetName, bcVar); DataSet<Vertex<Long, Long>> result = graph.runVertexCentricIteration( new CCCompute(), null, 100, parameters) .getVertices(); result.output(new DiscardingOutputFormat<>()); } Plan p = env.createProgramPlan("Pregel Connected Components"); OptimizedPlan op = compileNoStats(p); // check the sink SinkPlanNode sink = op.getDataSinks().iterator().next(); assertEquals(ShipStrategyType.FORWARD, sink.getInput().getShipStrategy()); assertEquals(DEFAULT_PARALLELISM, sink.getParallelism()); // check the iteration WorksetIterationPlanNode iteration = (WorksetIterationPlanNode) sink.getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, iteration.getParallelism()); // check the solution set delta PlanNode ssDelta = iteration.getSolutionSetDeltaPlanNode(); assertTrue(ssDelta instanceof SingleInputPlanNode); SingleInputPlanNode ssFlatMap = (SingleInputPlanNode) ((SingleInputPlanNode) (ssDelta)).getInput().getSource(); assertEquals(DEFAULT_PARALLELISM, ssFlatMap.getParallelism()); assertEquals(ShipStrategyType.FORWARD, ssFlatMap.getInput().getShipStrategy()); // check the computation coGroup DualInputPlanNode computationCoGroup = (DualInputPlanNode) (ssFlatMap.getInput().getSource()); assertEquals(DEFAULT_PARALLELISM, computationCoGroup.getParallelism()); assertEquals(ShipStrategyType.FORWARD, computationCoGroup.getInput1().getShipStrategy()); assertEquals(ShipStrategyType.PARTITION_HASH, computationCoGroup.getInput2().getShipStrategy()); assertTrue(computationCoGroup.getInput2().getTempMode().isCached()); assertEquals(new FieldList(0), computationCoGroup.getInput2().getShipStrategyKeys()); // check that the initial partitioning is pushed out of the loop assertEquals(ShipStrategyType.PARTITION_HASH, iteration.getInput1().getShipStrategy()); assertEquals(new FieldList(0), iteration.getInput1().getShipStrategyKeys()); }