You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wayang.apache.org by be...@apache.org on 2021/09/27 15:08:38 UTC

[incubator-wayang] branch WAYANG-34 updated (af261d9 -> 12c59d4)

This is an automated email from the ASF dual-hosted git repository.

bertty pushed a change to branch WAYANG-34
in repository https://gitbox.apache.org/repos/asf/incubator-wayang.git.


    from af261d9  Merge pull request #23 from apache/WAYANG-36
     new 2119574  [WAYANG-34] add the ObjectFileSink to the basic
     new a472d3a  [WAYANG-34] add the ObjectFileSink to Platform Spark and Flink
     add 2d89493  [WAYANG-37] update Apache Spark version from 2.4.0 to 3.1.2
     add 6ed0f46  Merge pull request #24 from apache/WAYANG-37
     add 459486e  [WAYANG-38] Add the License Checker
     add 7c9caf0  [WAYANG-38] remove the dependency org.json because of conflict with license
     add d4a45fd  [WAYANG-38] notice added on JSONArray and JSONObject
     add c6fd120  Merge pull request #25 from apache/WAYANG-38
     add 8fe27e6  [WAYANG-40] change spark version depending on the profile of scala
     add 66cb131  [WAYANG-40][scala-11] adding the graphchi exclusion in licenses
     add 52119cb  [WAYANG-40][licence] adding new option to BSD 3-claus
     add 54e6351  [WAYANG-40] correction scope hadoop on wayang-spark
     add 7df205f  [WAYANG-40] correction of ArrayIndexOutOfBoundsException 10582
     add de37bc1  Merge pull request #26 from apache/develop
     add d6eb3ce  Change SelectNearestCentroidFunction to use org.apache.logging.log4j.LogManager instead of org.slf4j.LoggerFactory
     add 61a9db2  Merge pull request #27 from ggevay/log-intellij-build-issue
     add cf142fd  [WAYANG-41] Fix some Scala version issues
     add 9071f6c  Merge pull request #28 from ggevay/travis-scala-version
     add 5de053d  [RELEASE][PREPARATION] General documentation about how to contribute
     add a205110  [RELEASE][PREPARATION] Release documentation
     add 027d2c9  [RELEASE][PREPARATION] update NOTICE.TXT and RELEASE_NOTES
     new 56b7dbe  Merge commit '027d2c99a20d796494609deb6079e51015e26a5b' into WAYANG-34
     new 93f9c62  [WAYANG-34] add the ObjectFileSource to the basic and platforms
     new 47e2ef5  [WAYANG-34] add Terasort just TeraGen running
     new 72939e0  [WAYANG-34] add Terasort just TeraSort.scala working
     new 0175319  [WAYANG-34] add Terasort just TeraValidate.scala working
     new 4de70fb  [WAYANG-34] Terasort licenses issues
     new 97033d9  [WAYANG-34] imports optimization and refactor
     new d2055bd  [WAYANG-34] add missing license to ObjectFileSink.java
     new 12c59d4  [WAYANG-34] Correction activation of scala-12 profile

The 11 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .travis.yml                                        |  14 +-
 NOTICE.TXT                                         |  31 +-
 RELEASE_NOTES                                      |  47 +++
 bin/build.sh                                       |   9 +-
 bin/change-scala-version.sh                        |   2 +
 pom.xml                                            |  64 ++--
 wayang-api/wayang-api-python/pom.xml               |   3 +-
 .../apache/wayang/api/python/PythonAPITest.java    |   4 +-
 wayang-api/wayang-api-scala-java/pom.xml           |   3 +-
 .../scala/org/apache/wayang/api/DataQuanta.scala   |  33 +-
 .../org/apache/wayang/api/DataQuantaBuilder.scala  |   1 +
 .../org/apache/wayang/api/JavaPlanBuilder.scala    |   1 +
 .../scala/org/apache/wayang/api/PlanBuilder.scala  |  11 +-
 .../java/org/apache/wayang/api/JavaApiTest.java    |  41 ++-
 .../test/scala/org/apache/wayang/api/ApiTest.scala |   2 +-
 wayang-benchmark/pom.xml                           |  10 +
 .../java/org/apache/wayang/apps/sgd/SGDImpl.java   |   9 +-
 .../apache/wayang/apps/sgd/SGDImprovedImpl.java    |  13 +-
 .../org/apache/wayang/apps/terasort/Random16.java  | 376 ++++++++++++++++++++
 .../apache/wayang/apps/terasort/Unsigned16.java    | 299 ++++++++++++++++
 .../java/org/apache/wayang/apps/tpch/Main.java     |   7 +-
 .../org/apache/wayang/apps/wordcount/Main.java     |  21 +-
 .../apps/benchmark/OptimizerScalabilityTest.scala  |   1 -
 .../wayang/apps/benchmark/PlanGenerator.scala      |   2 +-
 .../org/apache/wayang/apps/crocopr/CrocoPR.scala   |   3 +-
 .../org/apache/wayang/apps/kmeans/Kmeans.scala     |   5 +-
 .../wayang/apps/kmeans/postgres/Kmeans.scala       |   5 +-
 .../scala/org/apache/wayang/apps/sgd/SGD.scala     |   1 -
 .../wayang/apps/simwords/ScrubFunction.scala       |   3 +-
 .../simwords/SelectNearestCentroidFunction.scala   |   4 +-
 .../org/apache/wayang/apps/simwords/SimWords.scala |   3 +-
 .../apache/wayang/apps/simwords/Word2NVec.scala    |   3 +-
 .../scala/org/apache/wayang/apps/sindy/Sindy.scala |   8 +-
 .../org/apache/wayang/apps/terasort/TeraApp.scala  | 152 ++++++++
 .../org/apache/wayang/apps/terasort/TeraGen.scala  | 129 +++++++
 .../org/apache/wayang/apps/terasort/TeraSort.scala |  45 +++
 .../apache/wayang/apps/terasort/TeraValidate.scala | 100 ++++++
 .../scala/org/apache/wayang/apps/tpch/TpcH.scala   |  13 +-
 .../apache/wayang/apps/tpch/queries/Query1.scala   |   2 +-
 .../wayang/apps/tpch/queries/Query3Database.scala  |   3 +-
 .../wayang/apps/tpch/queries/Query3File.scala      |   3 +-
 .../wayang/apps/tpch/queries/Query3Hybrid.scala    |   3 +-
 .../org/apache/wayang/apps/util/Parameters.scala   |   2 +-
 .../apache/wayang/apps/util/ProfileDBHelper.scala  |   3 -
 .../wayang/apps/wordcount/WordCountScala.scala     |   3 +-
 .../wayang/apps/tpch/data/LineItemTupleTest.java   |   5 +-
 .../org/apache/wayang/apps/kmeans/KmeansTest.scala |   4 +-
 wayang-commons/pom.xml                             |  10 +-
 .../apache/wayang/basic/channels/FileChannel.java  |  15 +-
 .../java/org/apache/wayang/basic/data/Record.java  |   5 +-
 .../basic/function/ProjectionDescriptor.java       |   9 +-
 .../wayang/basic/mapping/GlobalReduceMapping.java  |   5 +-
 .../org/apache/wayang/basic/mapping/Mappings.java  |   3 +-
 .../basic/mapping/MaterializedGroupByMapping.java  |   5 +-
 .../wayang/basic/mapping/PageRankMapping.java      |   9 +-
 .../wayang/basic/mapping/ReduceByMapping.java      |   5 +-
 .../apache/wayang/basic/mapping/RepeatMapping.java |   7 +-
 .../wayang/basic/operators/CartesianOperator.java  |   3 +-
 .../wayang/basic/operators/CoGroupOperator.java    |   3 +-
 .../wayang/basic/operators/CollectionSource.java   |   7 +-
 .../wayang/basic/operators/CountOperator.java      |   3 +-
 .../wayang/basic/operators/DistinctOperator.java   |   3 +-
 .../wayang/basic/operators/DoWhileOperator.java    |   9 +-
 .../wayang/basic/operators/FilterOperator.java     |   3 +-
 .../wayang/basic/operators/FlatMapOperator.java    |   3 +-
 .../operators/GlobalMaterializedGroupOperator.java |   3 +-
 .../basic/operators/GlobalReduceOperator.java      |   3 +-
 .../wayang/basic/operators/IntersectOperator.java  |   3 +-
 .../wayang/basic/operators/JoinOperator.java       |   3 +-
 .../wayang/basic/operators/LocalCallbackSink.java  |   7 +-
 .../wayang/basic/operators/LoopOperator.java       |   9 +-
 .../apache/wayang/basic/operators/MapOperator.java |   3 +-
 .../basic/operators/MapPartitionsOperator.java     |   3 +-
 .../operators/MaterializedGroupByOperator.java     |   3 +-
 .../wayang/basic/operators/ObjectFileSink.java     |  69 ++++
 .../{TextFileSource.java => ObjectFileSource.java} | 125 ++++---
 .../wayang/basic/operators/PageRankOperator.java   |   3 +-
 .../wayang/basic/operators/ReduceByOperator.java   |   3 +-
 .../wayang/basic/operators/ReduceOperator.java     |   3 +-
 .../wayang/basic/operators/RepeatOperator.java     |   9 +-
 .../wayang/basic/operators/SampleOperator.java     |  11 +-
 .../wayang/basic/operators/SortOperator.java       |   3 +-
 .../wayang/basic/operators/TextFileSink.java       |   3 +-
 .../wayang/basic/operators/TextFileSource.java     |  17 +-
 .../wayang/basic/operators/UnionAllOperator.java   |   3 +-
 .../wayang/basic/operators/ZipWithIdOperator.java  |   3 +-
 .../apache/wayang/basic/plugin/WayangBasic.java    |   7 +-
 .../wayang/basic/plugin/WayangBasicGraph.java      |   5 +-
 .../org/apache/wayang/basic/types/RecordType.java  |   5 +-
 .../basic/function/ProjectionDescriptorTest.java   |   7 +-
 .../wayang/basic/mapping/ReduceByMappingTest.java  |   6 +-
 .../operators/MaterializedGroupByOperatorTest.java |   5 +-
 .../wayang/basic/operators/TextFileSourceTest.java |  30 +-
 .../apache/wayang/basic/types/RecordTypeTest.java  |   4 +-
 wayang-commons/wayang-core/pom.xml                 |   8 +-
 .../org/apache/wayang/core/api/Configuration.java  |  39 +--
 .../main/java/org/apache/wayang/core/api/Job.java  |  27 +-
 .../org/apache/wayang/core/api/WayangContext.java  |   4 +-
 .../core/api/configuration/CollectionProvider.java |   5 +-
 .../configuration/ExplicitCollectionProvider.java  |   7 +-
 .../FunctionalCollectionProvider.java              |   3 +-
 .../configuration/FunctionalKeyValueProvider.java  |   3 +-
 .../api/configuration/FunctionalValueProvider.java |   3 +-
 .../core/api/configuration/KeyValueProvider.java   |   7 +-
 .../configuration/MapBasedKeyValueProvider.java    |   5 +-
 .../core/api/configuration/ValueProvider.java      |   7 +-
 .../core/function/AggregationDescriptor.java       |   3 +-
 .../wayang/core/function/ConsumerDescriptor.java   |   3 +-
 .../wayang/core/function/ExecutionContext.java     |   3 +-
 .../wayang/core/function/FlatMapDescriptor.java    |   5 +-
 .../wayang/core/function/FunctionDescriptor.java   |   9 +-
 .../core/function/MapPartitionsDescriptor.java     |   5 +-
 .../wayang/core/function/PredicateDescriptor.java  |   3 +-
 .../wayang/core/function/ReduceDescriptor.java     |   3 +-
 .../core/function/TransformationDescriptor.java    |   3 +-
 .../wayang/core/mapping/OperatorPattern.java       |   7 +-
 .../wayang/core/mapping/PlanTransformation.java    |  13 +-
 .../core/mapping/ReplacementSubplanFactory.java    |   5 +-
 .../apache/wayang/core/mapping/SubplanMatch.java   |   5 +-
 .../apache/wayang/core/mapping/SubplanPattern.java |  15 +-
 .../wayang/core/monitor/DisabledMonitor.java       |   3 +-
 .../apache/wayang/core/monitor/FileMonitor.java    |  10 +-
 .../apache/wayang/core/monitor/HttpMonitor.java    |   3 +-
 .../org/apache/wayang/core/monitor/Monitor.java    |   3 +-
 .../apache/wayang/core/monitor/ZeroMQMonitor.java  |   3 +-
 .../optimizer/AggregateOptimizationContext.java    |   5 +-
 .../core/optimizer/DefaultOptimizationContext.java |  13 +-
 .../wayang/core/optimizer/OptimizationContext.java |  25 +-
 .../wayang/core/optimizer/OptimizationUtils.java   |  11 +-
 .../optimizer/ProbabilisticIntervalEstimate.java   |   3 +-
 .../wayang/core/optimizer/SanityChecker.java       |  11 +-
 .../AggregatingCardinalityEstimator.java           |   5 +-
 .../optimizer/cardinality/CardinalityEstimate.java |   2 +-
 .../CardinalityEstimationTraversal.java            |  21 +-
 .../cardinality/CardinalityEstimatorManager.java   |   9 +-
 .../optimizer/cardinality/CardinalityPusher.java   |   9 +-
 .../cardinality/DefaultCardinalityEstimator.java   |   5 +-
 .../LoopHeadAlternativeCardinalityPusher.java      |   7 +-
 .../cardinality/LoopSubplanCardinalityPusher.java  |  11 +-
 .../OperatorAlternativeCardinalityPusher.java      |   5 +-
 .../cardinality/SubplanCardinalityPusher.java      |  11 +-
 .../SwitchForwardCardinalityEstimator.java         |   2 +-
 .../core/optimizer/channels/ChannelConversion.java |   5 +-
 .../optimizer/channels/ChannelConversionGraph.java |  35 +-
 .../channels/DefaultChannelConversion.java         |   7 +-
 .../core/optimizer/costs/DefaultLoadEstimator.java |   7 +-
 .../core/optimizer/costs/EstimationContext.java    |   7 +-
 .../optimizer/costs/IntervalLoadEstimator.java     |   7 +-
 .../wayang/core/optimizer/costs/LoadEstimate.java  |   2 +-
 .../wayang/core/optimizer/costs/LoadEstimator.java |   3 +-
 .../wayang/core/optimizer/costs/LoadProfile.java   |   7 +-
 .../core/optimizer/costs/LoadProfileEstimator.java |   3 +-
 .../optimizer/costs/LoadProfileEstimators.java     |  29 +-
 .../costs/NestableLoadProfileEstimator.java        |   7 +-
 .../optimizer/costs/SimpleEstimationContext.java   |   7 +-
 .../optimizer/enumeration/ExecutionTaskFlow.java   |  19 +-
 .../enumeration/ExecutionTaskFlowCompiler.java     |  23 +-
 .../enumeration/LatentOperatorPruningStrategy.java |  13 +-
 .../core/optimizer/enumeration/LoopEnumerator.java |  13 +-
 .../optimizer/enumeration/LoopImplementation.java  |   7 +-
 .../optimizer/enumeration/PlanEnumeration.java     |  29 +-
 .../core/optimizer/enumeration/PlanEnumerator.java |  43 ++-
 .../optimizer/enumeration/PlanImplementation.java  |  39 +--
 .../enumeration/RandomPruningStrategy.java         |   3 +-
 .../enumeration/StageAssignmentTraversal.java      |  27 +-
 .../optimizer/enumeration/TopKPruningStrategy.java |   3 +-
 .../wayang/core/plan/executionplan/Channel.java    |  29 +-
 .../core/plan/executionplan/ExecutionPlan.java     |  11 +-
 .../core/plan/executionplan/ExecutionStage.java    |   9 +-
 .../plan/executionplan/ExecutionStageLoop.java     |   5 +-
 .../core/plan/executionplan/PlatformExecution.java |   5 +-
 .../core/plan/wayangplan/ElementaryOperator.java   |   3 +-
 .../plan/wayangplan/EstimationContextProperty.java |   3 +-
 .../core/plan/wayangplan/ExecutionOperator.java    |  13 +-
 .../wayang/core/plan/wayangplan/InputSlot.java     |   3 +-
 .../core/plan/wayangplan/LoopHeadAlternative.java  |   7 +-
 .../core/plan/wayangplan/LoopHeadOperator.java     |   3 +-
 .../wayang/core/plan/wayangplan/LoopIsolator.java  |   7 +-
 .../wayang/core/plan/wayangplan/LoopSubplan.java   |   7 +-
 .../wayang/core/plan/wayangplan/Operator.java      |  15 +-
 .../core/plan/wayangplan/OperatorAlternative.java  |  11 +-
 .../wayang/core/plan/wayangplan/OperatorBase.java  |  15 +-
 .../core/plan/wayangplan/OperatorContainer.java    |   9 +-
 .../core/plan/wayangplan/OperatorContainers.java   |   3 +-
 .../wayang/core/plan/wayangplan/OutputSlot.java    |   3 +-
 .../wayang/core/plan/wayangplan/PlanTraversal.java |   5 +-
 .../apache/wayang/core/plan/wayangplan/Slot.java   |   3 +-
 .../wayang/core/plan/wayangplan/SlotMapping.java   |  10 +-
 .../wayang/core/plan/wayangplan/Subplan.java       |  11 +-
 .../wayang/core/plan/wayangplan/WayangPlan.java    |  15 +-
 .../traversal/AbstractTopologicalTraversal.java    |  11 +-
 .../core/platform/AbstractChannelInstance.java     |   5 +-
 .../wayang/core/platform/AtomicExecution.java      |   4 +-
 .../wayang/core/platform/AtomicExecutionGroup.java |   5 +-
 .../core/platform/CardinalityBreakpoint.java       |   4 +-
 .../wayang/core/platform/ChannelDescriptor.java    |   5 +-
 .../wayang/core/platform/ChannelInstance.java      |   3 +-
 .../core/platform/ConjunctiveBreakpoint.java       |   5 +-
 .../core/platform/CrossPlatformExecutor.java       |  25 +-
 .../wayang/core/platform/ExecutionState.java       |   3 +-
 .../wayang/core/platform/ExecutorTemplate.java     |  17 +-
 .../apache/wayang/core/platform/FixBreakpoint.java |   7 +-
 .../org/apache/wayang/core/platform/Junction.java  |  11 +-
 .../wayang/core/platform/PartialExecution.java     |  11 +-
 .../org/apache/wayang/core/platform/Platform.java  |   2 +-
 .../wayang/core/platform/PushExecutorTemplate.java |  21 +-
 .../platform/lineage/ExecutionLineageNode.java     |   5 +-
 .../platform/lineage/LazyExecutionLineageNode.java |   7 +-
 .../apache/wayang/core/plugin/DynamicPlugin.java   |  21 +-
 .../java/org/apache/wayang/core/plugin/Plugin.java |   5 +-
 .../core/profiling/CardinalityRepository.java      |  23 +-
 .../apache/wayang/core/profiling/ExecutionLog.java |  21 +-
 .../core/profiling/ExecutionPlanMeasurement.java   |  11 +-
 .../profiling/FullInstrumentationStrategy.java     |   3 +-
 .../org/apache/wayang/core/types/DataSetType.java  |   3 +-
 .../wayang/core/types/DataUnitGroupType.java       |   3 +-
 .../apache/wayang/core/util/JsonSerializable.java  |   5 +-
 .../apache/wayang/core/util/JsonSerializables.java |   7 +-
 .../apache/wayang/core/util/JsonSerializer.java    |   3 +-
 .../org/apache/wayang/core/util/JuelUtils.java     |   9 +-
 .../java/org/apache/wayang/core/util/LruCache.java |   3 +-
 .../apache/wayang/core/util/ReflectionUtils.java   |  11 +-
 .../apache/wayang/core/util/WayangCollections.java |   3 +-
 .../apache/wayang/core/util/fs/FileSystems.java    |   9 +-
 .../org/apache/wayang/core/util/fs/FileUtils.java  |   5 +-
 .../wayang/core/util/fs/HadoopFileSystem.java      |  15 +-
 .../wayang/core/util/fs/LocalFileSystem.java       |   7 +-
 .../apache/wayang/core/util/json/JSONArray.java    | 138 ++++++++
 .../apache/wayang/core/util/json/JSONObject.java   | 285 +++++++++++++++
 .../apache/wayang/core/util/mathex/Context.java    |   3 +-
 .../wayang/core/util/mathex/DefaultContext.java    |   3 +-
 .../wayang/core/util/mathex/ExpressionBuilder.java |   5 +-
 .../core/util/mathex/model/CompiledFunction.java   |   5 +-
 .../core/util/mathex/model/NamedFunction.java      |   7 +-
 .../test/java/org/apache/wayang/core/SlotTest.java |   2 +-
 .../wayang/core/mapping/OperatorPatternTest.java   |   2 +-
 .../core/mapping/PlanTransformationTest.java       |   6 +-
 .../wayang/core/mapping/SubplanPatternTest.java    |   9 +-
 .../wayang/core/mapping/test/TestSinkMapping.java  |   5 +-
 .../AggregatingCardinalityEstimatorTest.java       |  13 +-
 .../DefaultCardinalityEstimatorTest.java           |  13 +-
 .../LoopSubplanCardinalityPusherTest.java          |   6 +-
 .../cardinality/SubplanCardinalityPusherTest.java  |   6 +-
 .../channels/ChannelConversionGraphTest.java       |  11 +-
 .../costs/NestableLoadProfileEstimatorTest.java    |   7 +-
 .../enumeration/StageAssignmentTraversalTest.java  |   7 +-
 .../core/plan/wayangplan/LoopIsolatorTest.java     |   9 +-
 .../wayang/core/plan/wayangplan/OperatorTest.java  |   7 +-
 .../core/plan/wayangplan/SlotMappingTest.java      |  11 +-
 .../plan/wayangplan/test/TestFilterOperator.java   |   3 +-
 .../wayang/core/plan/wayangplan/test/TestJoin.java |   3 +-
 .../core/plan/wayangplan/test/TestLoopHead.java    |   7 +-
 .../core/plan/wayangplan/test/TestMapOperator.java |   3 +-
 .../wayang/core/plan/wayangplan/test/TestSink.java |   3 +-
 .../core/plan/wayangplan/test/TestSource.java      |   3 +-
 .../wayang/core/platform/PartialExecutionTest.java |  15 +-
 .../wayang/core/plugin/DynamicPluginTest.java      |  15 +-
 .../wayang/core/test/DummyExecutionOperator.java   |   7 +-
 .../org/apache/wayang/core/test/MockFactory.java   |  11 +-
 .../test/SerializableDummyExecutionOperator.java   |   2 +-
 .../core/util/ConsumerIteratorAdapterTest.java     |   9 +-
 .../wayang/core/util/CrossProductIterableTest.java |   5 +-
 .../wayang/core/util/LimitedInputStreamTest.java   |   5 +-
 .../wayang/core/util/ReflectionUtilsTest.java      |   5 +-
 .../wayang/core/util/WayangCollectionsTest.java    |   5 +-
 .../core/util/mathex/ExpressionBuilderTest.java    |   7 +-
 .../wayang/core/util/mathex/ExpressionTest.java    |   9 +-
 .../wayang/commons/util/profiledb/ProfileDB.java   |  13 +-
 .../profiledb/json/MeasurementDeserializer.java    |   3 +-
 .../util/profiledb/json/MeasurementSerializer.java |   3 +-
 .../model/measurement/TimeMeasurement.java         |   5 +-
 .../util/profiledb/storage/FileStorage.java        |   8 +-
 .../util/profiledb/storage/JDBCStorage.java        |   3 +-
 .../commons/util/profiledb/storage/Storage.java    |  16 +-
 .../commons/util/profiledb/ProfileDBTest.java      |  18 +-
 .../measurement/TestMemoryMeasurement.java         |   3 +-
 .../profiledb/measurement/TestTimeMeasurement.java |   5 +-
 wayang-docs/src/main/resources/Gemfile.lock        |   3 +-
 wayang-docs/src/main/resources/_data/menus.yml     | 116 +++---
 .../main/resources/how_contribute/bugs_report.md   |   7 +-
 .../pull_request.md                                |  24 +-
 .../main/resources/how_contribute/helping_users.md |   2 +-
 .../how_contribute/jira_issue_maintenance.md       |  18 +-
 .../resources/how_contribute/preparing_releases.md | 388 +++++++++++++++++++++
 .../resources/how_contribute/slack_channels.md     |   3 +-
 .../wayang/flink/channels/ChannelConversions.java  |   5 +-
 .../wayang/flink/channels/DataSetChannel.java      |   3 +-
 .../wayang/flink/compiler/FunctionCompiler.java    |   7 +-
 .../wayang/flink/compiler/KeySelectorDistinct.java |   3 +-
 .../wayang/flink/compiler/KeySelectorFunction.java |   5 +-
 .../flink/compiler/OutputFormatConsumer.java       |   5 +-
 .../flink/compiler/WayangFileOutputFormat.java     |  17 +-
 .../flink/compiler/criterion/WayangAggregator.java |   5 +-
 .../criterion/WayangConvergenceCriterion.java      |   5 +-
 .../flink/compiler/criterion/WayangListValue.java  |   3 +-
 .../flink/compiler/criterion/WayangValue.java      |   7 +-
 .../flink/execution/FlinkExecutionContext.java     |   5 +-
 .../wayang/flink/execution/FlinkExecutor.java      |   7 +-
 .../wayang/flink/mapping/CartesianMapping.java     |   5 +-
 .../wayang/flink/mapping/CoGroupMapping.java       |   5 +-
 .../flink/mapping/CollectionSourceMapping.java     |   5 +-
 .../apache/wayang/flink/mapping/CountMapping.java  |   5 +-
 .../wayang/flink/mapping/DistinctMapping.java      |   5 +-
 .../wayang/flink/mapping/DoWhileMapping.java       |   5 +-
 .../apache/wayang/flink/mapping/FilterMapping.java |   5 +-
 .../wayang/flink/mapping/FlatMapMapping.java       |   5 +-
 .../mapping/GlobalMaterializedGroupMapping.java    |   5 +-
 .../wayang/flink/mapping/GlobalReduceMapping.java  |   5 +-
 .../wayang/flink/mapping/GroupByMapping.java       |   5 +-
 .../wayang/flink/mapping/IntersectMapping.java     |   5 +-
 .../apache/wayang/flink/mapping/JoinMapping.java   |   5 +-
 .../flink/mapping/LocalCallbackSinkMapping.java    |   5 +-
 .../apache/wayang/flink/mapping/LoopMapping.java   |   5 +-
 .../apache/wayang/flink/mapping/MapMapping.java    |   5 +-
 .../wayang/flink/mapping/MapPartitionsMapping.java |   5 +-
 .../org/apache/wayang/flink/mapping/Mappings.java  |   5 +-
 .../flink/mapping/MaterializedGroupByMapping.java  |   5 +-
 ...sectMapping.java => ObjectFileSinkMapping.java} |  25 +-
 ...ceMapping.java => ObjectFileSourceMapping.java} |  25 +-
 .../wayang/flink/mapping/PageRankMapping.java      |   5 +-
 .../wayang/flink/mapping/ReduceByMapping.java      |   5 +-
 .../apache/wayang/flink/mapping/RepeatMapping.java |   5 +-
 .../apache/wayang/flink/mapping/SampleMapping.java |   5 +-
 .../apache/wayang/flink/mapping/SortMapping.java   |   5 +-
 .../wayang/flink/mapping/TextFileSinkMapping.java  |   5 +-
 .../flink/mapping/TextFileSourceMapping.java       |   5 +-
 .../wayang/flink/mapping/UnionAllMapping.java      |   5 +-
 .../wayang/flink/mapping/ZipWithIdMapping.java     |   5 +-
 .../flink/operators/FlinkCartesianOperator.java    |   9 +-
 .../flink/operators/FlinkCoGroupOperator.java      |  11 +-
 .../flink/operators/FlinkCollectionSink.java       |   9 +-
 .../flink/operators/FlinkCollectionSource.java     |   7 +-
 .../wayang/flink/operators/FlinkCountOperator.java |   9 +-
 .../flink/operators/FlinkDistinctOperator.java     |   9 +-
 .../flink/operators/FlinkDoWhileOperator.java      |   9 +-
 .../flink/operators/FlinkExecutionOperator.java    |   5 +-
 .../flink/operators/FlinkFilterOperator.java       |  11 +-
 .../flink/operators/FlinkFlatMapOperator.java      |  11 +-
 .../FlinkGlobalMaterializedGroupOperator.java      |  11 +-
 .../flink/operators/FlinkGlobalReduceOperator.java |  11 +-
 .../flink/operators/FlinkGroupByOperator.java      |  13 +-
 .../flink/operators/FlinkIntersectOperator.java    |   7 +-
 .../wayang/flink/operators/FlinkJoinOperator.java  |  11 +-
 .../flink/operators/FlinkLocalCallbackSink.java    |   9 +-
 .../wayang/flink/operators/FlinkLoopOperator.java  |   7 +-
 .../wayang/flink/operators/FlinkMapOperator.java   |   9 +-
 .../operators/FlinkMapPartitionsOperator.java      |  11 +-
 .../FlinkMaterializedGroupByOperator.java          |  11 +-
 .../flink/operators/FlinkObjectFileSink.java       |  35 +-
 .../flink/operators/FlinkObjectFileSource.java     |  28 +-
 .../flink/operators/FlinkPageRankOperator.java     |  15 +-
 .../flink/operators/FlinkReduceByOperator.java     |  11 +-
 .../operators/FlinkRepeatExpandedOperator.java     |   7 +-
 .../flink/operators/FlinkRepeatOperator.java       |   7 +-
 .../flink/operators/FlinkSampleOperator.java       |  15 +-
 .../wayang/flink/operators/FlinkSortOperator.java  |   9 +-
 .../wayang/flink/operators/FlinkTextFileSink.java  |   9 +-
 .../flink/operators/FlinkTextFileSource.java       |   7 +-
 .../wayang/flink/operators/FlinkTsvFileSink.java   |   9 +-
 .../flink/operators/FlinkUnionAllOperator.java     |   7 +-
 .../flink/operators/FlinkZipWithIdOperator.java    |   9 +-
 .../wayang/flink/platform/FlinkPlatform.java       |  13 +-
 .../wayang/flink/plugin/FlinkBasicPlugin.java      |   5 +-
 .../wayang/flink/plugin/FlinkConversionPlugin.java |   7 +-
 .../wayang/giraph/Algorithm/PageRankAlgorithm.java |   5 +-
 .../giraph/Algorithm/PageRankParameters.java       |   5 +-
 .../wayang/giraph/channels/ChannelConversions.java |   4 +-
 .../wayang/giraph/execution/GiraphExecutor.java    |  14 +-
 .../apache/wayang/giraph/mappings/Mappings.java    |   3 +-
 .../wayang/giraph/mappings/PageRankMapping.java    |  13 +-
 .../giraph/operators/GiraphExecutionOperator.java  |   3 +-
 .../giraph/operators/GiraphPageRankOperator.java   |  16 +-
 .../wayang/giraph/platform/GiraphPlatform.java     |   1 -
 .../apache/wayang/giraph/plugin/GiraphPlugin.java  |   7 +-
 .../operators/GiraphPagaRankOperatorTest.java      |  12 +-
 .../wayang/java/channels/ChannelConversions.java   |   5 +-
 .../wayang/java/channels/CollectionChannel.java    |   5 +-
 .../wayang/java/channels/JavaChannelInstance.java  |   3 +-
 .../apache/wayang/java/channels/StreamChannel.java |   7 +-
 .../wayang/java/compiler/FunctionCompiler.java     |   7 +-
 .../java/execution/JavaExecutionContext.java       |   3 +-
 .../apache/wayang/java/execution/JavaExecutor.java |   7 +-
 .../wayang/java/mapping/CartesianMapping.java      |   5 +-
 .../apache/wayang/java/mapping/CoGroupMapping.java |   5 +-
 .../java/mapping/CollectionSourceMapping.java      |   5 +-
 .../apache/wayang/java/mapping/CountMapping.java   |   5 +-
 .../wayang/java/mapping/DistinctMapping.java       |   5 +-
 .../apache/wayang/java/mapping/DoWhileMapping.java |   5 +-
 .../apache/wayang/java/mapping/FilterMapping.java  |   5 +-
 .../apache/wayang/java/mapping/FlatMapMapping.java |   5 +-
 .../mapping/GlobalMaterializedGroupMapping.java    |   5 +-
 .../wayang/java/mapping/GlobalReduceMapping.java   |   5 +-
 .../wayang/java/mapping/IntersectMapping.java      |   5 +-
 .../apache/wayang/java/mapping/JoinMapping.java    |   5 +-
 .../java/mapping/LocalCallbackSinkMapping.java     |   5 +-
 .../apache/wayang/java/mapping/LoopMapping.java    |   5 +-
 .../org/apache/wayang/java/mapping/MapMapping.java |   5 +-
 .../wayang/java/mapping/MapPartitionsMapping.java  |   5 +-
 .../org/apache/wayang/java/mapping/Mappings.java   |   7 +-
 .../java/mapping/MaterializedGroupByMapping.java   |   5 +-
 ...sectMapping.java => ObjectFileSinkMapping.java} |  19 +-
 ...llMapping.java => ObjectFileSourceMapping.java} |  24 +-
 .../wayang/java/mapping/ReduceByMapping.java       |   5 +-
 .../apache/wayang/java/mapping/RepeatMapping.java  |   5 +-
 .../apache/wayang/java/mapping/SampleMapping.java  |   5 +-
 .../apache/wayang/java/mapping/SortMapping.java    |   5 +-
 .../wayang/java/mapping/TextFileSinkMapping.java   |   5 +-
 .../wayang/java/mapping/TextFileSourceMapping.java |   5 +-
 .../wayang/java/mapping/UnionAllMapping.java       |   5 +-
 .../wayang/java/mapping/ZipWithIdMapping.java      |   5 +-
 .../wayang/java/mapping/graph/PageRankMapping.java |   5 +-
 .../java/operators/JavaCartesianOperator.java      |  15 +-
 .../wayang/java/operators/JavaCoGroupOperator.java |  21 +-
 .../wayang/java/operators/JavaCollectOperator.java |  11 +-
 .../java/operators/JavaCollectionSource.java       |   7 +-
 .../wayang/java/operators/JavaCountOperator.java   |   9 +-
 .../java/operators/JavaDistinctOperator.java       |   9 +-
 .../wayang/java/operators/JavaDoWhileOperator.java |  13 +-
 .../java/operators/JavaExecutionOperator.java      |   5 +-
 .../wayang/java/operators/JavaFilterOperator.java  |  13 +-
 .../wayang/java/operators/JavaFlatMapOperator.java |  19 +-
 .../JavaGlobalMaterializedGroupOperator.java       |   9 +-
 .../java/operators/JavaGlobalReduceOperator.java   |  13 +-
 .../java/operators/JavaIntersectOperator.java      |  17 +-
 .../wayang/java/operators/JavaJoinOperator.java    |  21 +-
 .../java/operators/JavaLocalCallbackSink.java      |  11 +-
 .../wayang/java/operators/JavaLoopOperator.java    |  13 +-
 .../wayang/java/operators/JavaMapOperator.java     |  13 +-
 .../java/operators/JavaMapPartitionsOperator.java  |  19 +-
 .../operators/JavaMaterializedGroupByOperator.java |  17 +-
 .../wayang/java/operators/JavaObjectFileSink.java  |  49 +--
 .../java/operators/JavaObjectFileSource.java       |  47 ++-
 .../java/operators/JavaRandomSampleOperator.java   |  19 +-
 .../java/operators/JavaReduceByOperator.java       |  29 +-
 .../wayang/java/operators/JavaRepeatOperator.java  |   9 +-
 .../operators/JavaReservoirSampleOperator.java     |  21 +-
 .../wayang/java/operators/JavaSortOperator.java    |  11 +-
 .../wayang/java/operators/JavaTextFileSink.java    |  19 +-
 .../wayang/java/operators/JavaTextFileSource.java  |  19 +-
 .../wayang/java/operators/JavaTsvFileSink.java     |  17 +-
 .../wayang/java/operators/JavaTsvFileSource.java   |  20 +-
 .../java/operators/JavaUnionAllOperator.java       |  11 +-
 .../java/operators/graph/JavaPageRankOperator.java |  12 +-
 .../apache/wayang/java/plugin/JavaBasicPlugin.java |   5 +-
 .../java/plugin/JavaChannelConversionPlugin.java   |   5 +-
 .../apache/wayang/java/plugin/JavaGraphPlugin.java |   5 +-
 .../wayang/java/execution/JavaExecutorTest.java    |  11 +-
 .../java/operators/JavaCartesianOperatorTest.java  |  11 +-
 .../java/operators/JavaCoGroupOperatorTest.java    |  17 +-
 .../java/operators/JavaCollectionSourceTest.java   |   9 +-
 .../java/operators/JavaCountOperatorTest.java      |   9 +-
 .../java/operators/JavaDistinctOperatorTest.java   |   9 +-
 .../operators/JavaExecutionOperatorTestBase.java   |  13 +-
 .../java/operators/JavaFilterOperatorTest.java     |  11 +-
 .../JavaGlobalMaterializedGroupOperatorTest.java   |  11 +-
 .../operators/JavaGlobalReduceOperatorTest.java    |  13 +-
 .../java/operators/JavaJoinOperatorTest.java       |  15 +-
 .../java/operators/JavaLocalCallbackSinkTest.java  |   9 +-
 .../JavaMaterializedGroupByOperatorTest.java       |  15 +-
 .../java/operators/JavaObjectFileSinkTest.java     |  11 +-
 .../java/operators/JavaObjectFileSourceTest.java   |  13 +-
 .../operators/JavaRandomSampleOperatorTest.java    |   9 +-
 .../java/operators/JavaReduceByOperatorTest.java   |  13 +-
 .../operators/JavaReservoirSampleOperatorTest.java |   9 +-
 .../java/operators/JavaSortOperatorTest.java       |  11 +-
 .../java/operators/JavaTextFileSinkTest.java       |  35 +-
 .../java/operators/JavaUnionAllOperatorTest.java   |   9 +-
 .../apache/wayang/java/test/ChannelFactory.java    |  11 +-
 .../wayang/jdbc/channels/SqlQueryChannel.java      |   3 +-
 .../wayang/jdbc/execution/DatabaseDescriptor.java  |   3 +-
 .../apache/wayang/jdbc/execution/JdbcExecutor.java |  27 +-
 .../jdbc/operators/JdbcExecutionOperator.java      |   7 +-
 .../wayang/jdbc/operators/JdbcFilterOperator.java  |   5 +-
 .../jdbc/operators/JdbcProjectionOperator.java     |   5 +-
 .../wayang/jdbc/operators/JdbcTableSource.java     |   9 +-
 .../wayang/jdbc/operators/SqlToStreamOperator.java |  31 +-
 .../wayang/jdbc/platform/JdbcPlatformTemplate.java |   3 +-
 .../wayang/jdbc/execution/JdbcExecutorTest.java    |  15 +-
 .../wayang/jdbc/operators/JdbcTableSourceTest.java |  17 +-
 .../wayang/jdbc/operators/OperatorTestBase.java    |   8 +-
 .../jdbc/operators/SqlToStreamOperatorTest.java    |  23 +-
 .../wayang/jdbc/test/HsqldbFilterOperator.java     |   3 +-
 .../wayang/jdbc/test/HsqldbProjectionOperator.java |   3 +-
 .../apache/wayang/jdbc/test/HsqldbTableSource.java |   3 +-
 .../postgres/channels/ChannelConversions.java      |   5 +-
 .../wayang/postgres/mapping/FilterMapping.java     |   5 +-
 .../apache/wayang/postgres/mapping/Mappings.java   |   3 +-
 .../wayang/postgres/mapping/ProjectionMapping.java |   5 +-
 .../postgres/operators/PostgresTableSource.java    |   3 +-
 .../postgres/plugin/PostgresConversionsPlugin.java |   7 +-
 .../wayang/postgres/plugin/PostgresPlugin.java     |   5 +-
 wayang-platforms/wayang-spark/pom.xml              |  12 +-
 .../wayang/spark/channels/ChannelConversions.java  |   5 +-
 .../apache/wayang/spark/channels/RddChannel.java   |  10 +-
 .../spark/compiler/BinaryOperatorAdapter.java      |   3 +-
 .../compiler/ExtendedFlatMapFunctionAdapter.java   |   3 +-
 .../ExtendedMapPartitionsFunctionAdapter.java      |   9 +-
 .../spark/compiler/FlatMapFunctionAdapter.java     |   3 +-
 .../wayang/spark/compiler/FunctionCompiler.java    |   7 +-
 .../compiler/MapPartitionsFunctionAdapter.java     |   5 +-
 .../wayang/spark/compiler/PredicateAdapter.java    |   3 +-
 .../spark/execution/SparkExecutionContext.java     |   9 +-
 .../wayang/spark/execution/SparkExecutor.java      |   7 +-
 .../wayang/spark/mapping/CartesianMapping.java     |   5 +-
 .../wayang/spark/mapping/CoGroupMapping.java       |   5 +-
 .../spark/mapping/CollectionSourceMapping.java     |   5 +-
 .../apache/wayang/spark/mapping/CountMapping.java  |   5 +-
 .../wayang/spark/mapping/DistinctMapping.java      |   5 +-
 .../wayang/spark/mapping/DoWhileMapping.java       |   5 +-
 .../apache/wayang/spark/mapping/FilterMapping.java |   5 +-
 .../wayang/spark/mapping/FlatMapMapping.java       |   5 +-
 .../mapping/GlobalMaterializedGroupMapping.java    |   5 +-
 .../wayang/spark/mapping/GlobalReduceMapping.java  |   5 +-
 .../wayang/spark/mapping/IntersectMapping.java     |   5 +-
 .../apache/wayang/spark/mapping/JoinMapping.java   |   5 +-
 .../spark/mapping/LocalCallbackSinkMapping.java    |   5 +-
 .../apache/wayang/spark/mapping/LoopMapping.java   |   5 +-
 .../apache/wayang/spark/mapping/MapMapping.java    |   5 +-
 .../wayang/spark/mapping/MapPartitionsMapping.java |   5 +-
 .../org/apache/wayang/spark/mapping/Mappings.java  |   7 +-
 .../spark/mapping/MaterializedGroupByMapping.java  |   5 +-
 ...sectMapping.java => ObjectFileSinkMapping.java} |  24 +-
 ...anMapping.java => ObjectFileSourceMapping.java} |  24 +-
 .../wayang/spark/mapping/ReduceByMapping.java      |   5 +-
 .../apache/wayang/spark/mapping/RepeatMapping.java |   5 +-
 .../apache/wayang/spark/mapping/SampleMapping.java |   5 +-
 .../apache/wayang/spark/mapping/SortMapping.java   |   5 +-
 .../wayang/spark/mapping/TextFileSinkMapping.java  |   5 +-
 .../spark/mapping/TextFileSourceMapping.java       |   5 +-
 .../wayang/spark/mapping/UnionAllMapping.java      |   5 +-
 .../wayang/spark/mapping/ZipWithIdMapping.java     |   5 +-
 .../spark/mapping/graph/PageRankMapping.java       |   7 +-
 .../operators/SparkBernoulliSampleOperator.java    |  13 +-
 .../spark/operators/SparkBroadcastOperator.java    |   7 +-
 .../wayang/spark/operators/SparkCacheOperator.java |   9 +-
 .../spark/operators/SparkCartesianOperator.java    |   9 +-
 .../spark/operators/SparkCoGroupOperator.java      |   9 +-
 .../spark/operators/SparkCollectOperator.java      |  11 +-
 .../spark/operators/SparkCollectionSource.java     |  11 +-
 .../wayang/spark/operators/SparkCountOperator.java |   9 +-
 .../spark/operators/SparkDistinctOperator.java     |   9 +-
 .../spark/operators/SparkDoWhileOperator.java      |  11 +-
 .../spark/operators/SparkExecutionOperator.java    |   3 +-
 .../spark/operators/SparkFilterOperator.java       |  11 +-
 .../spark/operators/SparkFlatMapOperator.java      |  11 +-
 .../SparkGlobalMaterializedGroupOperator.java      |  13 +-
 .../spark/operators/SparkGlobalReduceOperator.java |  11 +-
 .../spark/operators/SparkIntersectOperator.java    |   9 +-
 .../wayang/spark/operators/SparkJoinOperator.java  |  11 +-
 .../spark/operators/SparkLocalCallbackSink.java    |  11 +-
 .../wayang/spark/operators/SparkLoopOperator.java  |  11 +-
 .../wayang/spark/operators/SparkMapOperator.java   |  11 +-
 .../operators/SparkMapPartitionsOperator.java      |  13 +-
 .../SparkMaterializedGroupByOperator.java          |  11 +-
 .../spark/operators/SparkObjectFileSink.java       |  32 +-
 .../spark/operators/SparkObjectFileSource.java     |  28 +-
 .../SparkRandomPartitionSampleOperator.java        |  31 +-
 .../spark/operators/SparkReduceByOperator.java     |  11 +-
 .../spark/operators/SparkRepeatOperator.java       |   9 +-
 .../SparkShufflePartitionSampleOperator.java       |  19 +-
 .../wayang/spark/operators/SparkSortOperator.java  |   9 +-
 .../wayang/spark/operators/SparkTextFileSink.java  |   9 +-
 .../spark/operators/SparkTextFileSource.java       |   9 +-
 .../wayang/spark/operators/SparkTsvFileSink.java   |   9 +-
 .../wayang/spark/operators/SparkTsvFileSource.java |   7 +-
 .../spark/operators/SparkUnionAllOperator.java     |   9 +-
 .../spark/operators/SparkZipWithIdOperator.java    |   9 +-
 .../wayang/spark/platform/SparkPlatform.java       |   9 +-
 .../wayang/spark/plugin/SparkBasicPlugin.java      |   5 +-
 .../wayang/spark/plugin/SparkConversionPlugin.java |   7 +-
 .../wayang/spark/plugin/SparkGraphPlugin.java      |   5 +-
 .../resources/wayang-spark-defaults.properties     |   1 +
 .../SparkBernoulliSampleOperatorTest.java          |  11 +-
 .../operators/SparkCartesianOperatorTest.java      |   9 +-
 .../spark/operators/SparkCoGroupOperatorTest.java  |  19 +-
 .../spark/operators/SparkCollectionSourceTest.java |  11 +-
 .../spark/operators/SparkCountOperatorTest.java    |   9 +-
 .../spark/operators/SparkDistinctOperatorTest.java |   9 +-
 .../spark/operators/SparkFilterOperatorTest.java   |   9 +-
 .../spark/operators/SparkFlatMapOperatorTest.java  |   9 +-
 .../SparkGlobalMaterializedGroupOperatorTest.java  |  11 +-
 .../operators/SparkGlobalReduceOperatorTest.java   |  13 +-
 .../spark/operators/SparkJoinOperatorTest.java     |   9 +-
 .../operators/SparkMapPartitionsOperatorTest.java  |  11 +-
 .../SparkMaterializedGroupByOperatorTest.java      |  17 +-
 .../spark/operators/SparkObjectFileSinkTest.java   |  13 +-
 .../spark/operators/SparkObjectFileSourceTest.java |  15 +-
 .../spark/operators/SparkOperatorTestBase.java     |  14 +-
 .../SparkRandomPartitionSampleOperatorTest.java    |   9 +-
 .../spark/operators/SparkReduceByOperatorTest.java |  15 +-
 .../SparkShufflePartitionSampleOperatorTest.java   |   9 +-
 .../spark/operators/SparkSortOperatorTest.java     |   9 +-
 .../spark/operators/SparkTextFileSinkTest.java     |   9 +-
 .../spark/operators/SparkUnionAllOperatorTest.java |   9 +-
 .../apache/wayang/spark/test/ChannelFactory.java   |   9 +-
 .../sqlite3/channels/ChannelConversions.java       |   5 +-
 .../wayang/sqlite3/mapping/FilterMapping.java      |   5 +-
 .../apache/wayang/sqlite3/mapping/Mappings.java    |   3 +-
 .../wayang/sqlite3/mapping/ProjectionMapping.java  |   5 +-
 .../sqlite3/operators/Sqlite3TableSource.java      |   3 +-
 .../sqlite3/plugin/Sqlite3ConversionPlugin.java    |   7 +-
 .../wayang/sqlite3/plugin/Sqlite3Plugin.java       |   5 +-
 wayang-plugins/wayang-iejoin/pom.xml               |   1 -
 .../main/java/org/apache/wayang/iejoin/IEJoin.java |   9 +-
 .../org/apache/wayang/iejoin/mapping/Mappings.java |   5 +-
 .../wayang/iejoin/mapping/java/IEJoinMapping.java  |   5 +-
 .../iejoin/mapping/java/IESelfJoinMapping.java     |   5 +-
 .../wayang/iejoin/mapping/spark/IEJoinMapping.java |   5 +-
 .../iejoin/mapping/spark/IESelfJoinMapping.java    |   5 +-
 .../iejoin/operators/JavaIEJoinOperator.java       |  17 +-
 .../iejoin/operators/JavaIESelfJoinOperator.java   |  17 +-
 .../iejoin/operators/SparkIEJoinOperator.java      |  13 +-
 .../iejoin/operators/SparkIESelfJoinOperator.java  |  13 +-
 .../iejoin/operators/java_helpers/BitSetJoin.java  |   5 +-
 .../operators/java_helpers/DataComparator.java     |   5 +-
 .../iejoin/operators/java_helpers/extractData.java |   3 +-
 .../iejoin/operators/java_helpers/myMergeSort.java |   5 +-
 .../operators/java_helpers/revDataComparator.java  |   5 +-
 .../iejoin/operators/spark_helpers/BitSetJoin.java |   7 +-
 .../spark_helpers/List2AttributesObjectSkinny.java |   3 +-
 .../operators/spark_helpers/addUniqueID.java       |   5 +-
 .../operators/spark_helpers/build2ListObject.java  |   7 +-
 .../operators/spark_helpers/myMergeSort.java       |   3 +-
 .../operators/spark_helpers/revDataComparator.java |   3 +-
 .../operators/JavaExecutionOperatorTestBase.java   |  13 +-
 .../iejoin/operators/JavaIEJoinOperatorTest.java   |  13 +-
 .../iejoin/operators/SparkIEJoinOperatorTest.java  |   9 +-
 .../iejoin/operators/SparkIEJoinOperatorTest2.java |   9 +-
 .../iejoin/operators/SparkIEJoinOperatorTest3.java |   9 +-
 .../iejoin/operators/SparkIEJoinOperatorTest4.java |   9 +-
 .../operators/SparkIESelfJoinOperatorTest.java     |   9 +-
 .../iejoin/operators/SparkOperatorTestBase.java    |  11 +-
 .../apache/wayang/iejoin/test/ChannelFactory.java  |  11 +-
 wayang-profiler/pom.xml                            |   3 +-
 .../wayang/profiler/data/DataGenerators.java       |   3 +-
 .../wayang/profiler/hardware/DiskProfiler.java     |  11 +-
 .../profiler/java/BinaryOperatorProfiler.java      |   7 +-
 .../java/JavaCollectionSourceProfiler.java         |   5 +-
 .../profiler/java/JavaTextFileSourceProfiler.java  |   3 +-
 .../wayang/profiler/java/OperatorProfiler.java     |  17 +-
 .../wayang/profiler/java/OperatorProfilers.java    |  13 +-
 .../org/apache/wayang/profiler/java/Profiler.java  |  15 +-
 .../apache/wayang/profiler/java/SinkProfiler.java  |   7 +-
 .../wayang/profiler/java/SourceProfiler.java       |   6 +-
 .../profiler/java/UnaryOperatorProfiler.java       |   7 +-
 .../profiler/log/DynamicEstimationContext.java     |   3 +-
 .../wayang/profiler/log/DynamicLoadEstimator.java  |  13 +-
 .../profiler/log/DynamicLoadProfileEstimator.java  |   7 +-
 .../profiler/log/DynamicLoadProfileEstimators.java |  31 +-
 .../wayang/profiler/log/GeneticOptimizer.java      |  15 +-
 .../wayang/profiler/log/GeneticOptimizerApp.java   |  39 +--
 .../org/apache/wayang/profiler/log/Individual.java |  11 +-
 .../apache/wayang/profiler/log/LogEvaluator.java   |  23 +-
 .../wayang/profiler/log/OptimizationSpace.java     |   3 +-
 .../profiler/spark/BinaryOperatorProfiler.java     |   3 +-
 .../org/apache/wayang/profiler/spark/Main.java     |  15 +-
 .../wayang/profiler/spark/OperatorProfilers.java   |   7 +-
 .../apache/wayang/profiler/spark/SinkProfiler.java |   3 +-
 .../spark/SparkCollectionSourceProfiler.java       |   5 +-
 .../profiler/spark/SparkOperatorProfiler.java      |  19 +-
 .../wayang/profiler/spark/SparkSourceProfiler.java |   3 +-
 .../spark/SparkTextFileSourceProfiler.java         |   9 +-
 .../profiler/spark/SparkUnaryOperatorProfiler.java |   3 +-
 .../wayang/profiler/util/ProfilingUtils.java       |   2 +-
 .../apache/wayang/profiler/util/RrdAccessor.java   |   9 +-
 wayang-tests-integration/pom.xml                   |   5 +-
 .../apache/wayang/tests/FlinkIntegrationIT.java    |  25 +-
 .../org/apache/wayang/tests/FullIntegrationIT.java |  41 ++-
 .../apache/wayang/tests/GiraphIntegrationIT.java   |  15 +-
 .../org/apache/wayang/tests/JavaIntegrationIT.java |  33 +-
 .../apache/wayang/tests/PostgresIntegrationIT.java |  11 +-
 .../java/org/apache/wayang/tests/RegressionIT.java |   9 +-
 .../apache/wayang/tests/SparkIntegrationIT.java    |  33 +-
 .../java/org/apache/wayang/tests/WayangPlans.java  |  27 +-
 .../apache/wayang/tests/WayangPlansOperators.java  |   9 +-
 .../java/org/apache/wayang/tests/WordCountIT.java  |  25 +-
 .../wayang/tests/platform/MyMadeUpPlatform.java    |   9 +-
 677 files changed, 4972 insertions(+), 3331 deletions(-)
 create mode 100644 RELEASE_NOTES
 create mode 100644 wayang-benchmark/src/main/java/org/apache/wayang/apps/terasort/Random16.java
 create mode 100644 wayang-benchmark/src/main/java/org/apache/wayang/apps/terasort/Unsigned16.java
 create mode 100644 wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraApp.scala
 create mode 100644 wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraGen.scala
 create mode 100644 wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraSort.scala
 create mode 100644 wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraValidate.scala
 create mode 100644 wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ObjectFileSink.java
 copy wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/{TextFileSource.java => ObjectFileSource.java} (63%)
 create mode 100644 wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/json/JSONArray.java
 create mode 100644 wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/json/JSONObject.java
 create mode 100644 wayang-docs/src/main/resources/how_contribute/preparing_releases.md
 copy wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/{IntersectMapping.java => ObjectFileSinkMapping.java} (75%)
 copy wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/{CollectionSourceMapping.java => ObjectFileSourceMapping.java} (77%)
 copy wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/{IntersectMapping.java => ObjectFileSinkMapping.java} (78%)
 copy wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/{UnionAllMapping.java => ObjectFileSourceMapping.java} (75%)
 copy wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/{IntersectMapping.java => ObjectFileSinkMapping.java} (75%)
 copy wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/{CartesianMapping.java => ObjectFileSourceMapping.java} (75%)

[incubator-wayang] 02/11: [WAYANG-34] add the ObjectFileSink to Platform Spark and Flink

Posted by be...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bertty pushed a commit to branch WAYANG-34
in repository https://gitbox.apache.org/repos/asf/incubator-wayang.git

commit a472d3a9a6ecb2f1047eeffc81c20ee225bc9f1c
Author: Bertty Contreras-Rojas <be...@scalytics.io>
AuthorDate: Mon Sep 27 12:47:30 2021 +0200

    [WAYANG-34] add the ObjectFileSink to Platform Spark and Flink
    
    Signed-off-by: bertty <be...@gmail.com>
---
 .../org/apache/wayang/flink/mapping/Mappings.java  |  1 +
 .../flink/mapping/ObjectFileSinkMapping.java       | 64 +++++++++++++++++++++
 .../flink/operators/FlinkObjectFileSink.java       | 27 +++++----
 .../wayang/java/operators/JavaObjectFileSink.java  |  3 +-
 .../org/apache/wayang/spark/mapping/Mappings.java  |  1 +
 .../spark/mapping/ObjectFileSinkMapping.java       | 66 ++++++++++++++++++++++
 .../spark/operators/SparkObjectFileSink.java       | 22 +++++---
 7 files changed, 166 insertions(+), 18 deletions(-)

diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/Mappings.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/Mappings.java
index 2406544..3a89d6c 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/Mappings.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/Mappings.java
@@ -53,6 +53,7 @@ public class Mappings {
             new SampleMapping(),
             new SortMapping(),
             new TextFileSinkMapping(),
+            new ObjectFileSinkMapping(),
             new TextFileSourceMapping(),
             new UnionAllMapping(),
             new ZipWithIdMapping()
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ObjectFileSinkMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ObjectFileSinkMapping.java
new file mode 100644
index 0000000..1008119
--- /dev/null
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ObjectFileSinkMapping.java
@@ -0,0 +1,64 @@
+/*
+ * 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.wayang.flink.mapping;
+
+import java.util.Collection;
+import java.util.Collections;
+import org.apache.wayang.basic.operators.ObjectFileSink;
+import org.apache.wayang.core.mapping.Mapping;
+import org.apache.wayang.core.mapping.OperatorPattern;
+import org.apache.wayang.core.mapping.PlanTransformation;
+import org.apache.wayang.core.mapping.ReplacementSubplanFactory;
+import org.apache.wayang.core.mapping.SubplanPattern;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.flink.operators.FlinkObjectFileSink;
+import org.apache.wayang.flink.platform.FlinkPlatform;
+
+/**
+ * Mapping from {@link ObjectFileSink} to {@link FlinkObjectFileSink}.
+ */
+public class ObjectFileSinkMapping implements Mapping {
+
+    @Override
+    public Collection<PlanTransformation> getTransformations() {
+        return Collections.singleton(new PlanTransformation(
+                this.createSubplanPattern(),
+                this.createReplacementSubplanFactory(),
+                FlinkPlatform.getInstance()
+        ));
+    }
+
+    private SubplanPattern createSubplanPattern() {
+        final OperatorPattern operatorPattern = new OperatorPattern<>(
+                "sink",
+                new ObjectFileSink<>(
+                    null,
+                    DataSetType.none().getDataUnitType().getTypeClass()
+                ),
+                false
+        );
+        return SubplanPattern.createSingleton(operatorPattern);
+    }
+
+    private ReplacementSubplanFactory createReplacementSubplanFactory() {
+        return new ReplacementSubplanFactory.OfSingleOperators<ObjectFileSink<?>>(
+                (matchedOperator, epoch) -> new FlinkObjectFileSink<>(matchedOperator).at(epoch)
+        );
+    }
+}
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkObjectFileSink.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkObjectFileSink.java
index 9130a97..6e29ed7 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkObjectFileSink.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkObjectFileSink.java
@@ -21,6 +21,7 @@ package org.apache.wayang.flink.operators;
 import org.apache.flink.api.java.operators.DataSink;
 import org.apache.flink.core.fs.FileSystem;
 import org.apache.wayang.basic.channels.FileChannel;
+import org.apache.wayang.basic.operators.ObjectFileSink;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.plan.wayangplan.Operator;
@@ -44,18 +45,18 @@ import java.util.List;
  *
  * @see FlinkObjectFileSink
  */
-public class FlinkObjectFileSink<Type> extends UnarySink<Type> implements FlinkExecutionOperator {
-
-    private final String targetPath;
+public class FlinkObjectFileSink<Type> extends ObjectFileSink<Type> implements FlinkExecutionOperator {
 
+    public FlinkObjectFileSink(ObjectFileSink<Type> that) {
+        super(that);
+    }
 
     public FlinkObjectFileSink(DataSetType<Type> type) {
         this(null, type);
     }
 
     public FlinkObjectFileSink(String targetPath, DataSetType<Type> type) {
-        super(type);
-        this.targetPath = targetPath;
+        super(targetPath, type);
     }
 
     @Override
@@ -68,10 +69,16 @@ public class FlinkObjectFileSink<Type> extends UnarySink<Type> implements FlinkE
 
         assert inputs.length == this.getNumInputs();
         assert outputs.length <= 1;
-
-        final FileChannel.Instance output = (FileChannel.Instance) outputs[0];
-        final String targetPath = output.addGivenOrTempPath(this.targetPath, flinkExecutor.getConfiguration());
-
+        final FileChannel.Instance output;
+        final String targetPath;
+        if(outputs.length == 1) {
+            output = (FileChannel.Instance) outputs[0];
+            targetPath = output.addGivenOrTempPath(this.textFileUrl, flinkExecutor.getConfiguration());
+        }else{
+            targetPath = this.textFileUrl;
+        }
+
+        //TODO: remove the set parallelism 1
         DataSetChannel.Instance input = (DataSetChannel.Instance) inputs[0];
         final DataSink<Type> tDataSink = input.<Type>provideDataSet()
                 .write(new WayangFileOutputFormat<Type>(targetPath), targetPath, FileSystem.WriteMode.OVERWRITE)
@@ -83,7 +90,7 @@ public class FlinkObjectFileSink<Type> extends UnarySink<Type> implements FlinkE
 
     @Override
     protected ExecutionOperator createCopy() {
-        return new FlinkObjectFileSink<>(targetPath, this.getType());
+        return new FlinkObjectFileSink<>(this.textFileUrl, this.getType());
     }
 
     @Override
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaObjectFileSink.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaObjectFileSink.java
index 060efcf..8fbd470 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaObjectFileSink.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaObjectFileSink.java
@@ -83,8 +83,9 @@ public class JavaObjectFileSink<T> extends ObjectFileSink<T> implements JavaExec
 
         // Prepare Hadoop's SequenceFile.Writer.
         final String path;
+        FileChannel.Instance output;
         if(outputs.length == 1) {
-            FileChannel.Instance output = (FileChannel.Instance) outputs[0];
+            output = (FileChannel.Instance) outputs[0];
             path = output.addGivenOrTempPath(this.textFileUrl,
                 javaExecutor.getCompiler().getConfiguration());
         }else{
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/Mappings.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/Mappings.java
index 70ec802..5618e78 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/Mappings.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/Mappings.java
@@ -32,6 +32,7 @@ public class Mappings {
     public static Collection<Mapping> BASIC_MAPPINGS = Arrays.asList(
             new TextFileSourceMapping(),
             new TextFileSinkMapping(),
+            new ObjectFileSinkMapping(),
             new MapMapping(),
             new MapPartitionsMapping(),
             new ReduceByMapping(),
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/ObjectFileSinkMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/ObjectFileSinkMapping.java
new file mode 100644
index 0000000..bd6bed6
--- /dev/null
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/ObjectFileSinkMapping.java
@@ -0,0 +1,66 @@
+/*
+ * 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.wayang.spark.mapping;
+
+import java.util.Collection;
+import java.util.Collections;
+import org.apache.wayang.basic.operators.ObjectFileSink;
+import org.apache.wayang.core.mapping.Mapping;
+import org.apache.wayang.core.mapping.OperatorPattern;
+import org.apache.wayang.core.mapping.PlanTransformation;
+import org.apache.wayang.core.mapping.ReplacementSubplanFactory;
+import org.apache.wayang.core.mapping.SubplanPattern;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.java.operators.JavaObjectFileSink;
+import org.apache.wayang.java.platform.JavaPlatform;
+import org.apache.wayang.spark.operators.SparkObjectFileSink;
+import org.apache.wayang.spark.platform.SparkPlatform;
+
+/**
+ * Mapping from {@link ObjectFileSink} to {@link SparkObjectFileSink}.
+ */
+public class ObjectFileSinkMapping implements Mapping {
+
+    @Override
+    public Collection<PlanTransformation> getTransformations() {
+        return Collections.singleton(new PlanTransformation(
+                this.createSubplanPattern(),
+                this.createReplacementSubplanFactory(),
+                SparkPlatform.getInstance()
+        ));
+    }
+
+    private SubplanPattern createSubplanPattern() {
+        final OperatorPattern operatorPattern = new OperatorPattern<>(
+            "sink",
+            new ObjectFileSink<>(
+                null,
+                DataSetType.none().getDataUnitType().getTypeClass()
+            ),
+            false
+        );
+        return SubplanPattern.createSingleton(operatorPattern);
+    }
+
+    private ReplacementSubplanFactory createReplacementSubplanFactory() {
+        return new ReplacementSubplanFactory.OfSingleOperators<ObjectFileSink<?>>(
+                (matchedOperator, epoch) -> new SparkObjectFileSink<>(matchedOperator).at(epoch)
+        );
+    }
+}
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkObjectFileSink.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkObjectFileSink.java
index 7115500..1afc9b6 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkObjectFileSink.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkObjectFileSink.java
@@ -19,6 +19,7 @@
 package org.apache.wayang.spark.operators;
 
 import org.apache.wayang.basic.channels.FileChannel;
+import org.apache.wayang.basic.operators.ObjectFileSink;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.plan.wayangplan.Operator;
@@ -42,17 +43,18 @@ import java.util.List;
  *
  * @see SparkObjectFileSource
  */
-public class SparkObjectFileSink<T> extends UnarySink<T> implements SparkExecutionOperator {
+public class SparkObjectFileSink<T> extends ObjectFileSink<T> implements SparkExecutionOperator {
 
-    private final String targetPath;
+    public SparkObjectFileSink(ObjectFileSink<T> that) {
+        super(that);
+    }
 
     public SparkObjectFileSink(DataSetType<T> type) {
         this(null, type);
     }
 
     public SparkObjectFileSink(String targetPath, DataSetType<T> type) {
-        super(type);
-        this.targetPath = targetPath;
+        super(targetPath, type);
     }
 
     @Override
@@ -64,8 +66,14 @@ public class SparkObjectFileSink<T> extends UnarySink<T> implements SparkExecuti
         assert inputs.length == this.getNumInputs();
         assert outputs.length <= 1;
 
-        final FileChannel.Instance output = (FileChannel.Instance) outputs[0];
-        final String targetPath = output.addGivenOrTempPath(this.targetPath, sparkExecutor.getConfiguration());
+        final String targetPath;
+        if(outputs.length > 0) {
+            final FileChannel.Instance output = (FileChannel.Instance) outputs[0];
+            targetPath = output.addGivenOrTempPath(this.textFileUrl, sparkExecutor.getConfiguration());
+        }else{
+            targetPath = this.textFileUrl;
+        }
+
         RddChannel.Instance input = (RddChannel.Instance) inputs[0];
 
         input.provideRdd()
@@ -78,7 +86,7 @@ public class SparkObjectFileSink<T> extends UnarySink<T> implements SparkExecuti
 
     @Override
     protected ExecutionOperator createCopy() {
-        return new SparkObjectFileSink<>(targetPath, this.getType());
+        return new SparkObjectFileSink<>(this.textFileUrl, this.getType());
     }
 
     @Override

[incubator-wayang] 11/11: [WAYANG-34] Correction activation of scala-12 profile

Posted by be...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bertty pushed a commit to branch WAYANG-34
in repository https://gitbox.apache.org/repos/asf/incubator-wayang.git

commit 12c59d4e360414e7a3efabaf4bc84c22554dd28f
Author: Bertty Contreras-Rojas <be...@scalytics.io>
AuthorDate: Mon Sep 27 17:08:20 2021 +0200

    [WAYANG-34] Correction activation of scala-12 profile
    
    Signed-off-by: bertty <be...@gmail.com>
---
 pom.xml | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/pom.xml b/pom.xml
index fad1193..93194fa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -583,6 +583,9 @@
 
         <profile>
             <id>scala-12</id>
+            <activation>
+                <jdk>11</jdk>
+            </activation>
             <properties>
                 <scala.version>2.12.12</scala.version>
                 <scala.mayor.version>2.12</scala.mayor.version>

[incubator-wayang] 01/11: [WAYANG-34] add the ObjectFileSink to the basic

Posted by be...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bertty pushed a commit to branch WAYANG-34
in repository https://gitbox.apache.org/repos/asf/incubator-wayang.git

commit 21195747740a3c3893e56370746efe7fe2179f91
Author: Bertty Contreras-Rojas <be...@scalytics.io>
AuthorDate: Fri Sep 24 23:39:27 2021 +0200

    [WAYANG-34] add the ObjectFileSink to the basic
    
    Signed-off-by: bertty <be...@gmail.com>
---
 .../scala/org/apache/wayang/api/DataQuanta.scala   | 28 ++++++++++
 .../wayang/basic/operators/ObjectFileSink.java     | 55 +++++++++++++++++++
 .../org/apache/wayang/java/mapping/Mappings.java   |  1 +
 .../wayang/java/mapping/ObjectFileSinkMapping.java | 61 ++++++++++++++++++++++
 .../wayang/java/operators/JavaObjectFileSink.java  | 27 +++++++---
 5 files changed, 164 insertions(+), 8 deletions(-)

diff --git a/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/DataQuanta.scala b/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/DataQuanta.scala
index ed1f426..c977576 100644
--- a/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/DataQuanta.scala
+++ b/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/DataQuanta.scala
@@ -796,6 +796,34 @@ class DataQuanta[Out: ClassTag](val operator: ElementaryOperator, outputIndex: I
   }
 
   /**
+   * Write the data quanta in this instance to a Object file. Triggers execution.
+   *
+   * @param url          URL to the text file
+   */
+  def writeObjectFile(url: String)(implicit classTag: ClassTag[Out]): Unit = {
+    writeObjectFileJava(url, classTag)
+  }
+
+  /**
+   * Write the data quanta in this instance to a Object file. Triggers execution.
+   *
+   * @param url          URL to the text file
+   */
+  def writeObjectFileJava(url: String, classTag: ClassTag[Out]): Unit ={
+    val sink = new ObjectFileSink[Out](
+      url,
+      basicDataUnitType(classTag).getTypeClass
+    )
+    sink.setName(s"Write objects to $url")
+    this.connectTo(sink, 0)
+
+    // Do the execution.
+    this.planBuilder.sinks += sink
+    this.planBuilder.buildAndExecute()
+    this.planBuilder.sinks.clear()
+  }
+
+  /**
     * Restrict the producing [[Operator]] to run on certain [[Platform]]s.
     *
     * @param platforms on that the [[Operator]] may be executed
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ObjectFileSink.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ObjectFileSink.java
new file mode 100644
index 0000000..600eedc
--- /dev/null
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ObjectFileSink.java
@@ -0,0 +1,55 @@
+package org.apache.wayang.basic.operators;
+
+import java.util.Objects;
+import org.apache.wayang.core.function.TransformationDescriptor;
+import org.apache.wayang.core.optimizer.costs.DefaultLoadEstimator;
+import org.apache.wayang.core.optimizer.costs.NestableLoadProfileEstimator;
+import org.apache.wayang.core.plan.wayangplan.UnarySink;
+import org.apache.wayang.core.types.DataSetType;
+
+/**
+ * This {@link UnarySink} writes all incoming data quanta to a Object file.
+ *
+ * @param <T> type of the object to store
+ */
+public class ObjectFileSink<T> extends UnarySink<T> {
+
+  protected final String textFileUrl;
+
+  protected final Class<T> tClass;
+
+  /**
+   * Creates a new instance.
+   *
+   * @param targetPath  URL to file that should be written
+   * @param type        {@link DataSetType} of the incoming data quanta
+   */
+  public ObjectFileSink(String targetPath, DataSetType<T> type) {
+    super(type);
+    this.textFileUrl = targetPath;
+    this.tClass = type.getDataUnitType().getTypeClass();
+  }
+
+  /**
+   * Creates a new instance.
+   *
+   * @param textFileUrl        URL to file that should be written
+   * @param typeClass          {@link Class} of incoming data quanta
+   */
+  public ObjectFileSink(String textFileUrl, Class<T> typeClass) {
+    super(DataSetType.createDefault(typeClass));
+    this.textFileUrl = textFileUrl;
+    this.tClass = typeClass;
+  }
+
+  /**
+   * Creates a copied instance.
+   *
+   * @param that should be copied
+   */
+  public ObjectFileSink(ObjectFileSink<T> that) {
+    super(that);
+    this.textFileUrl = that.textFileUrl;
+    this.tClass = that.tClass;
+  }
+}
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/Mappings.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/Mappings.java
index ee9cebc..b2809d6 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/Mappings.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/Mappings.java
@@ -32,6 +32,7 @@ public class Mappings {
     public static Collection<Mapping> BASIC_MAPPINGS = Arrays.asList(
             new TextFileSourceMapping(),
             new TextFileSinkMapping(),
+            new ObjectFileSinkMapping(),
             new MapMapping(),
             new MapPartitionsMapping(),
             new ReduceByMapping(),
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ObjectFileSinkMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ObjectFileSinkMapping.java
new file mode 100644
index 0000000..f2bdf5e
--- /dev/null
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ObjectFileSinkMapping.java
@@ -0,0 +1,61 @@
+/*
+ * 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.wayang.java.mapping;
+
+import java.util.Collection;
+import java.util.Collections;
+import org.apache.wayang.basic.operators.ObjectFileSink;
+import org.apache.wayang.basic.operators.TextFileSink;
+import org.apache.wayang.core.mapping.Mapping;
+import org.apache.wayang.core.mapping.OperatorPattern;
+import org.apache.wayang.core.mapping.PlanTransformation;
+import org.apache.wayang.core.mapping.ReplacementSubplanFactory;
+import org.apache.wayang.core.mapping.SubplanPattern;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.java.operators.JavaObjectFileSink;
+import org.apache.wayang.java.operators.JavaTextFileSink;
+import org.apache.wayang.java.platform.JavaPlatform;
+
+/**
+ * Mapping from {@link ObjectFileSink} to {@link JavaObjectFileSink}.
+ */
+public class ObjectFileSinkMapping implements Mapping {
+
+    @Override
+    public Collection<PlanTransformation> getTransformations() {
+        return Collections.singleton(new PlanTransformation(
+                this.createSubplanPattern(),
+                this.createReplacementSubplanFactory(),
+                JavaPlatform.getInstance()
+        ));
+    }
+
+    private SubplanPattern createSubplanPattern() {
+        final OperatorPattern operatorPattern = new OperatorPattern<>(
+                "sink", new ObjectFileSink<>(null, DataSetType.none().getDataUnitType().getTypeClass()), false
+        );
+        return SubplanPattern.createSingleton(operatorPattern);
+    }
+
+    private ReplacementSubplanFactory createReplacementSubplanFactory() {
+        return new ReplacementSubplanFactory.OfSingleOperators<ObjectFileSink<?>>(
+                (matchedOperator, epoch) -> new JavaObjectFileSink<>(matchedOperator).at(epoch)
+        );
+    }
+}
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaObjectFileSink.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaObjectFileSink.java
index ff45db6..060efcf 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaObjectFileSink.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaObjectFileSink.java
@@ -25,6 +25,8 @@ import org.apache.hadoop.io.BytesWritable;
 import org.apache.hadoop.io.NullWritable;
 import org.apache.hadoop.io.SequenceFile;
 import org.apache.wayang.basic.channels.FileChannel;
+import org.apache.wayang.basic.operators.ObjectFileSink;
+import org.apache.wayang.basic.operators.TextFileSink;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
@@ -57,17 +59,18 @@ import java.util.stream.Stream;
  *
  * @see JavaObjectFileSource
  */
-public class JavaObjectFileSink<T> extends UnarySink<T> implements JavaExecutionOperator {
+public class JavaObjectFileSink<T> extends ObjectFileSink<T> implements JavaExecutionOperator {
 
-    private final String targetPath;
+    public JavaObjectFileSink(ObjectFileSink<T> that) {
+        super(that);
+    }
 
     public JavaObjectFileSink(DataSetType<T> type) {
         this(null, type);
     }
 
     public JavaObjectFileSink(String targetPath, DataSetType<T> type) {
-        super(type);
-        this.targetPath = targetPath;
+        super(targetPath, type);
     }
 
     @Override
@@ -79,9 +82,14 @@ public class JavaObjectFileSink<T> extends UnarySink<T> implements JavaExecution
         assert inputs.length == this.getNumInputs();
 
         // Prepare Hadoop's SequenceFile.Writer.
-        FileChannel.Instance output = (FileChannel.Instance) outputs[0];
-        final String path = output.addGivenOrTempPath(this.targetPath, javaExecutor.getCompiler().getConfiguration());
-
+        final String path;
+        if(outputs.length == 1) {
+            FileChannel.Instance output = (FileChannel.Instance) outputs[0];
+            path = output.addGivenOrTempPath(this.textFileUrl,
+                javaExecutor.getCompiler().getConfiguration());
+        }else{
+            path = this.textFileUrl;
+        }
         final SequenceFile.Writer.Option fileOption = SequenceFile.Writer.file(new Path(path));
         final SequenceFile.Writer.Option keyClassOption = SequenceFile.Writer.keyClass(NullWritable.class);
         final SequenceFile.Writer.Option valueClassOption = SequenceFile.Writer.valueClass(BytesWritable.class);
@@ -90,6 +98,9 @@ public class JavaObjectFileSink<T> extends UnarySink<T> implements JavaExecution
             // Chunk the stream of data quanta and write the chunks into the sequence file.
             StreamChunker streamChunker = new StreamChunker(10, (chunk, size) -> {
                 if (chunk.length != size) {
+                    System.out.println("heer");
+                    System.out.println(chunk.length);
+                    System.out.println(size);
                     chunk = Arrays.copyOfRange(chunk, 0, size);
                 }
                 try {
@@ -119,7 +130,7 @@ public class JavaObjectFileSink<T> extends UnarySink<T> implements JavaExecution
 
     @Override
     protected ExecutionOperator createCopy() {
-        return new JavaObjectFileSink<>(this.targetPath, this.getType());
+        return new JavaObjectFileSink<>(this.textFileUrl, this.getType());
     }
 
     @Override

[incubator-wayang] 03/11: Merge commit '027d2c99a20d796494609deb6079e51015e26a5b' into WAYANG-34

Posted by be...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bertty pushed a commit to branch WAYANG-34
in repository https://gitbox.apache.org/repos/asf/incubator-wayang.git

commit 56b7dbe041f5742860c3164560173da9e8c3f63e
Merge: a472d3a 027d2c9
Author: bertty <be...@gmail.com>
AuthorDate: Mon Sep 27 12:56:55 2021 +0200

    Merge commit '027d2c99a20d796494609deb6079e51015e26a5b' into WAYANG-34

 .travis.yml                                        |  14 +-
 NOTICE.TXT                                         |  31 +-
 RELEASE_NOTES                                      |  47 +++
 bin/build.sh                                       |   9 +-
 bin/change-scala-version.sh                        |   2 +
 pom.xml                                            |  61 ++--
 wayang-api/wayang-api-python/pom.xml               |   3 +-
 wayang-api/wayang-api-scala-java/pom.xml           |   3 +-
 .../simwords/SelectNearestCentroidFunction.scala   |   4 +-
 wayang-commons/pom.xml                             |  10 +-
 wayang-commons/wayang-core/pom.xml                 |   8 +-
 .../apache/wayang/core/monitor/FileMonitor.java    |   3 +-
 .../optimizer/cardinality/CardinalityEstimate.java |   2 +-
 .../core/optimizer/costs/EstimationContext.java    |   2 +-
 .../wayang/core/optimizer/costs/LoadEstimate.java  |   2 +-
 .../wayang/core/optimizer/costs/LoadProfile.java   |   2 +-
 .../optimizer/costs/LoadProfileEstimators.java     |   2 +-
 .../optimizer/costs/SimpleEstimationContext.java   |   2 +-
 .../wayang/core/platform/AtomicExecution.java      |   4 +-
 .../wayang/core/platform/AtomicExecutionGroup.java |   2 +-
 .../wayang/core/platform/PartialExecution.java     |   2 +-
 .../org/apache/wayang/core/platform/Platform.java  |   2 +-
 .../core/profiling/CardinalityRepository.java      |   4 +-
 .../apache/wayang/core/profiling/ExecutionLog.java |   2 +-
 .../apache/wayang/core/util/JsonSerializable.java  |   2 +-
 .../apache/wayang/core/util/JsonSerializables.java |   5 +-
 .../apache/wayang/core/util/JsonSerializer.java    |   3 +-
 .../apache/wayang/core/util/json/JSONArray.java    | 138 ++++++++
 .../apache/wayang/core/util/json/JSONObject.java   | 285 +++++++++++++++
 .../wayang/core/platform/PartialExecutionTest.java |   2 +-
 .../test/SerializableDummyExecutionOperator.java   |   2 +-
 wayang-docs/src/main/resources/Gemfile.lock        |   3 +-
 wayang-docs/src/main/resources/_data/menus.yml     | 116 +++---
 .../main/resources/how_contribute/bugs_report.md   |   7 +-
 .../pull_request.md                                |  24 +-
 .../main/resources/how_contribute/helping_users.md |   2 +-
 .../how_contribute/jira_issue_maintenance.md       |  18 +-
 .../resources/how_contribute/preparing_releases.md | 388 +++++++++++++++++++++
 .../resources/how_contribute/slack_channels.md     |   3 +-
 .../wayang/jdbc/operators/SqlToStreamOperator.java |   2 +-
 wayang-platforms/wayang-spark/pom.xml              |  12 +-
 .../apache/wayang/spark/channels/RddChannel.java   |   8 +-
 .../resources/wayang-spark-defaults.properties     |   1 +
 .../spark/operators/SparkOperatorTestBase.java     |   3 +-
 wayang-plugins/wayang-iejoin/pom.xml               |   1 -
 wayang-profiler/pom.xml                            |   3 +-
 .../profiler/log/DynamicLoadProfileEstimators.java |  22 +-
 wayang-tests-integration/pom.xml                   |   5 +-
 48 files changed, 1115 insertions(+), 163 deletions(-)

[incubator-wayang] 07/11: [WAYANG-34] add Terasort just TeraValidate.scala working

Posted by be...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bertty pushed a commit to branch WAYANG-34
in repository https://gitbox.apache.org/repos/asf/incubator-wayang.git

commit 01753193d7e64d5f919b94a9e4cef29a6d357eb2
Author: Bertty Contreras-Rojas <be...@scalytics.io>
AuthorDate: Mon Sep 27 14:38:28 2021 +0200

    [WAYANG-34] add Terasort just TeraValidate.scala working
    
    Signed-off-by: bertty <be...@gmail.com>
---
 .../apache/wayang/apps/terasort/Unsigned16.java    |  3 +-
 .../org/apache/wayang/apps/terasort/TeraApp.scala  |  4 +-
 .../apache/wayang/apps/terasort/TeraValidate.scala | 82 ++++++++++++++++++++++
 3 files changed, 86 insertions(+), 3 deletions(-)

diff --git a/wayang-benchmark/src/main/java/org/apache/wayang/apps/terasort/Unsigned16.java b/wayang-benchmark/src/main/java/org/apache/wayang/apps/terasort/Unsigned16.java
index ae3b99e..57516b1 100644
--- a/wayang-benchmark/src/main/java/org/apache/wayang/apps/terasort/Unsigned16.java
+++ b/wayang-benchmark/src/main/java/org/apache/wayang/apps/terasort/Unsigned16.java
@@ -22,6 +22,7 @@ import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
 
+import java.io.Serializable;
 import org.apache.hadoop.io.Writable;
 
 /**
@@ -30,7 +31,7 @@ import org.apache.hadoop.io.Writable;
  *
  *  * code copied from <a href="https://github.com/apache/hadoop/blob/trunk/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/terasort/Unsigned16.java">Terasort Example</a>
  */
-class Unsigned16 implements Writable {
+class Unsigned16 implements Writable, Serializable {
   private long hi8;
   private long lo8;
 
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraApp.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraApp.scala
index fa8f9d4..5023ec9 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraApp.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraApp.scala
@@ -41,14 +41,14 @@ object TeraApp extends ExperimentDescriptor {
     val partitions = args(4).toInt
     experiment.getSubject.addConfiguration("partitions", partitions)
     val input_file = if(args(5).equals("null")) null else args(5)
-    val output_file = if(args.length >= 5){ if(args(6).equals("null")) null else args(6) } else null
+    val output_file = if(args.length > 6){ if(args(6).equals("null")) null else args(6) } else null
     experiment.getSubject.addConfiguration("inputFile", input_file)
     experiment.getSubject.addConfiguration("outputFile", output_file)
 
     task match {
       case "generate" => new TeraGen(plugins: _*).apply(output_file, fileSize, partitions)
       case "sort" => new TeraSort(plugins: _*).apply(input_file, output_file)
-      case "validate" => null
+      case "validate" => new TeraValidate(plugins: _*).apply(input_file)
     }
 
 
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraValidate.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraValidate.scala
new file mode 100644
index 0000000..829a0ba
--- /dev/null
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraValidate.scala
@@ -0,0 +1,82 @@
+package org.apache.wayang.apps.terasort
+
+import org.apache.wayang.api.PlanBuilder
+import org.apache.wayang.commons.util.profiledb.model.Experiment
+import org.apache.wayang.core.api.{Configuration, WayangContext}
+import org.apache.wayang.core.plugin.Plugin
+import org.apache.hadoop.util.PureJavaCrc32
+import com.google.common.primitives.UnsignedBytes
+
+class TeraValidate(@transient plugins: Plugin*) extends Serializable {
+
+  def apply(input_url: String)
+           (implicit configuration: Configuration, experiment: Experiment) = {
+
+    val wayangCtx = new WayangContext(configuration)
+    plugins.foreach(wayangCtx.register)
+    val planBuilder = new PlanBuilder(wayangCtx)
+    val dataset = planBuilder
+      .readObjectFile[Tuple2[Array[Byte], Array[Byte]]](input_url)
+
+    val output = dataset.mapPartitions(
+      iterable_element => {
+        val iter = iterable_element.iterator
+        val sum = new Unsigned16
+        val checksum = new Unsigned16
+        val crc32 = new PureJavaCrc32()
+        val min = new Array[Byte](10)
+        val max = new Array[Byte](10)
+
+        val cmp = UnsignedBytes.lexicographicalComparator()
+
+        var pos = 0L
+        var prev = new Array[Byte](10)
+
+        while (iter.hasNext) {
+          val key = iter.next()._1
+          assert(cmp.compare(key, prev) >= 0)
+
+          crc32.reset()
+          crc32.update(key, 0, key.length)
+          checksum.set(crc32.getValue)
+          sum.add(checksum)
+
+          if (pos == 0) {
+            key.copyToArray(min, 0, 10)
+          }
+          pos += 1
+          prev = key
+        }
+        prev.copyToArray(max, 0, 10)
+        Iterator((sum, min, max)).toStream
+      }
+    )
+
+    val checksumOutput = output.collect()
+    val cmp = UnsignedBytes.lexicographicalComparator()
+    val sum = new Unsigned16
+    var numRecords = dataset.count.collect().head
+
+    checksumOutput.foreach { case (partSum, min, max) =>
+      sum.add(partSum)
+    }
+    println("num records: " + numRecords)
+    println("checksum: " + sum.toString)
+    var lastMax = new Array[Byte](10)
+    checksumOutput.map{ case (partSum, min, max) =>
+      (partSum, min.clone(), max.clone())
+    }.zipWithIndex.foreach { case ((partSum, min, max), i) =>
+      println(s"part $i")
+      println(s"lastMax" + lastMax.toSeq.map(x => if (x < 0) 256 + x else x))
+      println(s"min " + min.toSeq.map(x => if (x < 0) 256 + x else x))
+      println(s"max " + max.toSeq.map(x => if (x < 0) 256 + x else x))
+      assert(cmp.compare(min, max) <= 0, "min >= max")
+      assert(cmp.compare(lastMax, min) <= 0, "current partition min < last partition max")
+      lastMax = max
+    }
+    println("num records: " + numRecords)
+    println("checksum: " + sum.toString)
+    println("partitions are properly sorted")
+  }
+
+}

[incubator-wayang] 04/11: [WAYANG-34] add the ObjectFileSource to the basic and platforms

Posted by be...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bertty pushed a commit to branch WAYANG-34
in repository https://gitbox.apache.org/repos/asf/incubator-wayang.git

commit 93f9c625c6be9153dae39b5b29542ba5473611cc
Author: Bertty Contreras-Rojas <be...@scalytics.io>
AuthorDate: Mon Sep 27 13:57:26 2021 +0200

    [WAYANG-34] add the ObjectFileSource to the basic and platforms
    
    Signed-off-by: bertty <be...@gmail.com>
---
 .../scala/org/apache/wayang/api/PlanBuilder.scala  |  11 +-
 .../wayang/basic/operators/ObjectFileSource.java   | 197 +++++++++++++++++++++
 .../org/apache/wayang/flink/mapping/Mappings.java  |   1 +
 .../flink/mapping/ObjectFileSourceMapping.java     |  67 +++++++
 .../flink/operators/FlinkObjectFileSource.java     |  16 +-
 .../org/apache/wayang/java/mapping/Mappings.java   |   1 +
 .../java/mapping/ObjectFileSourceMapping.java      |  66 +++++++
 .../java/operators/JavaObjectFileSource.java       |  19 +-
 .../org/apache/wayang/spark/mapping/Mappings.java  |   1 +
 .../spark/mapping/ObjectFileSourceMapping.java     |  68 +++++++
 .../spark/operators/SparkObjectFileSource.java     |  16 +-
 11 files changed, 439 insertions(+), 24 deletions(-)

diff --git a/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/PlanBuilder.scala b/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/PlanBuilder.scala
index 3709f7f..f77ffc4 100644
--- a/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/PlanBuilder.scala
+++ b/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/PlanBuilder.scala
@@ -21,7 +21,7 @@ package org.apache.wayang.api
 import org.apache.commons.lang3.Validate
 import org.apache.wayang.api
 import org.apache.wayang.basic.data.Record
-import org.apache.wayang.basic.operators.{CollectionSource, TableSource, TextFileSource}
+import org.apache.wayang.basic.operators.{CollectionSource, ObjectFileSource, TableSource, TextFileSource}
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.WayangContext
 import org.apache.wayang.core.plan.wayangplan._
@@ -111,6 +111,15 @@ class PlanBuilder(wayangContext: WayangContext, private var jobName: String = nu
     */
   def readTextFile(url: String): DataQuanta[String] = load(new TextFileSource(url))
 
+
+  /**
+   * Read a object's file and provide it as a dataset of [[Object]]s.
+   *
+   * @param url the URL of the Object's file
+   * @return [[DataQuanta]] representing the file
+   */
+  def readObjectFile[T: ClassTag](url: String): DataQuanta[T] = load(new ObjectFileSource(url, dataSetType[T]))
+
   /**
     * Reads a database table and provides them as a dataset of [[Record]]s.
     *
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ObjectFileSource.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ObjectFileSource.java
new file mode 100644
index 0000000..7ca3410
--- /dev/null
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ObjectFileSource.java
@@ -0,0 +1,197 @@
+/*
+ * 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.wayang.basic.operators;
+
+import java.util.Optional;
+import java.util.OptionalDouble;
+import java.util.OptionalLong;
+import org.apache.commons.lang3.Validate;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.commons.util.profiledb.model.measurement.TimeMeasurement;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.optimizer.OptimizationContext;
+import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
+import org.apache.wayang.core.plan.wayangplan.UnarySource;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.core.util.fs.FileSystems;
+
+/**
+ * This source reads a text file and outputs the lines as data units.
+ */
+public class ObjectFileSource<T> extends UnarySource<T> {
+
+    private final Logger logger = LogManager.getLogger(this.getClass());
+
+    private final String inputUrl;
+
+    private final Class<T> tClass;
+
+    public ObjectFileSource(String inputUrl, DataSetType<T> type) {
+        super(type);
+        this.inputUrl = inputUrl;
+        this.tClass = type.getDataUnitType().getTypeClass();
+    }
+
+    public ObjectFileSource(String inputUrl, Class<T> tClass) {
+        super(DataSetType.createDefault(tClass));
+        this.inputUrl = inputUrl;
+        this.tClass = tClass;
+    }
+
+    /**
+     * Copies an instance (exclusive of broadcasts).
+     *
+     * @param that that should be copied
+     */
+    public ObjectFileSource(ObjectFileSource that) {
+        super(that);
+        this.inputUrl = that.getInputUrl();
+        this.tClass = that.getTypeClass();
+    }
+
+    public String getInputUrl() {
+        return this.inputUrl;
+    }
+
+    public Class<T> getTypeClass(){
+        return this.tClass;
+    }
+
+    @Override
+    public Optional<org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator> createCardinalityEstimator(
+            final int outputIndex,
+            final Configuration configuration) {
+        Validate.inclusiveBetween(0, this.getNumOutputs() - 1, outputIndex);
+        return Optional.of(new ObjectFileSource.CardinalityEstimator());
+    }
+
+
+    /**
+     * Custom {@link org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator} for {@link FlatMapOperator}s.
+     */
+    protected class CardinalityEstimator implements org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator {
+
+        public final CardinalityEstimate FALLBACK_ESTIMATE = new CardinalityEstimate(1000L, 100000000L, 0.7);
+
+        public static final double CORRECTNESS_PROBABILITY = 0.95d;
+
+        /**
+         * We expect selectivities to be correct within a factor of {@value #EXPECTED_ESTIMATE_DEVIATION}.
+         */
+        public static final double EXPECTED_ESTIMATE_DEVIATION = 0.05;
+
+        @Override
+        public CardinalityEstimate estimate(OptimizationContext optimizationContext, CardinalityEstimate... inputEstimates) {
+            //TODO validate if the implementation apply for the case
+            Validate.isTrue(ObjectFileSource.this.getNumInputs() == inputEstimates.length);
+
+            // see Job for StopWatch measurements
+            final TimeMeasurement timeMeasurement = optimizationContext.getJob().getStopWatch().start(
+                    "Optimization", "Cardinality&Load Estimation", "Push Estimation", "Estimate source cardinalities"
+            );
+
+            // Query the job cache first to see if there is already an estimate.
+            String jobCacheKey = String.format("%s.estimate(%s)", this.getClass().getCanonicalName(), ObjectFileSource.this.inputUrl);
+            CardinalityEstimate cardinalityEstimate = optimizationContext.queryJobCache(jobCacheKey, CardinalityEstimate.class);
+            if (cardinalityEstimate != null) return  cardinalityEstimate;
+
+            // Otherwise calculate the cardinality.
+            // First, inspect the size of the file and its line sizes.
+            OptionalLong fileSize = FileSystems.getFileSize(ObjectFileSource.this.inputUrl);
+            if (!fileSize.isPresent()) {
+                ObjectFileSource.this.logger.warn("Could not determine size of {}... deliver fallback estimate.",
+                        ObjectFileSource.this.inputUrl);
+                timeMeasurement.stop();
+                return this.FALLBACK_ESTIMATE;
+
+            } else if (fileSize.getAsLong() == 0L) {
+                timeMeasurement.stop();
+                return new CardinalityEstimate(0L, 0L, 1d);
+            }
+
+            OptionalDouble bytesPerLine = this.estimateBytesPerLine();
+            if (!bytesPerLine.isPresent()) {
+                ObjectFileSource.this.logger.warn("Could not determine average line size of {}... deliver fallback estimate.",
+                        ObjectFileSource.this.inputUrl);
+                timeMeasurement.stop();
+                return this.FALLBACK_ESTIMATE;
+            }
+
+            // Extrapolate a cardinality estimate for the complete file.
+            double numEstimatedLines = fileSize.getAsLong() / bytesPerLine.getAsDouble();
+            double expectedDeviation = numEstimatedLines * EXPECTED_ESTIMATE_DEVIATION;
+            cardinalityEstimate = new CardinalityEstimate(
+                    (long) (numEstimatedLines - expectedDeviation),
+                    (long) (numEstimatedLines + expectedDeviation),
+                    CORRECTNESS_PROBABILITY
+            );
+
+            // Cache the result, so that it will not be recalculated again.
+            optimizationContext.putIntoJobCache(jobCacheKey, cardinalityEstimate);
+
+            timeMeasurement.stop();
+            return cardinalityEstimate;
+        }
+
+        /**
+         * Estimate the number of bytes that are in each line of a given file.
+         *
+         * @return the average number of bytes per line if it could be determined
+         */
+        private OptionalDouble estimateBytesPerLine() {
+            //TODO validate if the implementation apply for the case
+//            final Optional<FileSystem> fileSystem = FileSystems.getFileSystem(ObjectFileSource.this.inputUrl);
+//            if (fileSystem.isPresent()) {
+//
+//                // Construct a limited reader for the first x KiB of the file.
+//                final int KiB = 1024;
+//                final int MiB = 1024 * KiB;
+//                try (LimitedInputStream lis = new LimitedInputStream(fileSystem.get().open(
+//                    ObjectFileSource.this.inputUrl), 1 * MiB)) {
+//                    final BufferedReader bufferedReader = new BufferedReader(
+//                            new InputStreamReader(lis, ObjectFileSource.this.encoding)
+//                    );
+//
+//                    // Read as much as possible.
+//                    char[] cbuf = new char[1024];
+//                    int numReadChars, numLineFeeds = 0;
+//                    while ((numReadChars = bufferedReader.read(cbuf)) != -1) {
+//                        for (int i = 0; i < numReadChars; i++) {
+//                            if (cbuf[i] == '\n') {
+//                                numLineFeeds++;
+//                            }
+//                        }
+//                    }
+//
+//                    if (numLineFeeds == 0) {
+//                        ObjectFileSource.this.logger.warn("Could not find any newline character in {}.", ObjectFileSource.this.inputUrl);
+//                        return OptionalDouble.empty();
+//                    }
+//                    return OptionalDouble.of((double) lis.getNumReadBytes() / numLineFeeds);
+//                } catch (IOException e) {
+//                    ObjectFileSource.this.logger.error("Could not estimate bytes per line of an input file.", e);
+//                }
+//            }
+
+            return OptionalDouble.empty();
+        }
+    }
+
+}
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/Mappings.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/Mappings.java
index 3a89d6c..9a31979 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/Mappings.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/Mappings.java
@@ -55,6 +55,7 @@ public class Mappings {
             new TextFileSinkMapping(),
             new ObjectFileSinkMapping(),
             new TextFileSourceMapping(),
+            new ObjectFileSourceMapping(),
             new UnionAllMapping(),
             new ZipWithIdMapping()
     );
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ObjectFileSourceMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ObjectFileSourceMapping.java
new file mode 100644
index 0000000..85d67e9
--- /dev/null
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ObjectFileSourceMapping.java
@@ -0,0 +1,67 @@
+/*
+ * 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.wayang.flink.mapping;
+
+import java.util.Collection;
+import java.util.Collections;
+import org.apache.wayang.basic.operators.ObjectFileSource;
+import org.apache.wayang.basic.operators.TextFileSource;
+import org.apache.wayang.core.mapping.Mapping;
+import org.apache.wayang.core.mapping.OperatorPattern;
+import org.apache.wayang.core.mapping.PlanTransformation;
+import org.apache.wayang.core.mapping.ReplacementSubplanFactory;
+import org.apache.wayang.core.mapping.SubplanPattern;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.flink.operators.FlinkObjectFileSource;
+import org.apache.wayang.flink.operators.FlinkTextFileSource;
+import org.apache.wayang.flink.platform.FlinkPlatform;
+
+/**
+ * Mapping from {@link ObjectFileSource} to {@link FlinkObjectFileSource}.
+ */
+@SuppressWarnings("unchecked")
+public class ObjectFileSourceMapping implements Mapping {
+    @Override
+    public Collection<PlanTransformation> getTransformations() {
+        return Collections.singleton(new PlanTransformation(
+                this.createSubplanPattern(),
+                this.createReplacementSubplanFactory(),
+                FlinkPlatform.getInstance()
+        ));
+    }
+
+
+    private SubplanPattern createSubplanPattern() {
+        final OperatorPattern operatorPattern = new OperatorPattern(
+            "source",
+            new ObjectFileSource<>(
+                null,
+                DataSetType.none().getDataUnitType().getTypeClass()
+            ),
+            false
+        );
+        return SubplanPattern.createSingleton(operatorPattern);
+    }
+
+    private ReplacementSubplanFactory createReplacementSubplanFactory() {
+        return new ReplacementSubplanFactory.OfSingleOperators<ObjectFileSource>(
+                (matchedOperator, epoch) -> new FlinkObjectFileSource<>(matchedOperator).at(epoch)
+        );
+    }
+}
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkObjectFileSource.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkObjectFileSource.java
index fb1e569..9c304a4 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkObjectFileSource.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkObjectFileSource.java
@@ -27,6 +27,7 @@ import org.apache.hadoop.io.BytesWritable;
 import org.apache.hadoop.io.NullWritable;
 import org.apache.wayang.basic.channels.FileChannel;
 import org.apache.wayang.basic.data.Tuple2;
+import org.apache.wayang.basic.operators.ObjectFileSource;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.plan.wayangplan.Operator;
@@ -52,17 +53,18 @@ import java.util.List;
  *
  * @see FlinkObjectFileSource
  */
-public class FlinkObjectFileSource<Type> extends UnarySource<Type> implements FlinkExecutionOperator {
+public class FlinkObjectFileSource<Type> extends ObjectFileSource<Type> implements FlinkExecutionOperator {
 
-    private final String sourcePath;
+    public FlinkObjectFileSource(ObjectFileSource<Type> that) {
+        super(that);
+    }
 
     public FlinkObjectFileSource(DataSetType<Type> type) {
         this(null, type);
     }
 
     public FlinkObjectFileSource(String sourcePath, DataSetType<Type> type) {
-        super(type);
-        this.sourcePath = sourcePath;
+        super(sourcePath, type);
     }
 
     @Override
@@ -76,12 +78,12 @@ public class FlinkObjectFileSource<Type> extends UnarySource<Type> implements Fl
         assert outputs.length == this.getNumOutputs();
 
         final String path;
-        if (this.sourcePath == null) {
+        if (this.getInputUrl() == null) {
             final FileChannel.Instance input = (FileChannel.Instance) inputs[0];
             path = input.getSinglePath();
         } else {
             assert inputs.length == 0;
-            path = this.sourcePath;
+            path = this.getInputUrl();
         }
         DataSetChannel.Instance output = (DataSetChannel.Instance) outputs[0];
         flinkExecutor.fee.setParallelism(flinkExecutor.getNumDefaultPartitions());
@@ -109,7 +111,7 @@ public class FlinkObjectFileSource<Type> extends UnarySource<Type> implements Fl
 
     @Override
     protected ExecutionOperator createCopy() {
-        return new FlinkObjectFileSource<Type>(sourcePath, this.getType());
+        return new FlinkObjectFileSource<Type>(this.getInputUrl(), this.getType());
     }
 
     @Override
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/Mappings.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/Mappings.java
index b2809d6..fef4791 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/Mappings.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/Mappings.java
@@ -32,6 +32,7 @@ public class Mappings {
     public static Collection<Mapping> BASIC_MAPPINGS = Arrays.asList(
             new TextFileSourceMapping(),
             new TextFileSinkMapping(),
+            new ObjectFileSourceMapping(),
             new ObjectFileSinkMapping(),
             new MapMapping(),
             new MapPartitionsMapping(),
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ObjectFileSourceMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ObjectFileSourceMapping.java
new file mode 100644
index 0000000..dbc101e
--- /dev/null
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ObjectFileSourceMapping.java
@@ -0,0 +1,66 @@
+/*
+ * 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.wayang.java.mapping;
+
+import java.util.Collection;
+import java.util.Collections;
+import org.apache.wayang.basic.operators.ObjectFileSource;
+import org.apache.wayang.basic.operators.TextFileSource;
+import org.apache.wayang.core.mapping.Mapping;
+import org.apache.wayang.core.mapping.OperatorPattern;
+import org.apache.wayang.core.mapping.PlanTransformation;
+import org.apache.wayang.core.mapping.ReplacementSubplanFactory;
+import org.apache.wayang.core.mapping.SubplanPattern;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.java.operators.JavaObjectFileSource;
+import org.apache.wayang.java.operators.JavaTextFileSource;
+import org.apache.wayang.java.platform.JavaPlatform;
+
+/**
+ * Mapping from {@link ObjectFileSource} to {@link JavaObjectFileSource}.
+ */
+public class ObjectFileSourceMapping implements Mapping {
+
+    @Override
+    public Collection<PlanTransformation> getTransformations() {
+        return Collections.singleton(new PlanTransformation(
+                this.createSubplanPattern(),
+                this.createReplacementSubplanFactory(),
+                JavaPlatform.getInstance()
+        ));
+    }
+
+    private SubplanPattern createSubplanPattern() {
+        final OperatorPattern operatorPattern = new OperatorPattern(
+            "source",
+            new ObjectFileSource(
+                null,
+                DataSetType.none().getDataUnitType().getTypeClass()
+            ),
+            false
+        );
+        return SubplanPattern.createSingleton(operatorPattern);
+    }
+
+    private ReplacementSubplanFactory createReplacementSubplanFactory() {
+        return new ReplacementSubplanFactory.OfSingleOperators<ObjectFileSource>(
+                (matchedOperator, epoch) -> new JavaObjectFileSource(matchedOperator).at(epoch)
+        );
+    }
+}
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaObjectFileSource.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaObjectFileSource.java
index 4973ffd..4da3b00 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaObjectFileSource.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaObjectFileSource.java
@@ -26,6 +26,7 @@ import org.apache.hadoop.io.BytesWritable;
 import org.apache.hadoop.io.NullWritable;
 import org.apache.hadoop.io.SequenceFile;
 import org.apache.wayang.basic.channels.FileChannel;
+import org.apache.wayang.basic.operators.ObjectFileSource;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
@@ -60,17 +61,17 @@ import java.util.stream.StreamSupport;
  *
  * @see JavaObjectFileSink
  */
-public class JavaObjectFileSource<T> extends UnarySource<T> implements JavaExecutionOperator {
+public class JavaObjectFileSource<T> extends ObjectFileSource<T> implements JavaExecutionOperator {
 
-    private final String sourcePath;
+    public JavaObjectFileSource(ObjectFileSource<T> that) {
+        super(that);
+    }
 
     public JavaObjectFileSource(DataSetType<T> type) {
-        this(null, type);
+        super(null, type);
     }
-
     public JavaObjectFileSource(String sourcePath, DataSetType<T> type) {
-        super(type);
-        this.sourcePath = sourcePath;
+        super(sourcePath, type);
     }
 
     @Override
@@ -83,12 +84,12 @@ public class JavaObjectFileSource<T> extends UnarySource<T> implements JavaExecu
 
         SequenceFileIterator sequenceFileIterator;
         final String path;
-        if (this.sourcePath == null) {
+        if (this.getInputUrl() == null) {
             final FileChannel.Instance input = (FileChannel.Instance) inputs[0];
             path = input.getSinglePath();
         } else {
             assert inputs.length == 0;
-            path = this.sourcePath;
+            path = this.getInputUrl();
         }
         try {
             final String actualInputPath = FileSystems.findActualSingleInputPath(path);
@@ -110,7 +111,7 @@ public class JavaObjectFileSource<T> extends UnarySource<T> implements JavaExecu
 
     @Override
     protected ExecutionOperator createCopy() {
-        return new JavaObjectFileSource<>(this.sourcePath, this.getType());
+        return new JavaObjectFileSource<>(this.getInputUrl(), this.getType());
     }
 
     @Override
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/Mappings.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/Mappings.java
index 5618e78..046fb28 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/Mappings.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/Mappings.java
@@ -33,6 +33,7 @@ public class Mappings {
             new TextFileSourceMapping(),
             new TextFileSinkMapping(),
             new ObjectFileSinkMapping(),
+            new ObjectFileSourceMapping(),
             new MapMapping(),
             new MapPartitionsMapping(),
             new ReduceByMapping(),
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/ObjectFileSourceMapping.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/ObjectFileSourceMapping.java
new file mode 100644
index 0000000..888b1b4
--- /dev/null
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/mapping/ObjectFileSourceMapping.java
@@ -0,0 +1,68 @@
+/*
+ * 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.wayang.spark.mapping;
+
+import java.util.Collection;
+import java.util.Collections;
+import org.apache.wayang.basic.operators.CollectionSource;
+import org.apache.wayang.basic.operators.ObjectFileSource;
+import org.apache.wayang.basic.operators.TextFileSource;
+import org.apache.wayang.core.mapping.Mapping;
+import org.apache.wayang.core.mapping.OperatorPattern;
+import org.apache.wayang.core.mapping.PlanTransformation;
+import org.apache.wayang.core.mapping.ReplacementSubplanFactory;
+import org.apache.wayang.core.mapping.SubplanPattern;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.spark.operators.SparkCollectionSource;
+import org.apache.wayang.spark.operators.SparkObjectFileSource;
+import org.apache.wayang.spark.operators.SparkTextFileSource;
+import org.apache.wayang.spark.platform.SparkPlatform;
+
+/**
+ * Mapping from {@link ObjectFileSource} to {@link SparkObjectFileSource}.
+ */
+public class ObjectFileSourceMapping implements Mapping {
+
+    @Override
+    public Collection<PlanTransformation> getTransformations() {
+        return Collections.singleton(new PlanTransformation(
+                this.createSubplanPattern(),
+                this.createReplacementSubplanFactory(),
+                SparkPlatform.getInstance()
+        ));
+    }
+
+    private SubplanPattern createSubplanPattern() {
+        final OperatorPattern operatorPattern = new OperatorPattern(
+            "source",
+            new ObjectFileSource(
+                null,
+                DataSetType.none().getDataUnitType().getTypeClass()
+            ),
+            false
+        );
+        return SubplanPattern.createSingleton(operatorPattern);
+    }
+
+    private ReplacementSubplanFactory createReplacementSubplanFactory() {
+        return new ReplacementSubplanFactory.OfSingleOperators<ObjectFileSource>(
+                (matchedOperator, epoch) -> new SparkObjectFileSource(matchedOperator).at(epoch)
+        );
+    }
+}
diff --git a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkObjectFileSource.java b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkObjectFileSource.java
index 55820f3..a084bcd 100644
--- a/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkObjectFileSource.java
+++ b/wayang-platforms/wayang-spark/src/main/java/org/apache/wayang/spark/operators/SparkObjectFileSource.java
@@ -20,6 +20,7 @@ package org.apache.wayang.spark.operators;
 
 import org.apache.spark.api.java.JavaRDD;
 import org.apache.wayang.basic.channels.FileChannel;
+import org.apache.wayang.basic.operators.ObjectFileSource;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.plan.wayangplan.Operator;
@@ -45,19 +46,20 @@ import java.util.List;
  *
  * @see SparkObjectFileSink
  */
-public class SparkObjectFileSource<T> extends UnarySource<T> implements SparkExecutionOperator {
+public class SparkObjectFileSource<T> extends ObjectFileSource<T> implements SparkExecutionOperator {
 
     private final Logger logger = LogManager.getLogger(this.getClass());
 
-    private final String sourcePath;
+    public SparkObjectFileSource(ObjectFileSource that) {
+        super(that);
+    }
 
     public SparkObjectFileSource(DataSetType<T> type) {
         this(null, type);
     }
 
     public SparkObjectFileSource(String sourcePath, DataSetType<T> type) {
-        super(type);
-        this.sourcePath = sourcePath;
+        super(sourcePath, type);
     }
 
     @Override
@@ -67,9 +69,9 @@ public class SparkObjectFileSource<T> extends UnarySource<T> implements SparkExe
             SparkExecutor sparkExecutor,
             OptimizationContext.OperatorContext operatorContext) {
         final String sourcePath;
-        if (this.sourcePath != null) {
+        if (this.getInputUrl() != null) {
             assert inputs.length == 0;
-            sourcePath = this.sourcePath;
+            sourcePath = this.getInputUrl();
         } else {
             FileChannel.Instance input = (FileChannel.Instance) inputs[0];
             sourcePath = input.getSinglePath();
@@ -86,7 +88,7 @@ public class SparkObjectFileSource<T> extends UnarySource<T> implements SparkExe
 
     @Override
     protected ExecutionOperator createCopy() {
-        return new SparkObjectFileSource<>(this.sourcePath, this.getType());
+        return new SparkObjectFileSource<>(this.getInputUrl(), this.getType());
     }
 
     @Override

[incubator-wayang] 05/11: [WAYANG-34] add Terasort just TeraGen running

Posted by be...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bertty pushed a commit to branch WAYANG-34
in repository https://gitbox.apache.org/repos/asf/incubator-wayang.git

commit 47e2ef5a8eb7e398f14cb768f259ba960944f985
Author: Bertty Contreras-Rojas <be...@scalytics.io>
AuthorDate: Mon Sep 27 14:00:44 2021 +0200

    [WAYANG-34] add Terasort just TeraGen running
    
    Signed-off-by: bertty <be...@gmail.com>
---
 wayang-benchmark/pom.xml                           |  15 +
 .../org/apache/wayang/apps/terasort/Random16.java  | 376 +++++++++++++++++++++
 .../apache/wayang/apps/terasort/Unsigned16.java    | 299 ++++++++++++++++
 .../org/apache/wayang/apps/terasort/TeraApp.scala  | 138 ++++++++
 .../org/apache/wayang/apps/terasort/TeraGen.scala  | 111 ++++++
 5 files changed, 939 insertions(+)

diff --git a/wayang-benchmark/pom.xml b/wayang-benchmark/pom.xml
index 477c752..5ca2b06 100644
--- a/wayang-benchmark/pom.xml
+++ b/wayang-benchmark/pom.xml
@@ -71,6 +71,21 @@
       <artifactId>wayang-sqlite3</artifactId>
       <version>0.6.0-SNAPSHOT</version>
     </dependency>
+    <dependency>
+      <groupId>org.apache.hadoop</groupId>
+      <artifactId>hadoop-common</artifactId>
+      <version>2.7.7</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.hadoop</groupId>
+      <artifactId>hadoop-hdfs-client</artifactId>
+      <version>2.7.7</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.spark</groupId>
+      <artifactId>spark-core_${scala.mayor.version}</artifactId>
+      <version>${spark.version}</version>
+    </dependency>
   </dependencies>
 
 
diff --git a/wayang-benchmark/src/main/java/org/apache/wayang/apps/terasort/Random16.java b/wayang-benchmark/src/main/java/org/apache/wayang/apps/terasort/Random16.java
new file mode 100644
index 0000000..6e85d92
--- /dev/null
+++ b/wayang-benchmark/src/main/java/org/apache/wayang/apps/terasort/Random16.java
@@ -0,0 +1,376 @@
+/**
+ * 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.wayang.apps.terasort;
+
+/**
+ * This class implements a 128-bit linear congruential generator.
+ * Specifically, if X0 is the most recently issued 128-bit random
+ * number (or a seed of 0 if no random number has already been generated,
+ * the next number to be generated, X1, is equal to:
+ * X1 = (a * X0 + c) mod 2**128
+ * where a is 47026247687942121848144207491837523525
+ *            or 0x2360ed051fc65da44385df649fccf645
+ *   and c is 98910279301475397889117759788405497857
+ *            or 0x4a696d47726179524950202020202001
+ * The coefficient "a" is suggested by:
+ * Pierre L'Ecuyer, "Tables of linear congruential generators of different
+ * sizes and good lattice structure", Mathematics of Computation, 68
+ * pp. 249 - 260 (1999)
+ * http://www.ams.org/mcom/1999-68-225/S0025-5718-99-00996-5/S0025-5718-99-00996-5.pdf
+ * The constant "c" meets the simple suggestion by the same reference that
+ * it be odd.
+ *
+ * There is also a facility for quickly advancing the state of the
+ * generator by a fixed number of steps - this facilitates parallel
+ * generation.
+ *
+ * This is based on 1.0 of rand16.c from Chris Nyberg 
+ * <ch...@ordinal.com>.
+ *
+ * code copied from <a href="https://github.com/apache/hadoop/blob/trunk/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/terasort/Random16.java">Terasort Example</a>
+ */
+class Random16 {
+
+  /**
+   * The "Gen" array contain powers of 2 of the linear congruential generator.
+   * The index 0 struct contain the "a" coefficient and "c" constant for the
+   * generator.  That is, the generator is:
+   *    f(x) = (Gen[0].a * x + Gen[0].c) mod 2**128
+   *
+   * All structs after the first contain an "a" and "c" that
+   * comprise the square of the previous function.
+   *
+   * f**2(x) = (Gen[1].a * x + Gen[1].c) mod 2**128
+   * f**4(x) = (Gen[2].a * x + Gen[2].c) mod 2**128
+   * f**8(x) = (Gen[3].a * x + Gen[3].c) mod 2**128
+   * ...
+
+   */
+  private static class RandomConstant {
+    final Unsigned16 a;
+    final Unsigned16 c;
+    public RandomConstant(String left, String right) {
+      a = new Unsigned16(left);
+      c = new Unsigned16(right);
+    }
+  }
+
+  private static final RandomConstant[] genArray = new RandomConstant[]{
+      /* [  0] */ new RandomConstant("2360ed051fc65da44385df649fccf645",
+      "4a696d47726179524950202020202001"),
+      /* [  1] */ new RandomConstant("17bce35bdf69743c529ed9eb20e0ae99",
+      "95e0e48262b3edfe04479485c755b646"),
+      /* [  2] */ new RandomConstant("f4dd417327db7a9bd194dfbe42d45771",
+      "882a02c315362b60765f100068b33a1c"),
+      /* [  3] */ new RandomConstant("6347af777a7898f6d1a2d6f33505ffe1",
+      "5efc4abfaca23e8ca8edb1f2dfbf6478"),
+      /* [  4] */ new RandomConstant("b6a4239f3b315f84f6ef6d3d288c03c1",
+      "f25bd15439d16af594c1b1bafa6239f0"),
+      /* [  5] */ new RandomConstant("2c82901ad1cb0cd182b631ba6b261781",
+      "89ca67c29c9397d59c612596145db7e0"),
+      /* [  6] */ new RandomConstant("dab03f988288676ee49e66c4d2746f01",
+      "8b6ae036713bd578a8093c8eae5c7fc0"),
+      /* [  7] */ new RandomConstant("602167331d86cf5684fe009a6d09de01",
+      "98a2542fd23d0dbdff3b886cdb1d3f80"),
+      /* [  8] */ new RandomConstant("61ecb5c24d95b058f04c80a23697bc01",
+      "954db923fdb7933e947cd1edcecb7f00"),
+      /* [  9] */ new RandomConstant("4a5c31e0654c28aa60474e83bf3f7801",
+      "00be4a36657c98cd204e8c8af7dafe00"),
+      /* [ 10] */ new RandomConstant("ae4f079d54fbece1478331d3c6bef001",
+      "991965329dccb28d581199ab18c5fc00"),
+      /* [ 11] */ new RandomConstant("101b8cb830c7cb927ff1ed50ae7de001",
+      "e1a8705b63ad5b8cd6c3d268d5cbf800"),
+      /* [ 12] */ new RandomConstant("f54a27fc056b00e7563f3505e0fbc001",
+      "2b657bbfd6ed9d632079e70c3c97f000"),
+      /* [ 13] */ new RandomConstant("df8a6fc1a833d201f98d719dd1f78001",
+      "59b60ee4c52fa49e9fe90682bd2fe000"),
+      /* [ 14] */ new RandomConstant("5480a5015f101a4ea7e3f183e3ef0001",
+      "cc099c88030679464fe86aae8a5fc000"),
+      /* [ 15] */ new RandomConstant("a498509e76e5d7925f539c28c7de0001",
+      "06b9abff9f9f33dd30362c0154bf8000"),
+      /* [ 16] */ new RandomConstant("0798a3d8b10dc72e60121cd58fbc0001",
+      "e296707121688d5a0260b293a97f0000"),
+      /* [ 17] */ new RandomConstant("1647d1e78ec02e665fafcbbb1f780001",
+      "189ffc4701ff23cb8f8acf6b52fe0000"),
+      /* [ 18] */ new RandomConstant("a7c982285e72bf8c0c8ddfb63ef00001",
+      "5141110ab208fb9d61fb47e6a5fc0000"),
+      /* [ 19] */ new RandomConstant("3eb78ee8fb8c56dbc5d4e06c7de00001",
+      "3c97caa62540f2948d8d340d4bf80000"),
+      /* [ 20] */ new RandomConstant("72d03b6f4681f2f9fe8e44d8fbc00001",
+      "1b25cb9cfe5a0c963174f91a97f00000"),
+      /* [ 21] */ new RandomConstant("ea85f81e4f502c9bc8ae99b1f7800001",
+      "0c644570b4a487103c5436352fe00000"),
+      /* [ 22] */ new RandomConstant("629c320db08b00c6bfa57363ef000001",
+      "3d0589c28869472bde517c6a5fc00000"),
+      /* [ 23] */ new RandomConstant("c5c4b9ce268d074a386be6c7de000001",
+      "bc95e5ab36477e65534738d4bf800000"),
+      /* [ 24] */ new RandomConstant("f30bbbbed1596187555bcd8fbc000001",
+      "ddb02ff72a031c01011f71a97f000000"),
+      /* [ 25] */ new RandomConstant("4a1000fb26c9eeda3cc79b1f78000001",
+      "2561426086d9acdb6c82e352fe000000"),
+      /* [ 26] */ new RandomConstant("89fb5307f6bf8ce2c1cf363ef0000001",
+      "64a788e3c118ed1c8215c6a5fc000000"),
+      /* [ 27] */ new RandomConstant("830b7b3358a5d67ea49e6c7de0000001",
+      "e65ea321908627cfa86b8d4bf8000000"),
+      /* [ 28] */ new RandomConstant("fd8a51da91a69fe1cd3cd8fbc0000001",
+      "53d27225604d85f9e1d71a97f0000000"),
+      /* [ 29] */ new RandomConstant("901a48b642b90b55aa79b1f780000001",
+      "ca5ec7a3ed1fe55e07ae352fe0000000"),
+      /* [ 30] */ new RandomConstant("118cdefdf32144f394f363ef00000001",
+      "4daebb2e085330651f5c6a5fc0000000"),
+      /* [ 31] */ new RandomConstant("0a88c0a91cff430829e6c7de00000001",
+      "9d6f1a00a8f3f76e7eb8d4bf80000000"),
+      /* [ 32] */ new RandomConstant("433bef4314f16a9453cd8fbc00000001",
+      "158c62f2b31e496dfd71a97f00000000"),
+      /* [ 33] */ new RandomConstant("c294b02995ae6738a79b1f7800000001",
+      "290e84a2eb15fd1ffae352fe00000000"),
+      /* [ 34] */ new RandomConstant("913575e0da8b16b14f363ef000000001",
+      "e3dc1bfbe991a34ff5c6a5fc00000000"),
+      /* [ 35] */ new RandomConstant("2f61b9f871cf4e629e6c7de000000001",
+      "ddf540d020b9eadfeb8d4bf800000000"),
+      /* [ 36] */ new RandomConstant("78d26ccbd68320c53cd8fbc000000001",
+      "8ee4950177ce66bfd71a97f000000000"),
+      /* [ 37] */ new RandomConstant("8b7ebd037898518a79b1f78000000001",
+      "39e0f787c907117fae352fe000000000"),
+      /* [ 38] */ new RandomConstant("0b5507b61f78e314f363ef0000000001",
+      "659d2522f7b732ff5c6a5fc000000000"),
+      /* [ 39] */ new RandomConstant("4f884628f812c629e6c7de0000000001",
+      "9e8722938612a5feb8d4bf8000000000"),
+      /* [ 40] */ new RandomConstant("be896744d4a98c53cd8fbc0000000001",
+      "e941a65d66b64bfd71a97f0000000000"),
+      /* [ 41] */ new RandomConstant("daf63a553b6318a79b1f780000000001",
+      "7b50d19437b097fae352fe0000000000"),
+      /* [ 42] */ new RandomConstant("2d7a23d8bf06314f363ef00000000001",
+      "59d7b68e18712ff5c6a5fc0000000000"),
+      /* [ 43] */ new RandomConstant("392b046a9f0c629e6c7de00000000001",
+      "4087bab2d5225feb8d4bf80000000000"),
+      /* [ 44] */ new RandomConstant("eb30fbb9c218c53cd8fbc00000000001",
+      "b470abc03b44bfd71a97f00000000000"),
+      /* [ 45] */ new RandomConstant("b9cdc30594318a79b1f7800000000001",
+      "366630eaba897fae352fe00000000000"),
+      /* [ 46] */ new RandomConstant("014ab453686314f363ef000000000001",
+      "a2dfc77e8512ff5c6a5fc00000000000"),
+      /* [ 47] */ new RandomConstant("395221c7d0c629e6c7de000000000001",
+      "1e0d25a14a25feb8d4bf800000000000"),
+      /* [ 48] */ new RandomConstant("4d972813a18c53cd8fbc000000000001",
+      "9d50a5d3944bfd71a97f000000000000"),
+      /* [ 49] */ new RandomConstant("06f9e2374318a79b1f78000000000001",
+      "bf7ab5eb2897fae352fe000000000000"),
+      /* [ 50] */ new RandomConstant("bd220cae86314f363ef0000000000001",
+      "925b14e6512ff5c6a5fc000000000000"),
+      /* [ 51] */ new RandomConstant("36fd3a5d0c629e6c7de0000000000001",
+      "724cce0ca25feb8d4bf8000000000000"),
+      /* [ 52] */ new RandomConstant("60def8ba18c53cd8fbc0000000000001",
+      "1af42d1944bfd71a97f0000000000000"),
+      /* [ 53] */ new RandomConstant("8d500174318a79b1f780000000000001",
+      "0f529e32897fae352fe0000000000000"),
+      /* [ 54] */ new RandomConstant("48e842e86314f363ef00000000000001",
+      "844e4c6512ff5c6a5fc0000000000000"),
+      /* [ 55] */ new RandomConstant("4af185d0c629e6c7de00000000000001",
+      "9f40d8ca25feb8d4bf80000000000000"),
+      /* [ 56] */ new RandomConstant("7a670ba18c53cd8fbc00000000000001",
+      "9912b1944bfd71a97f00000000000000"),
+      /* [ 57] */ new RandomConstant("86de174318a79b1f7800000000000001",
+      "9c69632897fae352fe00000000000000"),
+      /* [ 58] */ new RandomConstant("55fc2e86314f363ef000000000000001",
+      "e1e2c6512ff5c6a5fc00000000000000"),
+      /* [ 59] */ new RandomConstant("ccf85d0c629e6c7de000000000000001",
+      "68058ca25feb8d4bf800000000000000"),
+      /* [ 60] */ new RandomConstant("1df0ba18c53cd8fbc000000000000001",
+      "610b1944bfd71a97f000000000000000"),
+      /* [ 61] */ new RandomConstant("4be174318a79b1f78000000000000001",
+      "061632897fae352fe000000000000000"),
+      /* [ 62] */ new RandomConstant("d7c2e86314f363ef0000000000000001",
+      "1c2c6512ff5c6a5fc000000000000000"),
+      /* [ 63] */ new RandomConstant("af85d0c629e6c7de0000000000000001",
+      "7858ca25feb8d4bf8000000000000000"),
+      /* [ 64] */ new RandomConstant("5f0ba18c53cd8fbc0000000000000001",
+      "f0b1944bfd71a97f0000000000000000"),
+      /* [ 65] */ new RandomConstant("be174318a79b1f780000000000000001",
+      "e1632897fae352fe0000000000000000"),
+      /* [ 66] */ new RandomConstant("7c2e86314f363ef00000000000000001",
+      "c2c6512ff5c6a5fc0000000000000000"),
+      /* [ 67] */ new RandomConstant("f85d0c629e6c7de00000000000000001",
+      "858ca25feb8d4bf80000000000000000"),
+      /* [ 68] */ new RandomConstant("f0ba18c53cd8fbc00000000000000001",
+      "0b1944bfd71a97f00000000000000000"),
+      /* [ 69] */ new RandomConstant("e174318a79b1f7800000000000000001",
+      "1632897fae352fe00000000000000000"),
+      /* [ 70] */ new RandomConstant("c2e86314f363ef000000000000000001",
+      "2c6512ff5c6a5fc00000000000000000"),
+      /* [ 71] */ new RandomConstant("85d0c629e6c7de000000000000000001",
+      "58ca25feb8d4bf800000000000000000"),
+      /* [ 72] */ new RandomConstant("0ba18c53cd8fbc000000000000000001",
+      "b1944bfd71a97f000000000000000000"),
+      /* [ 73] */ new RandomConstant("174318a79b1f78000000000000000001",
+      "632897fae352fe000000000000000000"),
+      /* [ 74] */ new RandomConstant("2e86314f363ef0000000000000000001",
+      "c6512ff5c6a5fc000000000000000000"),
+      /* [ 75] */ new RandomConstant("5d0c629e6c7de0000000000000000001",
+      "8ca25feb8d4bf8000000000000000000"),
+      /* [ 76] */ new RandomConstant("ba18c53cd8fbc0000000000000000001",
+      "1944bfd71a97f0000000000000000000"),
+      /* [ 77] */ new RandomConstant("74318a79b1f780000000000000000001",
+      "32897fae352fe0000000000000000000"),
+      /* [ 78] */ new RandomConstant("e86314f363ef00000000000000000001",
+      "6512ff5c6a5fc0000000000000000000"),
+      /* [ 79] */ new RandomConstant("d0c629e6c7de00000000000000000001",
+      "ca25feb8d4bf80000000000000000000"),
+      /* [ 80] */ new RandomConstant("a18c53cd8fbc00000000000000000001",
+      "944bfd71a97f00000000000000000000"),
+      /* [ 81] */ new RandomConstant("4318a79b1f7800000000000000000001",
+      "2897fae352fe00000000000000000000"),
+      /* [ 82] */ new RandomConstant("86314f363ef000000000000000000001",
+      "512ff5c6a5fc00000000000000000000"),
+      /* [ 83] */ new RandomConstant("0c629e6c7de000000000000000000001",
+      "a25feb8d4bf800000000000000000000"),
+      /* [ 84] */ new RandomConstant("18c53cd8fbc000000000000000000001",
+      "44bfd71a97f000000000000000000000"),
+      /* [ 85] */ new RandomConstant("318a79b1f78000000000000000000001",
+      "897fae352fe000000000000000000000"),
+      /* [ 86] */ new RandomConstant("6314f363ef0000000000000000000001",
+      "12ff5c6a5fc000000000000000000000"),
+      /* [ 87] */ new RandomConstant("c629e6c7de0000000000000000000001",
+      "25feb8d4bf8000000000000000000000"),
+      /* [ 88] */ new RandomConstant("8c53cd8fbc0000000000000000000001",
+      "4bfd71a97f0000000000000000000000"),
+      /* [ 89] */ new RandomConstant("18a79b1f780000000000000000000001",
+      "97fae352fe0000000000000000000000"),
+      /* [ 90] */ new RandomConstant("314f363ef00000000000000000000001",
+      "2ff5c6a5fc0000000000000000000000"),
+      /* [ 91] */ new RandomConstant("629e6c7de00000000000000000000001",
+      "5feb8d4bf80000000000000000000000"),
+      /* [ 92] */ new RandomConstant("c53cd8fbc00000000000000000000001",
+      "bfd71a97f00000000000000000000000"),
+      /* [ 93] */ new RandomConstant("8a79b1f7800000000000000000000001",
+      "7fae352fe00000000000000000000000"),
+      /* [ 94] */ new RandomConstant("14f363ef000000000000000000000001",
+      "ff5c6a5fc00000000000000000000000"),
+      /* [ 95] */ new RandomConstant("29e6c7de000000000000000000000001",
+      "feb8d4bf800000000000000000000000"),
+      /* [ 96] */ new RandomConstant("53cd8fbc000000000000000000000001",
+      "fd71a97f000000000000000000000000"),
+      /* [ 97] */ new RandomConstant("a79b1f78000000000000000000000001",
+      "fae352fe000000000000000000000000"),
+      /* [ 98] */ new RandomConstant("4f363ef0000000000000000000000001",
+      "f5c6a5fc000000000000000000000000"),
+      /* [ 99] */ new RandomConstant("9e6c7de0000000000000000000000001",
+      "eb8d4bf8000000000000000000000000"),
+      /* [100] */ new RandomConstant("3cd8fbc0000000000000000000000001",
+      "d71a97f0000000000000000000000000"),
+      /* [101] */ new RandomConstant("79b1f780000000000000000000000001",
+      "ae352fe0000000000000000000000000"),
+      /* [102] */ new RandomConstant("f363ef00000000000000000000000001",
+      "5c6a5fc0000000000000000000000000"),
+      /* [103] */ new RandomConstant("e6c7de00000000000000000000000001",
+      "b8d4bf80000000000000000000000000"),
+      /* [104] */ new RandomConstant("cd8fbc00000000000000000000000001",
+      "71a97f00000000000000000000000000"),
+      /* [105] */ new RandomConstant("9b1f7800000000000000000000000001",
+      "e352fe00000000000000000000000000"),
+      /* [106] */ new RandomConstant("363ef000000000000000000000000001",
+      "c6a5fc00000000000000000000000000"),
+      /* [107] */ new RandomConstant("6c7de000000000000000000000000001",
+      "8d4bf800000000000000000000000000"),
+      /* [108] */ new RandomConstant("d8fbc000000000000000000000000001",
+      "1a97f000000000000000000000000000"),
+      /* [109] */ new RandomConstant("b1f78000000000000000000000000001",
+      "352fe000000000000000000000000000"),
+      /* [110] */ new RandomConstant("63ef0000000000000000000000000001",
+      "6a5fc000000000000000000000000000"),
+      /* [111] */ new RandomConstant("c7de0000000000000000000000000001",
+      "d4bf8000000000000000000000000000"),
+      /* [112] */ new RandomConstant("8fbc0000000000000000000000000001",
+      "a97f0000000000000000000000000000"),
+      /* [113] */ new RandomConstant("1f780000000000000000000000000001",
+      "52fe0000000000000000000000000000"),
+      /* [114] */ new RandomConstant("3ef00000000000000000000000000001",
+      "a5fc0000000000000000000000000000"),
+      /* [115] */ new RandomConstant("7de00000000000000000000000000001",
+      "4bf80000000000000000000000000000"),
+      /* [116] */ new RandomConstant("fbc00000000000000000000000000001",
+      "97f00000000000000000000000000000"),
+      /* [117] */ new RandomConstant("f7800000000000000000000000000001",
+      "2fe00000000000000000000000000000"),
+      /* [118] */ new RandomConstant("ef000000000000000000000000000001",
+      "5fc00000000000000000000000000000"),
+      /* [119] */ new RandomConstant("de000000000000000000000000000001",
+      "bf800000000000000000000000000000"),
+      /* [120] */ new RandomConstant("bc000000000000000000000000000001",
+      "7f000000000000000000000000000000"),
+      /* [121] */ new RandomConstant("78000000000000000000000000000001",
+      "fe000000000000000000000000000000"),
+      /* [122] */ new RandomConstant("f0000000000000000000000000000001",
+      "fc000000000000000000000000000000"),
+      /* [123] */ new RandomConstant("e0000000000000000000000000000001",
+      "f8000000000000000000000000000000"),
+      /* [124] */ new RandomConstant("c0000000000000000000000000000001",
+      "f0000000000000000000000000000000"),
+      /* [125] */ new RandomConstant("80000000000000000000000000000001",
+      "e0000000000000000000000000000000"),
+      /* [126] */ new RandomConstant("00000000000000000000000000000001",
+      "c0000000000000000000000000000000"),
+      /* [127] */ new RandomConstant("00000000000000000000000000000001",
+      "80000000000000000000000000000000")};
+
+  /**
+   *  generate the random number that is "advance" steps
+   *  from an initial random number of 0.  This is done by
+   *  starting with 0, and then advancing the by the
+   *  appropriate powers of 2 of the linear congruential
+   *  generator.
+   */
+  public static Unsigned16 skipAhead(Unsigned16 advance) {
+    Unsigned16 result = new Unsigned16();
+    long          bit_map;
+
+    bit_map = advance.getLow8();
+    for (int i = 0; bit_map != 0 && i < 64; i++) {
+      if ((bit_map & (1L << i)) != 0) {
+        /* advance random number by f**(2**i) (x)
+         */
+        result.multiply(genArray[i].a);
+        result.add(genArray[i].c);
+        bit_map &= ~(1L << i);
+      }
+    }
+    bit_map = advance.getHigh8();
+    for (int i = 0; bit_map != 0 && i < 64; i++)
+    {
+      if ((bit_map & (1L << i)) != 0) {
+        /* advance random number by f**(2**(i + 64)) (x)
+         */
+        result.multiply(genArray[i+64].a);
+        result.add(genArray[i+64].c);
+        bit_map &= ~(1L << i);
+      }
+    }
+    return result;
+  }
+
+  /**
+   * Generate the next 16 byte random number.
+   */
+  public static void nextRand(Unsigned16 rand) {
+    /* advance the random number forward once using the linear congruential
+     * generator, and then return the new random number
+     */
+    rand.multiply(genArray[0].a);
+    rand.add(genArray[0].c);
+  }
+}
diff --git a/wayang-benchmark/src/main/java/org/apache/wayang/apps/terasort/Unsigned16.java b/wayang-benchmark/src/main/java/org/apache/wayang/apps/terasort/Unsigned16.java
new file mode 100644
index 0000000..ae3b99e
--- /dev/null
+++ b/wayang-benchmark/src/main/java/org/apache/wayang/apps/terasort/Unsigned16.java
@@ -0,0 +1,299 @@
+/**
+ * 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.wayang.apps.terasort;
+
+import java.io.DataInput;
+import java.io.DataOutput;
+import java.io.IOException;
+
+import org.apache.hadoop.io.Writable;
+
+/**
+ * An unsigned 16 byte integer class that supports addition, multiplication,
+ * and left shifts.
+ *
+ *  * code copied from <a href="https://github.com/apache/hadoop/blob/trunk/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop/examples/terasort/Unsigned16.java">Terasort Example</a>
+ */
+class Unsigned16 implements Writable {
+  private long hi8;
+  private long lo8;
+
+  public Unsigned16() {
+    hi8 = 0;
+    lo8 = 0;
+  }
+
+  public Unsigned16(long l) {
+    hi8 = 0;
+    lo8 = l;
+  }
+
+  public Unsigned16(Unsigned16 other) {
+    hi8 = other.hi8;
+    lo8 = other.lo8;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (o instanceof Unsigned16) {
+      Unsigned16 other = (Unsigned16) o;
+      return other.hi8 == hi8 && other.lo8 == lo8;
+    }
+    return false;
+  }
+
+  @Override
+  public int hashCode() {
+    return (int) lo8;
+  }
+
+  /**
+   * Parse a hex string
+   * @param s the hex string
+   */
+  public Unsigned16(String s) throws NumberFormatException {
+    set(s);
+  }
+
+  /**
+   * Set the number from a hex string
+   * @param s the number in hexadecimal
+   * @throws NumberFormatException if the number is invalid
+   */
+  public void set(String s) throws NumberFormatException {
+    hi8 = 0;
+    lo8 = 0;
+    final long lastDigit = 0xfl << 60;
+    for (int i = 0; i < s.length(); ++i) {
+      int digit = getHexDigit(s.charAt(i));
+      if ((lastDigit & hi8) != 0) {
+        throw new NumberFormatException(s + " overflowed 16 bytes");
+      }
+      hi8 <<= 4;
+      hi8 |= (lo8 & lastDigit) >>> 60;
+      lo8 <<= 4;
+      lo8 |= digit;
+    }
+  }
+
+  /**
+   * Set the number to a given long.
+   * @param l the new value, which is treated as an unsigned number
+   */
+  public void set(long l) {
+    lo8 = l;
+    hi8 = 0;
+  }
+
+  /**
+   * Map a hexadecimal character into a digit.
+   * @param ch the character
+   * @return the digit from 0 to 15
+   * @throws NumberFormatException
+   */
+  private static int getHexDigit(char ch) throws NumberFormatException {
+    if (ch >= '0' && ch <= '9') {
+      return ch - '0';
+    }
+    if (ch >= 'a' && ch <= 'f') {
+      return ch - 'a' + 10;
+    }
+    if (ch >= 'A' && ch <= 'F') {
+      return ch - 'A' + 10;
+    }
+    throw new NumberFormatException(ch + " is not a valid hex digit");
+  }
+
+  private static final Unsigned16 TEN = new Unsigned16(10);
+
+  public static Unsigned16 fromDecimal(String s) throws NumberFormatException {
+    Unsigned16 result = new Unsigned16();
+    Unsigned16 tmp = new Unsigned16();
+    for(int i=0; i < s.length(); i++) {
+      char ch = s.charAt(i);
+      if (ch < '0' || ch > '9') {
+        throw new NumberFormatException(ch + " not a valid decimal digit");
+      }
+      int digit = ch - '0';
+      result.multiply(TEN);
+      tmp.set(digit);
+      result.add(tmp);
+    }
+    return result;
+  }
+
+  /**
+   * Return the number as a hex string.
+   */
+  public String toString() {
+    if (hi8 == 0) {
+      return Long.toHexString(lo8);
+    } else {
+      StringBuilder result = new StringBuilder();
+      result.append(Long.toHexString(hi8));
+      String loString = Long.toHexString(lo8);
+      for(int i=loString.length(); i < 16; ++i) {
+        result.append('0');
+      }
+      result.append(loString);
+      return result.toString();
+    }
+  }
+
+  /**
+   * Get a given byte from the number.
+   * @param b the byte to get with 0 meaning the most significant byte
+   * @return the byte or 0 if b is outside of 0..15
+   */
+  public byte getByte(int b) {
+    if (b >= 0 && b < 16) {
+      if (b < 8) {
+        return (byte) (hi8 >> (56 - 8*b));
+      } else {
+        return (byte) (lo8 >> (120 - 8*b));
+      }
+    }
+    return 0;
+  }
+
+  /**
+   * Get the hexadecimal digit at the given position.
+   * @param p the digit position to get with 0 meaning the most significant
+   * @return the character or '0' if p is outside of 0..31
+   */
+  public char getHexDigit(int p) {
+    byte digit = getByte(p / 2);
+    if (p % 2 == 0) {
+      digit >>>= 4;
+    }
+    digit &= 0xf;
+    if (digit < 10) {
+      return (char) ('0' + digit);
+    } else {
+      return (char) ('A' + digit - 10);
+    }
+  }
+
+  /**
+   * Get the high 8 bytes as a long.
+   */
+  public long getHigh8() {
+    return hi8;
+  }
+
+  /**
+   * Get the low 8 bytes as a long.
+   */
+  public long getLow8() {
+    return lo8;
+  }
+
+  /**
+   * Multiple the current number by a 16 byte unsigned integer. Overflow is not
+   * detected and the result is the low 16 bytes of the result. The numbers 
+   * are divided into 32 and 31 bit chunks so that the product of two chucks
+   * fits in the unsigned 63 bits of a long.
+   * @param b the other number
+   */
+  void multiply(Unsigned16 b) {
+    // divide the left into 4 32 bit chunks
+    long[] left = new long[4];
+    left[0] = lo8 & 0xffffffffl;
+    left[1] = lo8 >>> 32;
+    left[2] = hi8 & 0xffffffffl;
+    left[3] = hi8 >>> 32;
+    // divide the right into 5 31 bit chunks
+    long[] right = new long[5];
+    right[0] = b.lo8 & 0x7fffffffl;
+    right[1] = (b.lo8 >>> 31) & 0x7fffffffl;
+    right[2] = (b.lo8 >>> 62) + ((b.hi8 & 0x1fffffffl) << 2);
+    right[3] = (b.hi8 >>> 29) & 0x7fffffffl;
+    right[4] = (b.hi8 >>> 60);
+    // clear the cur value
+    set(0);
+    Unsigned16 tmp = new Unsigned16();
+    for(int l=0; l < 4; ++l) {
+      for (int r=0; r < 5; ++r) {
+        long prod = left[l] * right[r];
+        if (prod != 0) {
+          int off = l*32 + r*31;
+          tmp.set(prod);
+          tmp.shiftLeft(off);
+          add(tmp);
+        }
+      }
+    }
+  }
+
+  /**
+   * Add the given number into the current number.
+   * @param b the other number
+   */
+  public void add(Unsigned16 b) {
+    long sumHi;
+    long sumLo;
+    long  reshibit, hibit0, hibit1;
+
+    sumHi = hi8 + b.hi8;
+
+    hibit0 = (lo8 & 0x8000000000000000L);
+    hibit1 = (b.lo8 & 0x8000000000000000L);
+    sumLo = lo8 + b.lo8;
+    reshibit = (sumLo & 0x8000000000000000L);
+    if ((hibit0 & hibit1) != 0 | ((hibit0 ^ hibit1) != 0 && reshibit == 0))
+      sumHi++;  /* add carry bit */
+    hi8 = sumHi;
+    lo8 = sumLo;
+  }
+
+  /**
+   * Shift the number a given number of bit positions. The number is the low
+   * order bits of the result.
+   * @param bits the bit positions to shift by
+   */
+  public void shiftLeft(int bits) {
+    if (bits != 0) {
+      if (bits < 64) {
+        hi8 <<= bits;
+        hi8 |= (lo8 >>> (64 - bits));
+        lo8 <<= bits;
+      } else if (bits < 128) {
+        hi8 = lo8 << (bits - 64);
+        lo8 = 0;
+      } else {
+        hi8 = 0;
+        lo8 = 0;
+      }
+    }
+  }
+
+  @Override
+  public void readFields(DataInput in) throws IOException {
+    hi8 = in.readLong();
+    lo8 = in.readLong();
+  }
+
+  @Override
+  public void write(DataOutput out) throws IOException {
+    out.writeLong(hi8);
+    out.writeLong(lo8);
+  }
+
+
+}
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraApp.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraApp.scala
new file mode 100644
index 0000000..f86a86e
--- /dev/null
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraApp.scala
@@ -0,0 +1,138 @@
+package org.apache.wayang.apps.terasort
+
+import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
+import org.apache.wayang.apps.wordcount.WordCountScala
+import org.apache.wayang.core.api.Configuration
+import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval
+import org.apache.wayang.core.util.fs.FileSystems
+
+import java.util.regex.Pattern
+import scala.util.matching.Regex
+
+object TeraApp extends ExperimentDescriptor {
+
+  val KEY_LEN = 10
+  val VALUE_LEN = 100
+  val RECORD_LEN : Int = KEY_LEN + VALUE_LEN
+
+  override def version = "0.1.0"
+
+  def main(args: Array[String]) {
+    // Parse args.
+    if (args.isEmpty) {
+      println(s"Usage: " +
+        s"${Parameters.experimentHelp} " +
+        s"<plugin(,plugin)*> " +
+        s"<task could be[generate|sort|validate]> " +
+        s"<file size ([0-9]+(.[0-9]+)?)([B|k|K|m|M|g|G|t|T])> " +
+        s"<partitions>" +
+        s"<input file if not value is null> " +
+        s"<output file if not value is null>")
+      sys.exit(1)
+    }
+    implicit val configuration = new Configuration
+    implicit val experiment = Parameters.createExperiment(args(0), this)
+    val plugins = Parameters.loadPlugins(args(1))
+    experiment.getSubject.addConfiguration("plugins", args(1))
+    val task = args(2)
+    experiment.getSubject.addConfiguration("task", task)
+    val fileSize = sizeStrToBytes(args(3))
+    experiment.getSubject.addConfiguration("fileSize", fileSize)
+    val partitions = args(4).toInt
+    experiment.getSubject.addConfiguration("partitions", partitions)
+    val input_file = if(args(5).equals("null")) null else args(5)
+    val output_file = if(args.length >= 5){ if(args(6).equals("null")) null else args(6) } else null
+    experiment.getSubject.addConfiguration("inputFile", input_file)
+    experiment.getSubject.addConfiguration("outputFile", output_file)
+
+    task match {
+      case "generate" => new TeraGen(plugins: _*).apply(output_file, fileSize, partitions)
+      case "sort" => null
+      case "validate" => null
+    }
+
+
+    // Run wordCount.
+//    val wordCount = new WordCountScala(plugins: _*)
+//    val words =
+//      (if (wordsPerLine != null) {
+//        wordCount(inputFile, wordsPerLine)
+//      } else {
+//        wordCount(inputFile)
+//      }).toSeq.sortBy(-_._2)
+//
+//    // Store experiment data.
+//    val inputFileSize = FileSystems.getFileSize(inputFile)
+//    if (inputFileSize.isPresent) experiment.getSubject.addConfiguration("inputSize", inputFileSize.getAsLong)
+//    ProfileDBHelper.store(experiment, configuration)
+//
+//    // Print results.
+//    println(s"Found ${words.size} words:")
+//    words.take(10).foreach(wc => println(s"${wc._2}x ${wc._1}"))
+//    if (words.size > 10) print(s"${words.size - 10} more...")
+
+
+  }
+
+  /**
+   * Convert the string format ([0-9]+(.[0-9]+)?)([B|k|K|m|M|g|G|t|T]) to the
+   * number on bytes
+   *
+   * B = Bytes
+   * k|K = Kilobytes (1_024 Bytes)
+   * m|M = Megabytes (1_048_576 Bytes)
+   * g|G = Gigabytes (1_073_741_824 Bytes)
+   * t|T = Terabytes (1_099_511_627_776 Bytes)
+   *
+   * @param str in the format
+   * @return number equivalent to the byte
+   */
+  def sizeStrToBytes(str: String): Long = {
+    val reg = "(\\d+(\\.\\d+)?)([B|k|K|m|M|g|G|t|T])"
+    val groups = Pattern.compile(reg).matcher(str)
+    groups.find()
+
+    val number_part:Double = groups.group(1).toDouble
+    val letter_part:String = groups.group(3)
+
+    val conversion = letter_part match {
+      case "B" => 1L //2^0
+      case "k" => 1024L //2^10
+      case "K" => 1024L //2^10
+      case "m" => 1048576L //2^20
+      case "M" => 1048576L //2^20
+      case "g" => 1073741824L //2^30
+      case "G" => 1073741824L //2^30
+      case "t" => 1099511627776L //2^40
+      case "T" => 1099511627776L //2^40
+      case _ => 1L //2^0
+    }
+    (number_part * conversion).toLong
+  }
+
+  /**
+   * take a number that represent a size on bytes return the human readable version
+   *
+   * @param size number that represent the size
+   * @return human readable version of the size
+   */
+  def sizeToSizeStr(size: Long): String = {
+    val kbScale: Long = 1024L
+    val mbScale: Long = 1024L * kbScale
+    val gbScale: Long = 1024L * mbScale
+    val tbScale: Long = 1024L * gbScale
+
+    if (size > tbScale) {
+      size / tbScale + "TB"
+    } else if (size > gbScale) {
+      size / gbScale  + "GB"
+    } else if (size > mbScale) {
+      size / mbScale + "MB"
+    } else if (size > kbScale) {
+      size / kbScale + "KB"
+    } else {
+      size + "B"
+    }
+  }
+
+}
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraGen.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraGen.scala
new file mode 100644
index 0000000..89ac49d
--- /dev/null
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraGen.scala
@@ -0,0 +1,111 @@
+package org.apache.wayang.apps.terasort
+
+import org.apache.wayang.api.PlanBuilder
+import org.apache.wayang.commons.util.profiledb.model.Experiment
+import org.apache.wayang.core.api.{Configuration, WayangContext}
+import org.apache.wayang.core.plugin.Plugin
+
+class TeraGen(@transient plugins: Plugin*) extends Serializable {
+
+  def apply(output_url: String, file_size: Long, partitions: Int)
+           (implicit configuration: Configuration, experiment: Experiment) = {
+    val wayangCtx = new WayangContext(configuration)
+    plugins.foreach(wayangCtx.register)
+    val planBuilder = new PlanBuilder(wayangCtx)
+
+    val parts = partitions
+    val recordsPerPartition = file_size / TeraApp.VALUE_LEN / parts.toLong
+    val numRecords = recordsPerPartition * parts.toLong
+
+    assert(recordsPerPartition < Int.MaxValue, s"records per partition > ${Int.MaxValue}")
+
+    println("===========================================================================")
+    println("===========================================================================")
+    println(s"Input size: $file_size")
+    println(s"Total number of records: $numRecords")
+    println(s"Number of output partitions: $parts")
+    println("Number of records/output partition: " + (numRecords / parts))
+    println("===========================================================================")
+    println("===========================================================================")
+
+    planBuilder
+      .withJobName(s"Terasort generate ${file_size}")
+      .withExperiment(experiment)
+      .withUdfJarsOf(this.getClass)
+      .loadCollection(1 to parts)
+      .flatMap( index => {
+        val one = new Unsigned16(1)
+        val firstRecordNumber = new Unsigned16(index.toLong * recordsPerPartition.toLong)
+        val recordsToGenerate = new Unsigned16(recordsPerPartition)
+
+        val recordNumber = new Unsigned16(firstRecordNumber)
+        val lastRecordNumber = new Unsigned16(firstRecordNumber)
+        lastRecordNumber.add(recordsToGenerate)
+
+        val rand = Random16.skipAhead(firstRecordNumber)
+
+        Iterator.tabulate(recordsPerPartition.toInt) { offset =>
+          val rowBytes: Array[Byte] = new Array[Byte](TeraApp.RECORD_LEN)
+          val key = new Array[Byte](TeraApp.KEY_LEN)
+          val value = new Array[Byte](TeraApp.VALUE_LEN)
+          Random16.nextRand(rand)
+          generateRecord(rowBytes, rand, recordNumber)
+          recordNumber.add(one)
+          rowBytes.copyToArray(key, 0, TeraApp.KEY_LEN)
+          rowBytes.takeRight(TeraApp.VALUE_LEN).copyToArray(value, 0, TeraApp.VALUE_LEN)
+          (key, value)
+        }.toStream
+      })
+      .writeObjectFile(output_url)
+  }
+
+  /**
+   * Generate a binary record suitable for all sort benchmarks except PennySort.
+   *
+   * @param recBuf record to return
+   */
+  def generateRecord(recBuf: Array[Byte], rand: Unsigned16, recordNumber: Unsigned16): Unit = {
+    // Generate the 10-byte key using the high 10 bytes of the 128-bit random number
+    var i = 0
+    while (i < 10) {
+      recBuf(i) = rand.getByte(i)
+      i += 1
+    }
+
+    // Add 2 bytes of "break"
+    recBuf(10) = 0x00.toByte
+    recBuf(11) = 0x11.toByte
+
+    // Convert the 128-bit record number to 32 bits of ascii hexadecimal
+    // as the next 32 bytes of the record.
+    i = 0
+    while (i < 32) {
+      recBuf(12 + i) = recordNumber.getHexDigit(i).toByte
+      i += 1
+    }
+
+    // Add 4 bytes of "break" data
+    recBuf(44) = 0x88.toByte
+    recBuf(45) = 0x99.toByte
+    recBuf(46) = 0xAA.toByte
+    recBuf(47) = 0xBB.toByte
+
+    // Add 48 bytes of filler based on low 48 bits of random number
+    i = 0
+    while (i < 12) {
+      val v = rand.getHexDigit(20 + i).toByte
+      recBuf(48 + i * 4) = v
+      recBuf(49 + i * 4) = v
+      recBuf(50 + i * 4) = v
+      recBuf(51 + i * 4) = v
+      i += 1
+    }
+
+    // Add 4 bytes of "break" data
+    recBuf(96) = 0xCC.toByte
+    recBuf(97) = 0xDD.toByte
+    recBuf(98) = 0xEE.toByte
+    recBuf(99) = 0xFF.toByte
+  }
+
+}

[incubator-wayang] 09/11: [WAYANG-34] imports optimization and refactor

Posted by be...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bertty pushed a commit to branch WAYANG-34
in repository https://gitbox.apache.org/repos/asf/incubator-wayang.git

commit 97033d9db1a9cfafa3a0d77ef6a9f847c50d4cef
Author: Bertty Contreras-Rojas <be...@scalytics.io>
AuthorDate: Mon Sep 27 16:55:55 2021 +0200

    [WAYANG-34] imports optimization and refactor
    
    Signed-off-by: bertty <be...@gmail.com>
---
 .../apache/wayang/api/python/PythonAPITest.java    |  4 +-
 .../scala/org/apache/wayang/api/DataQuanta.scala   |  5 ++-
 .../org/apache/wayang/api/DataQuantaBuilder.scala  |  1 +
 .../org/apache/wayang/api/JavaPlanBuilder.scala    |  1 +
 .../java/org/apache/wayang/api/JavaApiTest.java    | 41 ++++++++++-----------
 .../test/scala/org/apache/wayang/api/ApiTest.scala |  2 +-
 wayang-benchmark/pom.xml                           |  5 ---
 .../java/org/apache/wayang/apps/sgd/SGDImpl.java   |  9 ++---
 .../apache/wayang/apps/sgd/SGDImprovedImpl.java    | 13 +++----
 .../java/org/apache/wayang/apps/tpch/Main.java     |  7 +++-
 .../org/apache/wayang/apps/wordcount/Main.java     | 21 ++++++-----
 .../apps/benchmark/OptimizerScalabilityTest.scala  |  1 -
 .../wayang/apps/benchmark/PlanGenerator.scala      |  2 +-
 .../org/apache/wayang/apps/crocopr/CrocoPR.scala   |  3 +-
 .../org/apache/wayang/apps/kmeans/Kmeans.scala     |  5 +--
 .../wayang/apps/kmeans/postgres/Kmeans.scala       |  5 +--
 .../scala/org/apache/wayang/apps/sgd/SGD.scala     |  1 -
 .../wayang/apps/simwords/ScrubFunction.scala       |  3 +-
 .../simwords/SelectNearestCentroidFunction.scala   |  2 +-
 .../org/apache/wayang/apps/simwords/SimWords.scala |  3 +-
 .../apache/wayang/apps/simwords/Word2NVec.scala    |  3 +-
 .../scala/org/apache/wayang/apps/sindy/Sindy.scala |  8 ++--
 .../scala/org/apache/wayang/apps/tpch/TpcH.scala   | 13 +++++--
 .../apache/wayang/apps/tpch/queries/Query1.scala   |  2 +-
 .../wayang/apps/tpch/queries/Query3Database.scala  |  3 +-
 .../wayang/apps/tpch/queries/Query3File.scala      |  3 +-
 .../wayang/apps/tpch/queries/Query3Hybrid.scala    |  3 +-
 .../org/apache/wayang/apps/util/Parameters.scala   |  2 +-
 .../apache/wayang/apps/util/ProfileDBHelper.scala  |  3 --
 .../wayang/apps/wordcount/WordCountScala.scala     |  3 +-
 .../wayang/apps/tpch/data/LineItemTupleTest.java   |  5 +--
 .../org/apache/wayang/apps/kmeans/KmeansTest.scala |  4 +-
 .../apache/wayang/basic/channels/FileChannel.java  | 15 ++++----
 .../java/org/apache/wayang/basic/data/Record.java  |  5 +--
 .../basic/function/ProjectionDescriptor.java       |  9 ++---
 .../wayang/basic/mapping/GlobalReduceMapping.java  |  5 +--
 .../org/apache/wayang/basic/mapping/Mappings.java  |  3 +-
 .../basic/mapping/MaterializedGroupByMapping.java  |  5 +--
 .../wayang/basic/mapping/PageRankMapping.java      |  9 ++---
 .../wayang/basic/mapping/ReduceByMapping.java      |  5 +--
 .../apache/wayang/basic/mapping/RepeatMapping.java |  7 ++--
 .../wayang/basic/operators/CartesianOperator.java  |  3 +-
 .../wayang/basic/operators/CoGroupOperator.java    |  3 +-
 .../wayang/basic/operators/CollectionSource.java   |  7 ++--
 .../wayang/basic/operators/CountOperator.java      |  3 +-
 .../wayang/basic/operators/DistinctOperator.java   |  3 +-
 .../wayang/basic/operators/DoWhileOperator.java    |  9 ++---
 .../wayang/basic/operators/FilterOperator.java     |  3 +-
 .../wayang/basic/operators/FlatMapOperator.java    |  3 +-
 .../operators/GlobalMaterializedGroupOperator.java |  3 +-
 .../basic/operators/GlobalReduceOperator.java      |  3 +-
 .../wayang/basic/operators/IntersectOperator.java  |  3 +-
 .../wayang/basic/operators/JoinOperator.java       |  3 +-
 .../wayang/basic/operators/LocalCallbackSink.java  |  7 ++--
 .../wayang/basic/operators/LoopOperator.java       |  9 ++---
 .../apache/wayang/basic/operators/MapOperator.java |  3 +-
 .../basic/operators/MapPartitionsOperator.java     |  3 +-
 .../operators/MaterializedGroupByOperator.java     |  3 +-
 .../wayang/basic/operators/ObjectFileSink.java     |  4 --
 .../wayang/basic/operators/PageRankOperator.java   |  3 +-
 .../wayang/basic/operators/ReduceByOperator.java   |  3 +-
 .../wayang/basic/operators/ReduceOperator.java     |  3 +-
 .../wayang/basic/operators/RepeatOperator.java     |  9 ++---
 .../wayang/basic/operators/SampleOperator.java     | 11 +++---
 .../wayang/basic/operators/SortOperator.java       |  3 +-
 .../wayang/basic/operators/TextFileSink.java       |  3 +-
 .../wayang/basic/operators/TextFileSource.java     | 17 ++++-----
 .../wayang/basic/operators/UnionAllOperator.java   |  3 +-
 .../wayang/basic/operators/ZipWithIdOperator.java  |  3 +-
 .../apache/wayang/basic/plugin/WayangBasic.java    |  7 ++--
 .../wayang/basic/plugin/WayangBasicGraph.java      |  5 +--
 .../org/apache/wayang/basic/types/RecordType.java  |  5 +--
 .../basic/function/ProjectionDescriptorTest.java   |  7 ++--
 .../wayang/basic/mapping/ReduceByMappingTest.java  |  6 +--
 .../operators/MaterializedGroupByOperatorTest.java |  5 +--
 .../wayang/basic/operators/TextFileSourceTest.java | 30 +++++++--------
 .../apache/wayang/basic/types/RecordTypeTest.java  |  4 +-
 .../org/apache/wayang/core/api/Configuration.java  | 39 ++++++++++----------
 .../main/java/org/apache/wayang/core/api/Job.java  | 27 +++++++-------
 .../org/apache/wayang/core/api/WayangContext.java  |  4 +-
 .../core/api/configuration/CollectionProvider.java |  5 +--
 .../configuration/ExplicitCollectionProvider.java  |  7 ++--
 .../FunctionalCollectionProvider.java              |  3 +-
 .../configuration/FunctionalKeyValueProvider.java  |  3 +-
 .../api/configuration/FunctionalValueProvider.java |  3 +-
 .../core/api/configuration/KeyValueProvider.java   |  7 ++--
 .../configuration/MapBasedKeyValueProvider.java    |  5 +--
 .../core/api/configuration/ValueProvider.java      |  7 ++--
 .../core/function/AggregationDescriptor.java       |  3 +-
 .../wayang/core/function/ConsumerDescriptor.java   |  3 +-
 .../wayang/core/function/ExecutionContext.java     |  3 +-
 .../wayang/core/function/FlatMapDescriptor.java    |  5 +--
 .../wayang/core/function/FunctionDescriptor.java   |  9 ++---
 .../core/function/MapPartitionsDescriptor.java     |  5 +--
 .../wayang/core/function/PredicateDescriptor.java  |  3 +-
 .../wayang/core/function/ReduceDescriptor.java     |  3 +-
 .../core/function/TransformationDescriptor.java    |  3 +-
 .../wayang/core/mapping/OperatorPattern.java       |  7 ++--
 .../wayang/core/mapping/PlanTransformation.java    | 13 +++----
 .../core/mapping/ReplacementSubplanFactory.java    |  5 +--
 .../apache/wayang/core/mapping/SubplanMatch.java   |  5 +--
 .../apache/wayang/core/mapping/SubplanPattern.java | 15 ++++----
 .../wayang/core/monitor/DisabledMonitor.java       |  3 +-
 .../apache/wayang/core/monitor/FileMonitor.java    |  7 ++--
 .../apache/wayang/core/monitor/HttpMonitor.java    |  3 +-
 .../org/apache/wayang/core/monitor/Monitor.java    |  3 +-
 .../apache/wayang/core/monitor/ZeroMQMonitor.java  |  3 +-
 .../optimizer/AggregateOptimizationContext.java    |  5 +--
 .../core/optimizer/DefaultOptimizationContext.java | 13 +++----
 .../wayang/core/optimizer/OptimizationContext.java | 25 ++++++-------
 .../wayang/core/optimizer/OptimizationUtils.java   | 11 +++---
 .../optimizer/ProbabilisticIntervalEstimate.java   |  3 +-
 .../wayang/core/optimizer/SanityChecker.java       | 11 +++---
 .../AggregatingCardinalityEstimator.java           |  5 +--
 .../CardinalityEstimationTraversal.java            | 21 +++++------
 .../cardinality/CardinalityEstimatorManager.java   |  9 +++--
 .../optimizer/cardinality/CardinalityPusher.java   |  9 ++---
 .../cardinality/DefaultCardinalityEstimator.java   |  5 +--
 .../LoopHeadAlternativeCardinalityPusher.java      |  7 ++--
 .../cardinality/LoopSubplanCardinalityPusher.java  | 11 +++---
 .../OperatorAlternativeCardinalityPusher.java      |  5 +--
 .../cardinality/SubplanCardinalityPusher.java      | 11 +++---
 .../SwitchForwardCardinalityEstimator.java         |  2 +-
 .../core/optimizer/channels/ChannelConversion.java |  5 +--
 .../optimizer/channels/ChannelConversionGraph.java | 35 +++++++++---------
 .../channels/DefaultChannelConversion.java         |  7 ++--
 .../core/optimizer/costs/DefaultLoadEstimator.java |  7 ++--
 .../core/optimizer/costs/EstimationContext.java    |  5 +--
 .../optimizer/costs/IntervalLoadEstimator.java     |  7 ++--
 .../wayang/core/optimizer/costs/LoadEstimator.java |  3 +-
 .../wayang/core/optimizer/costs/LoadProfile.java   |  5 +--
 .../core/optimizer/costs/LoadProfileEstimator.java |  3 +-
 .../optimizer/costs/LoadProfileEstimators.java     | 27 +++++++-------
 .../costs/NestableLoadProfileEstimator.java        |  7 ++--
 .../optimizer/costs/SimpleEstimationContext.java   |  5 +--
 .../optimizer/enumeration/ExecutionTaskFlow.java   | 19 +++++-----
 .../enumeration/ExecutionTaskFlowCompiler.java     | 23 ++++++------
 .../enumeration/LatentOperatorPruningStrategy.java | 13 +++----
 .../core/optimizer/enumeration/LoopEnumerator.java | 13 +++----
 .../optimizer/enumeration/LoopImplementation.java  |  7 ++--
 .../optimizer/enumeration/PlanEnumeration.java     | 29 +++++++--------
 .../core/optimizer/enumeration/PlanEnumerator.java | 43 +++++++++++-----------
 .../optimizer/enumeration/PlanImplementation.java  | 39 ++++++++++----------
 .../enumeration/RandomPruningStrategy.java         |  3 +-
 .../enumeration/StageAssignmentTraversal.java      | 27 +++++++-------
 .../optimizer/enumeration/TopKPruningStrategy.java |  3 +-
 .../wayang/core/plan/executionplan/Channel.java    | 29 +++++++--------
 .../core/plan/executionplan/ExecutionPlan.java     | 11 +++---
 .../core/plan/executionplan/ExecutionStage.java    |  9 ++---
 .../plan/executionplan/ExecutionStageLoop.java     |  5 +--
 .../core/plan/executionplan/PlatformExecution.java |  5 +--
 .../core/plan/wayangplan/ElementaryOperator.java   |  3 +-
 .../plan/wayangplan/EstimationContextProperty.java |  3 +-
 .../core/plan/wayangplan/ExecutionOperator.java    | 13 +++----
 .../wayang/core/plan/wayangplan/InputSlot.java     |  3 +-
 .../core/plan/wayangplan/LoopHeadAlternative.java  |  7 ++--
 .../core/plan/wayangplan/LoopHeadOperator.java     |  3 +-
 .../wayang/core/plan/wayangplan/LoopIsolator.java  |  7 ++--
 .../wayang/core/plan/wayangplan/LoopSubplan.java   |  7 ++--
 .../wayang/core/plan/wayangplan/Operator.java      | 15 ++++----
 .../core/plan/wayangplan/OperatorAlternative.java  | 11 +++---
 .../wayang/core/plan/wayangplan/OperatorBase.java  | 15 ++++----
 .../core/plan/wayangplan/OperatorContainer.java    |  9 ++---
 .../core/plan/wayangplan/OperatorContainers.java   |  3 +-
 .../wayang/core/plan/wayangplan/OutputSlot.java    |  3 +-
 .../wayang/core/plan/wayangplan/PlanTraversal.java |  5 +--
 .../apache/wayang/core/plan/wayangplan/Slot.java   |  3 +-
 .../wayang/core/plan/wayangplan/SlotMapping.java   | 10 ++---
 .../wayang/core/plan/wayangplan/Subplan.java       | 11 +++---
 .../wayang/core/plan/wayangplan/WayangPlan.java    | 15 ++++----
 .../traversal/AbstractTopologicalTraversal.java    | 11 +++---
 .../core/platform/AbstractChannelInstance.java     |  5 +--
 .../wayang/core/platform/AtomicExecutionGroup.java |  3 +-
 .../core/platform/CardinalityBreakpoint.java       |  4 +-
 .../wayang/core/platform/ChannelDescriptor.java    |  5 +--
 .../wayang/core/platform/ChannelInstance.java      |  3 +-
 .../core/platform/ConjunctiveBreakpoint.java       |  5 +--
 .../core/platform/CrossPlatformExecutor.java       | 25 +++++++------
 .../wayang/core/platform/ExecutionState.java       |  3 +-
 .../wayang/core/platform/ExecutorTemplate.java     | 17 ++++-----
 .../apache/wayang/core/platform/FixBreakpoint.java |  7 ++--
 .../org/apache/wayang/core/platform/Junction.java  | 11 +++---
 .../wayang/core/platform/PartialExecution.java     |  9 ++---
 .../wayang/core/platform/PushExecutorTemplate.java | 21 +++++------
 .../platform/lineage/ExecutionLineageNode.java     |  5 +--
 .../platform/lineage/LazyExecutionLineageNode.java |  7 ++--
 .../apache/wayang/core/plugin/DynamicPlugin.java   | 21 +++++------
 .../java/org/apache/wayang/core/plugin/Plugin.java |  5 +--
 .../core/profiling/CardinalityRepository.java      | 19 +++++-----
 .../apache/wayang/core/profiling/ExecutionLog.java | 19 +++++-----
 .../core/profiling/ExecutionPlanMeasurement.java   | 11 +++---
 .../profiling/FullInstrumentationStrategy.java     |  3 +-
 .../org/apache/wayang/core/types/DataSetType.java  |  3 +-
 .../wayang/core/types/DataUnitGroupType.java       |  3 +-
 .../apache/wayang/core/util/JsonSerializable.java  |  3 +-
 .../apache/wayang/core/util/JsonSerializables.java |  4 +-
 .../org/apache/wayang/core/util/JuelUtils.java     |  9 ++---
 .../java/org/apache/wayang/core/util/LruCache.java |  3 +-
 .../apache/wayang/core/util/ReflectionUtils.java   | 11 +++---
 .../apache/wayang/core/util/WayangCollections.java |  3 +-
 .../apache/wayang/core/util/fs/FileSystems.java    |  9 ++---
 .../org/apache/wayang/core/util/fs/FileUtils.java  |  5 +--
 .../wayang/core/util/fs/HadoopFileSystem.java      | 15 ++++----
 .../wayang/core/util/fs/LocalFileSystem.java       |  7 ++--
 .../apache/wayang/core/util/mathex/Context.java    |  3 +-
 .../wayang/core/util/mathex/DefaultContext.java    |  3 +-
 .../wayang/core/util/mathex/ExpressionBuilder.java |  5 +--
 .../core/util/mathex/model/CompiledFunction.java   |  5 +--
 .../core/util/mathex/model/NamedFunction.java      |  7 ++--
 .../test/java/org/apache/wayang/core/SlotTest.java |  2 +-
 .../wayang/core/mapping/OperatorPatternTest.java   |  2 +-
 .../core/mapping/PlanTransformationTest.java       |  6 +--
 .../wayang/core/mapping/SubplanPatternTest.java    |  9 ++---
 .../wayang/core/mapping/test/TestSinkMapping.java  |  5 +--
 .../AggregatingCardinalityEstimatorTest.java       | 13 +++----
 .../DefaultCardinalityEstimatorTest.java           | 13 +++----
 .../LoopSubplanCardinalityPusherTest.java          |  6 +--
 .../cardinality/SubplanCardinalityPusherTest.java  |  6 +--
 .../channels/ChannelConversionGraphTest.java       | 11 +++---
 .../costs/NestableLoadProfileEstimatorTest.java    |  7 ++--
 .../enumeration/StageAssignmentTraversalTest.java  |  7 ++--
 .../core/plan/wayangplan/LoopIsolatorTest.java     |  9 ++---
 .../wayang/core/plan/wayangplan/OperatorTest.java  |  7 ++--
 .../core/plan/wayangplan/SlotMappingTest.java      | 11 +++---
 .../plan/wayangplan/test/TestFilterOperator.java   |  3 +-
 .../wayang/core/plan/wayangplan/test/TestJoin.java |  3 +-
 .../core/plan/wayangplan/test/TestLoopHead.java    |  7 ++--
 .../core/plan/wayangplan/test/TestMapOperator.java |  3 +-
 .../wayang/core/plan/wayangplan/test/TestSink.java |  3 +-
 .../core/plan/wayangplan/test/TestSource.java      |  3 +-
 .../wayang/core/platform/PartialExecutionTest.java | 15 ++++----
 .../wayang/core/plugin/DynamicPluginTest.java      | 15 ++++----
 .../wayang/core/test/DummyExecutionOperator.java   |  7 ++--
 .../org/apache/wayang/core/test/MockFactory.java   | 11 +++---
 .../core/util/ConsumerIteratorAdapterTest.java     |  9 ++---
 .../wayang/core/util/CrossProductIterableTest.java |  5 +--
 .../wayang/core/util/LimitedInputStreamTest.java   |  5 +--
 .../wayang/core/util/ReflectionUtilsTest.java      |  5 +--
 .../wayang/core/util/WayangCollectionsTest.java    |  5 +--
 .../core/util/mathex/ExpressionBuilderTest.java    |  7 ++--
 .../wayang/core/util/mathex/ExpressionTest.java    |  9 ++---
 .../wayang/commons/util/profiledb/ProfileDB.java   | 13 ++++---
 .../profiledb/json/MeasurementDeserializer.java    |  3 +-
 .../util/profiledb/json/MeasurementSerializer.java |  3 +-
 .../model/measurement/TimeMeasurement.java         |  5 +--
 .../util/profiledb/storage/FileStorage.java        |  8 ++--
 .../util/profiledb/storage/JDBCStorage.java        |  3 +-
 .../commons/util/profiledb/storage/Storage.java    | 16 ++++++--
 .../commons/util/profiledb/ProfileDBTest.java      | 18 +++++----
 .../measurement/TestMemoryMeasurement.java         |  3 +-
 .../profiledb/measurement/TestTimeMeasurement.java |  5 +--
 .../wayang/flink/channels/ChannelConversions.java  |  5 +--
 .../wayang/flink/channels/DataSetChannel.java      |  3 +-
 .../wayang/flink/compiler/FunctionCompiler.java    |  7 ++--
 .../wayang/flink/compiler/KeySelectorDistinct.java |  3 +-
 .../wayang/flink/compiler/KeySelectorFunction.java |  5 +--
 .../flink/compiler/OutputFormatConsumer.java       |  5 +--
 .../flink/compiler/WayangFileOutputFormat.java     | 17 ++++-----
 .../flink/compiler/criterion/WayangAggregator.java |  5 +--
 .../criterion/WayangConvergenceCriterion.java      |  5 +--
 .../flink/compiler/criterion/WayangListValue.java  |  3 +-
 .../flink/compiler/criterion/WayangValue.java      |  7 ++--
 .../flink/execution/FlinkExecutionContext.java     |  5 +--
 .../wayang/flink/execution/FlinkExecutor.java      |  7 ++--
 .../wayang/flink/mapping/CartesianMapping.java     |  5 +--
 .../wayang/flink/mapping/CoGroupMapping.java       |  5 +--
 .../flink/mapping/CollectionSourceMapping.java     |  5 +--
 .../apache/wayang/flink/mapping/CountMapping.java  |  5 +--
 .../wayang/flink/mapping/DistinctMapping.java      |  5 +--
 .../wayang/flink/mapping/DoWhileMapping.java       |  5 +--
 .../apache/wayang/flink/mapping/FilterMapping.java |  5 +--
 .../wayang/flink/mapping/FlatMapMapping.java       |  5 +--
 .../mapping/GlobalMaterializedGroupMapping.java    |  5 +--
 .../wayang/flink/mapping/GlobalReduceMapping.java  |  5 +--
 .../wayang/flink/mapping/GroupByMapping.java       |  5 +--
 .../wayang/flink/mapping/IntersectMapping.java     |  5 +--
 .../apache/wayang/flink/mapping/JoinMapping.java   |  5 +--
 .../flink/mapping/LocalCallbackSinkMapping.java    |  5 +--
 .../apache/wayang/flink/mapping/LoopMapping.java   |  5 +--
 .../apache/wayang/flink/mapping/MapMapping.java    |  5 +--
 .../wayang/flink/mapping/MapPartitionsMapping.java |  5 +--
 .../org/apache/wayang/flink/mapping/Mappings.java  |  3 +-
 .../flink/mapping/MaterializedGroupByMapping.java  |  5 +--
 .../flink/mapping/ObjectFileSourceMapping.java     |  2 -
 .../wayang/flink/mapping/PageRankMapping.java      |  5 +--
 .../wayang/flink/mapping/ReduceByMapping.java      |  5 +--
 .../apache/wayang/flink/mapping/RepeatMapping.java |  5 +--
 .../apache/wayang/flink/mapping/SampleMapping.java |  5 +--
 .../apache/wayang/flink/mapping/SortMapping.java   |  5 +--
 .../wayang/flink/mapping/TextFileSinkMapping.java  |  5 +--
 .../flink/mapping/TextFileSourceMapping.java       |  5 +--
 .../wayang/flink/mapping/UnionAllMapping.java      |  5 +--
 .../wayang/flink/mapping/ZipWithIdMapping.java     |  5 +--
 .../flink/operators/FlinkCartesianOperator.java    |  9 ++---
 .../flink/operators/FlinkCoGroupOperator.java      | 11 +++---
 .../flink/operators/FlinkCollectionSink.java       |  9 ++---
 .../flink/operators/FlinkCollectionSource.java     |  7 ++--
 .../wayang/flink/operators/FlinkCountOperator.java |  9 ++---
 .../flink/operators/FlinkDistinctOperator.java     |  9 ++---
 .../flink/operators/FlinkDoWhileOperator.java      |  9 ++---
 .../flink/operators/FlinkExecutionOperator.java    |  5 +--
 .../flink/operators/FlinkFilterOperator.java       | 11 +++---
 .../flink/operators/FlinkFlatMapOperator.java      | 11 +++---
 .../FlinkGlobalMaterializedGroupOperator.java      | 11 +++---
 .../flink/operators/FlinkGlobalReduceOperator.java | 11 +++---
 .../flink/operators/FlinkGroupByOperator.java      | 13 +++----
 .../flink/operators/FlinkIntersectOperator.java    |  7 ++--
 .../wayang/flink/operators/FlinkJoinOperator.java  | 11 +++---
 .../flink/operators/FlinkLocalCallbackSink.java    |  9 ++---
 .../wayang/flink/operators/FlinkLoopOperator.java  |  7 ++--
 .../wayang/flink/operators/FlinkMapOperator.java   |  9 ++---
 .../operators/FlinkMapPartitionsOperator.java      | 11 +++---
 .../FlinkMaterializedGroupByOperator.java          | 11 +++---
 .../flink/operators/FlinkObjectFileSink.java       |  8 ++--
 .../flink/operators/FlinkObjectFileSource.java     | 12 +++---
 .../flink/operators/FlinkPageRankOperator.java     | 15 ++++----
 .../flink/operators/FlinkReduceByOperator.java     | 11 +++---
 .../operators/FlinkRepeatExpandedOperator.java     |  7 ++--
 .../flink/operators/FlinkRepeatOperator.java       |  7 ++--
 .../flink/operators/FlinkSampleOperator.java       | 15 ++++----
 .../wayang/flink/operators/FlinkSortOperator.java  |  9 ++---
 .../wayang/flink/operators/FlinkTextFileSink.java  |  9 ++---
 .../flink/operators/FlinkTextFileSource.java       |  7 ++--
 .../wayang/flink/operators/FlinkTsvFileSink.java   |  9 ++---
 .../flink/operators/FlinkUnionAllOperator.java     |  7 ++--
 .../flink/operators/FlinkZipWithIdOperator.java    |  9 ++---
 .../wayang/flink/platform/FlinkPlatform.java       | 13 +++----
 .../wayang/flink/plugin/FlinkBasicPlugin.java      |  5 +--
 .../wayang/flink/plugin/FlinkConversionPlugin.java |  7 ++--
 .../wayang/giraph/Algorithm/PageRankAlgorithm.java |  5 +--
 .../giraph/Algorithm/PageRankParameters.java       |  5 +--
 .../wayang/giraph/channels/ChannelConversions.java |  4 +-
 .../wayang/giraph/execution/GiraphExecutor.java    | 14 +++++--
 .../apache/wayang/giraph/mappings/Mappings.java    |  3 +-
 .../wayang/giraph/mappings/PageRankMapping.java    | 13 ++++---
 .../giraph/operators/GiraphExecutionOperator.java  |  3 +-
 .../giraph/operators/GiraphPageRankOperator.java   | 16 ++++----
 .../wayang/giraph/platform/GiraphPlatform.java     |  1 -
 .../apache/wayang/giraph/plugin/GiraphPlugin.java  |  7 ++--
 .../operators/GiraphPagaRankOperatorTest.java      | 12 +++---
 .../wayang/java/channels/ChannelConversions.java   |  5 +--
 .../wayang/java/channels/CollectionChannel.java    |  5 +--
 .../wayang/java/channels/JavaChannelInstance.java  |  3 +-
 .../apache/wayang/java/channels/StreamChannel.java |  7 ++--
 .../wayang/java/compiler/FunctionCompiler.java     |  7 ++--
 .../java/execution/JavaExecutionContext.java       |  3 +-
 .../apache/wayang/java/execution/JavaExecutor.java |  7 ++--
 .../wayang/java/mapping/CartesianMapping.java      |  5 +--
 .../apache/wayang/java/mapping/CoGroupMapping.java |  5 +--
 .../java/mapping/CollectionSourceMapping.java      |  5 +--
 .../apache/wayang/java/mapping/CountMapping.java   |  5 +--
 .../wayang/java/mapping/DistinctMapping.java       |  5 +--
 .../apache/wayang/java/mapping/DoWhileMapping.java |  5 +--
 .../apache/wayang/java/mapping/FilterMapping.java  |  5 +--
 .../apache/wayang/java/mapping/FlatMapMapping.java |  5 +--
 .../mapping/GlobalMaterializedGroupMapping.java    |  5 +--
 .../wayang/java/mapping/GlobalReduceMapping.java   |  5 +--
 .../wayang/java/mapping/IntersectMapping.java      |  5 +--
 .../apache/wayang/java/mapping/JoinMapping.java    |  5 +--
 .../java/mapping/LocalCallbackSinkMapping.java     |  5 +--
 .../apache/wayang/java/mapping/LoopMapping.java    |  5 +--
 .../org/apache/wayang/java/mapping/MapMapping.java |  5 +--
 .../wayang/java/mapping/MapPartitionsMapping.java  |  5 +--
 .../org/apache/wayang/java/mapping/Mappings.java   |  5 +--
 .../java/mapping/MaterializedGroupByMapping.java   |  5 +--
 .../wayang/java/mapping/ObjectFileSinkMapping.java |  2 -
 .../java/mapping/ObjectFileSourceMapping.java      |  2 -
 .../wayang/java/mapping/ReduceByMapping.java       |  5 +--
 .../apache/wayang/java/mapping/RepeatMapping.java  |  5 +--
 .../apache/wayang/java/mapping/SampleMapping.java  |  5 +--
 .../apache/wayang/java/mapping/SortMapping.java    |  5 +--
 .../wayang/java/mapping/TextFileSinkMapping.java   |  5 +--
 .../wayang/java/mapping/TextFileSourceMapping.java |  5 +--
 .../wayang/java/mapping/UnionAllMapping.java       |  5 +--
 .../wayang/java/mapping/ZipWithIdMapping.java      |  5 +--
 .../wayang/java/mapping/graph/PageRankMapping.java |  5 +--
 .../java/operators/JavaCartesianOperator.java      | 15 ++++----
 .../wayang/java/operators/JavaCoGroupOperator.java | 21 +++++------
 .../wayang/java/operators/JavaCollectOperator.java | 11 +++---
 .../java/operators/JavaCollectionSource.java       |  7 ++--
 .../wayang/java/operators/JavaCountOperator.java   |  9 ++---
 .../java/operators/JavaDistinctOperator.java       |  9 ++---
 .../wayang/java/operators/JavaDoWhileOperator.java | 13 +++----
 .../java/operators/JavaExecutionOperator.java      |  5 +--
 .../wayang/java/operators/JavaFilterOperator.java  | 13 +++----
 .../wayang/java/operators/JavaFlatMapOperator.java | 19 +++++-----
 .../JavaGlobalMaterializedGroupOperator.java       |  9 ++---
 .../java/operators/JavaGlobalReduceOperator.java   | 13 +++----
 .../java/operators/JavaIntersectOperator.java      | 17 ++++-----
 .../wayang/java/operators/JavaJoinOperator.java    | 21 +++++------
 .../java/operators/JavaLocalCallbackSink.java      | 11 +++---
 .../wayang/java/operators/JavaLoopOperator.java    | 13 +++----
 .../wayang/java/operators/JavaMapOperator.java     | 13 +++----
 .../java/operators/JavaMapPartitionsOperator.java  | 19 +++++-----
 .../operators/JavaMaterializedGroupByOperator.java | 17 ++++-----
 .../wayang/java/operators/JavaObjectFileSink.java  | 23 +++++-------
 .../java/operators/JavaObjectFileSource.java       | 28 +++++++-------
 .../java/operators/JavaRandomSampleOperator.java   | 19 +++++-----
 .../java/operators/JavaReduceByOperator.java       | 29 +++++++--------
 .../wayang/java/operators/JavaRepeatOperator.java  |  9 ++---
 .../operators/JavaReservoirSampleOperator.java     | 21 +++++------
 .../wayang/java/operators/JavaSortOperator.java    | 11 +++---
 .../wayang/java/operators/JavaTextFileSink.java    | 19 +++++-----
 .../wayang/java/operators/JavaTextFileSource.java  | 19 +++++-----
 .../wayang/java/operators/JavaTsvFileSink.java     | 17 ++++-----
 .../wayang/java/operators/JavaTsvFileSource.java   | 20 +++-------
 .../java/operators/JavaUnionAllOperator.java       | 11 +++---
 .../java/operators/graph/JavaPageRankOperator.java | 12 ++----
 .../apache/wayang/java/plugin/JavaBasicPlugin.java |  5 +--
 .../java/plugin/JavaChannelConversionPlugin.java   |  5 +--
 .../apache/wayang/java/plugin/JavaGraphPlugin.java |  5 +--
 .../wayang/java/execution/JavaExecutorTest.java    | 11 +++---
 .../java/operators/JavaCartesianOperatorTest.java  | 11 +++---
 .../java/operators/JavaCoGroupOperatorTest.java    | 17 ++++-----
 .../java/operators/JavaCollectionSourceTest.java   |  9 ++---
 .../java/operators/JavaCountOperatorTest.java      |  9 ++---
 .../java/operators/JavaDistinctOperatorTest.java   |  9 ++---
 .../operators/JavaExecutionOperatorTestBase.java   | 13 +++----
 .../java/operators/JavaFilterOperatorTest.java     | 11 +++---
 .../JavaGlobalMaterializedGroupOperatorTest.java   | 11 +++---
 .../operators/JavaGlobalReduceOperatorTest.java    | 13 +++----
 .../java/operators/JavaJoinOperatorTest.java       | 15 ++++----
 .../java/operators/JavaLocalCallbackSinkTest.java  |  9 ++---
 .../JavaMaterializedGroupByOperatorTest.java       | 15 ++++----
 .../java/operators/JavaObjectFileSinkTest.java     | 11 +++---
 .../java/operators/JavaObjectFileSourceTest.java   | 13 +++----
 .../operators/JavaRandomSampleOperatorTest.java    |  9 ++---
 .../java/operators/JavaReduceByOperatorTest.java   | 13 +++----
 .../operators/JavaReservoirSampleOperatorTest.java |  9 ++---
 .../java/operators/JavaSortOperatorTest.java       | 11 +++---
 .../java/operators/JavaTextFileSinkTest.java       | 35 ++++++++----------
 .../java/operators/JavaUnionAllOperatorTest.java   |  9 ++---
 .../apache/wayang/java/test/ChannelFactory.java    | 11 +++---
 .../wayang/jdbc/channels/SqlQueryChannel.java      |  3 +-
 .../wayang/jdbc/execution/DatabaseDescriptor.java  |  3 +-
 .../apache/wayang/jdbc/execution/JdbcExecutor.java | 27 +++++++-------
 .../jdbc/operators/JdbcExecutionOperator.java      |  7 ++--
 .../wayang/jdbc/operators/JdbcFilterOperator.java  |  5 +--
 .../jdbc/operators/JdbcProjectionOperator.java     |  5 +--
 .../wayang/jdbc/operators/JdbcTableSource.java     |  9 ++---
 .../wayang/jdbc/operators/SqlToStreamOperator.java | 29 +++++++--------
 .../wayang/jdbc/platform/JdbcPlatformTemplate.java |  3 +-
 .../wayang/jdbc/execution/JdbcExecutorTest.java    | 15 ++++----
 .../wayang/jdbc/operators/JdbcTableSourceTest.java | 17 ++++-----
 .../wayang/jdbc/operators/OperatorTestBase.java    |  8 ++--
 .../jdbc/operators/SqlToStreamOperatorTest.java    | 23 ++++++------
 .../wayang/jdbc/test/HsqldbFilterOperator.java     |  3 +-
 .../wayang/jdbc/test/HsqldbProjectionOperator.java |  3 +-
 .../apache/wayang/jdbc/test/HsqldbTableSource.java |  3 +-
 .../postgres/channels/ChannelConversions.java      |  5 +--
 .../wayang/postgres/mapping/FilterMapping.java     |  5 +--
 .../apache/wayang/postgres/mapping/Mappings.java   |  3 +-
 .../wayang/postgres/mapping/ProjectionMapping.java |  5 +--
 .../postgres/operators/PostgresTableSource.java    |  3 +-
 .../postgres/plugin/PostgresConversionsPlugin.java |  7 ++--
 .../wayang/postgres/plugin/PostgresPlugin.java     |  5 +--
 .../wayang/spark/channels/ChannelConversions.java  |  5 +--
 .../apache/wayang/spark/channels/RddChannel.java   |  4 +-
 .../spark/compiler/BinaryOperatorAdapter.java      |  3 +-
 .../compiler/ExtendedFlatMapFunctionAdapter.java   |  3 +-
 .../ExtendedMapPartitionsFunctionAdapter.java      |  9 ++---
 .../spark/compiler/FlatMapFunctionAdapter.java     |  3 +-
 .../wayang/spark/compiler/FunctionCompiler.java    |  7 ++--
 .../compiler/MapPartitionsFunctionAdapter.java     |  5 +--
 .../wayang/spark/compiler/PredicateAdapter.java    |  3 +-
 .../spark/execution/SparkExecutionContext.java     |  9 ++---
 .../wayang/spark/execution/SparkExecutor.java      |  7 ++--
 .../wayang/spark/mapping/CartesianMapping.java     |  5 +--
 .../wayang/spark/mapping/CoGroupMapping.java       |  5 +--
 .../spark/mapping/CollectionSourceMapping.java     |  5 +--
 .../apache/wayang/spark/mapping/CountMapping.java  |  5 +--
 .../wayang/spark/mapping/DistinctMapping.java      |  5 +--
 .../wayang/spark/mapping/DoWhileMapping.java       |  5 +--
 .../apache/wayang/spark/mapping/FilterMapping.java |  5 +--
 .../wayang/spark/mapping/FlatMapMapping.java       |  5 +--
 .../mapping/GlobalMaterializedGroupMapping.java    |  5 +--
 .../wayang/spark/mapping/GlobalReduceMapping.java  |  5 +--
 .../wayang/spark/mapping/IntersectMapping.java     |  5 +--
 .../apache/wayang/spark/mapping/JoinMapping.java   |  5 +--
 .../spark/mapping/LocalCallbackSinkMapping.java    |  5 +--
 .../apache/wayang/spark/mapping/LoopMapping.java   |  5 +--
 .../apache/wayang/spark/mapping/MapMapping.java    |  5 +--
 .../wayang/spark/mapping/MapPartitionsMapping.java |  5 +--
 .../org/apache/wayang/spark/mapping/Mappings.java  |  5 +--
 .../spark/mapping/MaterializedGroupByMapping.java  |  5 +--
 .../spark/mapping/ObjectFileSinkMapping.java       |  2 -
 .../spark/mapping/ObjectFileSourceMapping.java     |  4 --
 .../wayang/spark/mapping/ReduceByMapping.java      |  5 +--
 .../apache/wayang/spark/mapping/RepeatMapping.java |  5 +--
 .../apache/wayang/spark/mapping/SampleMapping.java |  5 +--
 .../apache/wayang/spark/mapping/SortMapping.java   |  5 +--
 .../wayang/spark/mapping/TextFileSinkMapping.java  |  5 +--
 .../spark/mapping/TextFileSourceMapping.java       |  5 +--
 .../wayang/spark/mapping/UnionAllMapping.java      |  5 +--
 .../wayang/spark/mapping/ZipWithIdMapping.java     |  5 +--
 .../spark/mapping/graph/PageRankMapping.java       |  7 ++--
 .../operators/SparkBernoulliSampleOperator.java    | 13 +++----
 .../spark/operators/SparkBroadcastOperator.java    |  7 ++--
 .../wayang/spark/operators/SparkCacheOperator.java |  9 ++---
 .../spark/operators/SparkCartesianOperator.java    |  9 ++---
 .../spark/operators/SparkCoGroupOperator.java      |  9 ++---
 .../spark/operators/SparkCollectOperator.java      | 11 +++---
 .../spark/operators/SparkCollectionSource.java     | 11 +++---
 .../wayang/spark/operators/SparkCountOperator.java |  9 ++---
 .../spark/operators/SparkDistinctOperator.java     |  9 ++---
 .../spark/operators/SparkDoWhileOperator.java      | 11 +++---
 .../spark/operators/SparkExecutionOperator.java    |  3 +-
 .../spark/operators/SparkFilterOperator.java       | 11 +++---
 .../spark/operators/SparkFlatMapOperator.java      | 11 +++---
 .../SparkGlobalMaterializedGroupOperator.java      | 13 +++----
 .../spark/operators/SparkGlobalReduceOperator.java | 11 +++---
 .../spark/operators/SparkIntersectOperator.java    |  9 ++---
 .../wayang/spark/operators/SparkJoinOperator.java  | 11 +++---
 .../spark/operators/SparkLocalCallbackSink.java    | 11 +++---
 .../wayang/spark/operators/SparkLoopOperator.java  | 11 +++---
 .../wayang/spark/operators/SparkMapOperator.java   | 11 +++---
 .../operators/SparkMapPartitionsOperator.java      | 13 +++----
 .../SparkMaterializedGroupByOperator.java          | 11 +++---
 .../spark/operators/SparkObjectFileSink.java       | 10 ++---
 .../spark/operators/SparkObjectFileSource.java     | 12 +++---
 .../SparkRandomPartitionSampleOperator.java        | 31 ++++++++--------
 .../spark/operators/SparkReduceByOperator.java     | 11 +++---
 .../spark/operators/SparkRepeatOperator.java       |  9 ++---
 .../SparkShufflePartitionSampleOperator.java       | 19 +++++-----
 .../wayang/spark/operators/SparkSortOperator.java  |  9 ++---
 .../wayang/spark/operators/SparkTextFileSink.java  |  9 ++---
 .../spark/operators/SparkTextFileSource.java       |  9 ++---
 .../wayang/spark/operators/SparkTsvFileSink.java   |  9 ++---
 .../wayang/spark/operators/SparkTsvFileSource.java |  7 ++--
 .../spark/operators/SparkUnionAllOperator.java     |  9 ++---
 .../spark/operators/SparkZipWithIdOperator.java    |  9 ++---
 .../wayang/spark/platform/SparkPlatform.java       |  9 ++---
 .../wayang/spark/plugin/SparkBasicPlugin.java      |  5 +--
 .../wayang/spark/plugin/SparkConversionPlugin.java |  7 ++--
 .../wayang/spark/plugin/SparkGraphPlugin.java      |  5 +--
 .../SparkBernoulliSampleOperatorTest.java          | 11 +++---
 .../operators/SparkCartesianOperatorTest.java      |  9 ++---
 .../spark/operators/SparkCoGroupOperatorTest.java  | 19 +++++-----
 .../spark/operators/SparkCollectionSourceTest.java | 11 +++---
 .../spark/operators/SparkCountOperatorTest.java    |  9 ++---
 .../spark/operators/SparkDistinctOperatorTest.java |  9 ++---
 .../spark/operators/SparkFilterOperatorTest.java   |  9 ++---
 .../spark/operators/SparkFlatMapOperatorTest.java  |  9 ++---
 .../SparkGlobalMaterializedGroupOperatorTest.java  | 11 +++---
 .../operators/SparkGlobalReduceOperatorTest.java   | 13 +++----
 .../spark/operators/SparkJoinOperatorTest.java     |  9 ++---
 .../operators/SparkMapPartitionsOperatorTest.java  | 11 +++---
 .../SparkMaterializedGroupByOperatorTest.java      | 17 ++++-----
 .../spark/operators/SparkObjectFileSinkTest.java   | 13 +++----
 .../spark/operators/SparkObjectFileSourceTest.java | 15 ++++----
 .../spark/operators/SparkOperatorTestBase.java     | 11 +++---
 .../SparkRandomPartitionSampleOperatorTest.java    |  9 ++---
 .../spark/operators/SparkReduceByOperatorTest.java | 15 ++++----
 .../SparkShufflePartitionSampleOperatorTest.java   |  9 ++---
 .../spark/operators/SparkSortOperatorTest.java     |  9 ++---
 .../spark/operators/SparkTextFileSinkTest.java     |  9 ++---
 .../spark/operators/SparkUnionAllOperatorTest.java |  9 ++---
 .../apache/wayang/spark/test/ChannelFactory.java   |  9 ++---
 .../sqlite3/channels/ChannelConversions.java       |  5 +--
 .../wayang/sqlite3/mapping/FilterMapping.java      |  5 +--
 .../apache/wayang/sqlite3/mapping/Mappings.java    |  3 +-
 .../wayang/sqlite3/mapping/ProjectionMapping.java  |  5 +--
 .../sqlite3/operators/Sqlite3TableSource.java      |  3 +-
 .../sqlite3/plugin/Sqlite3ConversionPlugin.java    |  7 ++--
 .../wayang/sqlite3/plugin/Sqlite3Plugin.java       |  5 +--
 .../main/java/org/apache/wayang/iejoin/IEJoin.java |  9 ++---
 .../org/apache/wayang/iejoin/mapping/Mappings.java |  5 +--
 .../wayang/iejoin/mapping/java/IEJoinMapping.java  |  5 +--
 .../iejoin/mapping/java/IESelfJoinMapping.java     |  5 +--
 .../wayang/iejoin/mapping/spark/IEJoinMapping.java |  5 +--
 .../iejoin/mapping/spark/IESelfJoinMapping.java    |  5 +--
 .../iejoin/operators/JavaIEJoinOperator.java       | 17 ++++-----
 .../iejoin/operators/JavaIESelfJoinOperator.java   | 17 ++++-----
 .../iejoin/operators/SparkIEJoinOperator.java      | 13 +++----
 .../iejoin/operators/SparkIESelfJoinOperator.java  | 13 +++----
 .../iejoin/operators/java_helpers/BitSetJoin.java  |  5 +--
 .../operators/java_helpers/DataComparator.java     |  5 +--
 .../iejoin/operators/java_helpers/extractData.java |  3 +-
 .../iejoin/operators/java_helpers/myMergeSort.java |  5 +--
 .../operators/java_helpers/revDataComparator.java  |  5 +--
 .../iejoin/operators/spark_helpers/BitSetJoin.java |  7 ++--
 .../spark_helpers/List2AttributesObjectSkinny.java |  3 +-
 .../operators/spark_helpers/addUniqueID.java       |  5 +--
 .../operators/spark_helpers/build2ListObject.java  |  7 ++--
 .../operators/spark_helpers/myMergeSort.java       |  3 +-
 .../operators/spark_helpers/revDataComparator.java |  3 +-
 .../operators/JavaExecutionOperatorTestBase.java   | 13 +++----
 .../iejoin/operators/JavaIEJoinOperatorTest.java   | 13 +++----
 .../iejoin/operators/SparkIEJoinOperatorTest.java  |  9 ++---
 .../iejoin/operators/SparkIEJoinOperatorTest2.java |  9 ++---
 .../iejoin/operators/SparkIEJoinOperatorTest3.java |  9 ++---
 .../iejoin/operators/SparkIEJoinOperatorTest4.java |  9 ++---
 .../operators/SparkIESelfJoinOperatorTest.java     |  9 ++---
 .../iejoin/operators/SparkOperatorTestBase.java    | 11 +++---
 .../apache/wayang/iejoin/test/ChannelFactory.java  | 11 +++---
 .../wayang/profiler/data/DataGenerators.java       |  3 +-
 .../wayang/profiler/hardware/DiskProfiler.java     | 11 +++---
 .../profiler/java/BinaryOperatorProfiler.java      |  7 ++--
 .../java/JavaCollectionSourceProfiler.java         |  5 +--
 .../profiler/java/JavaTextFileSourceProfiler.java  |  3 +-
 .../wayang/profiler/java/OperatorProfiler.java     | 17 ++++-----
 .../wayang/profiler/java/OperatorProfilers.java    | 13 +++----
 .../org/apache/wayang/profiler/java/Profiler.java  | 15 ++++----
 .../apache/wayang/profiler/java/SinkProfiler.java  |  7 ++--
 .../wayang/profiler/java/SourceProfiler.java       |  6 +--
 .../profiler/java/UnaryOperatorProfiler.java       |  7 ++--
 .../profiler/log/DynamicEstimationContext.java     |  3 +-
 .../wayang/profiler/log/DynamicLoadEstimator.java  | 13 +++----
 .../profiler/log/DynamicLoadProfileEstimator.java  |  7 ++--
 .../profiler/log/DynamicLoadProfileEstimators.java |  9 ++---
 .../wayang/profiler/log/GeneticOptimizer.java      | 15 ++++----
 .../wayang/profiler/log/GeneticOptimizerApp.java   | 39 ++++++++++----------
 .../org/apache/wayang/profiler/log/Individual.java | 11 +++---
 .../apache/wayang/profiler/log/LogEvaluator.java   | 23 ++++++------
 .../wayang/profiler/log/OptimizationSpace.java     |  3 +-
 .../profiler/spark/BinaryOperatorProfiler.java     |  3 +-
 .../org/apache/wayang/profiler/spark/Main.java     | 15 ++++----
 .../wayang/profiler/spark/OperatorProfilers.java   |  7 ++--
 .../apache/wayang/profiler/spark/SinkProfiler.java |  3 +-
 .../spark/SparkCollectionSourceProfiler.java       |  5 +--
 .../profiler/spark/SparkOperatorProfiler.java      | 19 +++++-----
 .../wayang/profiler/spark/SparkSourceProfiler.java |  3 +-
 .../spark/SparkTextFileSourceProfiler.java         |  9 ++---
 .../profiler/spark/SparkUnaryOperatorProfiler.java |  3 +-
 .../wayang/profiler/util/ProfilingUtils.java       |  2 +-
 .../apache/wayang/profiler/util/RrdAccessor.java   |  9 ++---
 .../apache/wayang/tests/FlinkIntegrationIT.java    | 25 ++++++-------
 .../org/apache/wayang/tests/FullIntegrationIT.java | 41 ++++++++++-----------
 .../apache/wayang/tests/GiraphIntegrationIT.java   | 15 ++++----
 .../org/apache/wayang/tests/JavaIntegrationIT.java | 33 ++++++++---------
 .../apache/wayang/tests/PostgresIntegrationIT.java | 11 +++---
 .../java/org/apache/wayang/tests/RegressionIT.java |  9 ++---
 .../apache/wayang/tests/SparkIntegrationIT.java    | 33 ++++++++---------
 .../java/org/apache/wayang/tests/WayangPlans.java  | 27 +++++++-------
 .../apache/wayang/tests/WayangPlansOperators.java  |  9 ++---
 .../java/org/apache/wayang/tests/WordCountIT.java  | 25 ++++++-------
 .../wayang/tests/platform/MyMadeUpPlatform.java    |  9 ++---
 637 files changed, 2413 insertions(+), 3021 deletions(-)

diff --git a/wayang-api/wayang-api-python/src/test/java/org/apache/wayang/api/python/PythonAPITest.java b/wayang-api/wayang-api-python/src/test/java/org/apache/wayang/api/python/PythonAPITest.java
index e841298..189ee20 100644
--- a/wayang-api/wayang-api-python/src/test/java/org/apache/wayang/api/python/PythonAPITest.java
+++ b/wayang-api/wayang-api-python/src/test/java/org/apache/wayang/api/python/PythonAPITest.java
@@ -18,8 +18,6 @@
 
 package org.apache.wayang.api.python;
 
-import static org.junit.jupiter.api.Assertions.*;
-
 class PythonAPITest {
 
-}
\ No newline at end of file
+}
diff --git a/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/DataQuanta.scala b/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/DataQuanta.scala
index c977576..22956a1 100644
--- a/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/DataQuanta.scala
+++ b/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/DataQuanta.scala
@@ -22,9 +22,12 @@ package org.apache.wayang.api
 import _root_.java.lang.{Iterable => JavaIterable}
 import _root_.java.util.function.{Consumer, IntUnaryOperator, BiFunction => JavaBiFunction, Function => JavaFunction}
 import _root_.java.util.{Collection => JavaCollection}
+
 import org.apache.commons.lang3.Validate
+import org.apache.wayang.basic.data.{Tuple2 => WayangTuple2}
 import org.apache.wayang.basic.function.ProjectionDescriptor
 import org.apache.wayang.basic.operators._
+import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.function.FunctionDescriptor.{SerializableBinaryOperator, SerializableFunction, SerializablePredicate}
 import org.apache.wayang.core.function._
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval
@@ -33,8 +36,6 @@ import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator
 import org.apache.wayang.core.plan.wayangplan._
 import org.apache.wayang.core.platform.Platform
 import org.apache.wayang.core.util.{Tuple => WayangTuple}
-import org.apache.wayang.basic.data.{Tuple2 => WayangTuple2}
-import org.apache.wayang.commons.util.profiledb.model.Experiment
 
 import scala.collection.JavaConversions
 import scala.collection.JavaConversions._
diff --git a/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/DataQuantaBuilder.scala b/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/DataQuantaBuilder.scala
index 29b4965..6ab7eec 100644
--- a/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/DataQuantaBuilder.scala
+++ b/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/DataQuantaBuilder.scala
@@ -21,6 +21,7 @@ package org.apache.wayang.api
 
 import java.util.function.{Consumer, IntUnaryOperator, Function => JavaFunction}
 import java.util.{Collection => JavaCollection}
+
 import org.apache.wayang.api.graph.{Edge, EdgeDataQuantaBuilder, EdgeDataQuantaBuilderDecorator}
 import org.apache.wayang.api.util.{DataQuantaBuilderCache, TypeTrap}
 import org.apache.wayang.basic.data.{Record, Tuple2 => RT2}
diff --git a/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/JavaPlanBuilder.scala b/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/JavaPlanBuilder.scala
index d21870a..53e9207 100644
--- a/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/JavaPlanBuilder.scala
+++ b/wayang-api/wayang-api-scala-java/src/main/scala/org/apache/wayang/api/JavaPlanBuilder.scala
@@ -19,6 +19,7 @@
 package org.apache.wayang.api
 
 import java.util.{Collection => JavaCollection}
+
 import org.apache.commons.lang3.Validate
 import org.apache.wayang.api.util.DataQuantaBuilderCache
 import org.apache.wayang.basic.data.Record
diff --git a/wayang-api/wayang-api-scala-java/src/test/java/org/apache/wayang/api/JavaApiTest.java b/wayang-api/wayang-api-scala-java/src/test/java/org/apache/wayang/api/JavaApiTest.java
index 2d4bb6c..420a82e 100644
--- a/wayang-api/wayang-api-scala-java/src/test/java/org/apache/wayang/api/JavaApiTest.java
+++ b/wayang-api/wayang-api-scala-java/src/test/java/org/apache/wayang/api/JavaApiTest.java
@@ -18,27 +18,6 @@
 
 package org.apache.wayang.api;
 
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.apache.wayang.basic.data.Tuple2;
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.api.WayangContext;
-import org.apache.wayang.core.function.ExecutionContext;
-import org.apache.wayang.core.function.FunctionDescriptor;
-import org.apache.wayang.core.function.PredicateDescriptor;
-import org.apache.wayang.core.function.TransformationDescriptor;
-import org.apache.wayang.core.types.DataSetType;
-import org.apache.wayang.core.util.WayangArrays;
-import org.apache.wayang.core.util.WayangCollections;
-import org.apache.wayang.core.util.Tuple;
-import org.apache.wayang.core.util.fs.LocalFileSystem;
-import org.apache.wayang.java.Java;
-import org.apache.wayang.java.operators.JavaMapOperator;
-import org.apache.wayang.spark.Spark;
-import org.apache.wayang.sqlite3.Sqlite3;
-import org.apache.wayang.sqlite3.operators.Sqlite3TableSource;
-
 import java.io.File;
 import java.io.IOException;
 import java.net.URI;
@@ -56,6 +35,26 @@ import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.StreamSupport;
+import org.apache.wayang.basic.data.Tuple2;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.api.WayangContext;
+import org.apache.wayang.core.function.ExecutionContext;
+import org.apache.wayang.core.function.FunctionDescriptor;
+import org.apache.wayang.core.function.PredicateDescriptor;
+import org.apache.wayang.core.function.TransformationDescriptor;
+import org.apache.wayang.core.types.DataSetType;
+import org.apache.wayang.core.util.Tuple;
+import org.apache.wayang.core.util.WayangArrays;
+import org.apache.wayang.core.util.WayangCollections;
+import org.apache.wayang.core.util.fs.LocalFileSystem;
+import org.apache.wayang.java.Java;
+import org.apache.wayang.java.operators.JavaMapOperator;
+import org.apache.wayang.spark.Spark;
+import org.apache.wayang.sqlite3.Sqlite3;
+import org.apache.wayang.sqlite3.operators.Sqlite3TableSource;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
 
 /**
  * Test suite for the Java API.
diff --git a/wayang-api/wayang-api-scala-java/src/test/scala/org/apache/wayang/api/ApiTest.scala b/wayang-api/wayang-api-scala-java/src/test/scala/org/apache/wayang/api/ApiTest.scala
index cc05bd2..83e2548 100644
--- a/wayang-api/wayang-api-scala-java/src/test/scala/org/apache/wayang/api/ApiTest.scala
+++ b/wayang-api/wayang-api-scala-java/src/test/scala/org/apache/wayang/api/ApiTest.scala
@@ -24,7 +24,6 @@ import java.nio.file.{Files, Paths}
 import java.sql.{Connection, Statement}
 import java.util.function.Consumer
 
-import org.junit.{Assert, Test}
 import org.apache.wayang.basic.WayangBasics
 import org.apache.wayang.core.api.{Configuration, WayangContext}
 import org.apache.wayang.core.function.FunctionDescriptor.ExtendedSerializablePredicate
@@ -35,6 +34,7 @@ import org.apache.wayang.java.operators.JavaMapOperator
 import org.apache.wayang.spark.Spark
 import org.apache.wayang.sqlite3.Sqlite3
 import org.apache.wayang.sqlite3.operators.Sqlite3TableSource
+import org.junit.{Assert, Test}
 
 /**
   * Tests the Wayang API.
diff --git a/wayang-benchmark/pom.xml b/wayang-benchmark/pom.xml
index 5ca2b06..829ec88 100644
--- a/wayang-benchmark/pom.xml
+++ b/wayang-benchmark/pom.xml
@@ -77,11 +77,6 @@
       <version>2.7.7</version>
     </dependency>
     <dependency>
-      <groupId>org.apache.hadoop</groupId>
-      <artifactId>hadoop-hdfs-client</artifactId>
-      <version>2.7.7</version>
-    </dependency>
-    <dependency>
       <groupId>org.apache.spark</groupId>
       <artifactId>spark-core_${scala.mayor.version}</artifactId>
       <version>${spark.version}</version>
diff --git a/wayang-benchmark/src/main/java/org/apache/wayang/apps/sgd/SGDImpl.java b/wayang-benchmark/src/main/java/org/apache/wayang/apps/sgd/SGDImpl.java
index dbd7eac..d953908 100644
--- a/wayang-benchmark/src/main/java/org/apache/wayang/apps/sgd/SGDImpl.java
+++ b/wayang-benchmark/src/main/java/org/apache/wayang/apps/sgd/SGDImpl.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.apps.sgd;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
 import org.apache.wayang.api.DataQuantaBuilder;
 import org.apache.wayang.api.JavaPlanBuilder;
 import org.apache.wayang.basic.data.Tuple2;
@@ -27,12 +30,8 @@ import org.apache.wayang.core.api.WayangContext;
 import org.apache.wayang.core.function.ExecutionContext;
 import org.apache.wayang.core.function.FunctionDescriptor;
 import org.apache.wayang.core.plugin.Plugin;
-import org.apache.wayang.core.util.WayangCollections;
 import org.apache.wayang.core.util.Tuple;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * This class executes a stochastic gradient descent optimization on Apache Wayang.
diff --git a/wayang-benchmark/src/main/java/org/apache/wayang/apps/sgd/SGDImprovedImpl.java b/wayang-benchmark/src/main/java/org/apache/wayang/apps/sgd/SGDImprovedImpl.java
index 1532f57..866fab1 100644
--- a/wayang-benchmark/src/main/java/org/apache/wayang/apps/sgd/SGDImprovedImpl.java
+++ b/wayang-benchmark/src/main/java/org/apache/wayang/apps/sgd/SGDImprovedImpl.java
@@ -18,22 +18,21 @@
 
 package org.apache.wayang.apps.sgd;
 
-import org.apache.wayang.commons.util.profiledb.model.Experiment;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
 import org.apache.wayang.api.DataQuantaBuilder;
 import org.apache.wayang.api.JavaPlanBuilder;
 import org.apache.wayang.basic.data.Tuple2;
+import org.apache.wayang.commons.util.profiledb.model.Experiment;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.WayangContext;
 import org.apache.wayang.core.function.ExecutionContext;
 import org.apache.wayang.core.function.FunctionDescriptor;
 import org.apache.wayang.core.plugin.Plugin;
-import org.apache.wayang.core.util.WayangCollections;
 import org.apache.wayang.core.util.Tuple;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * This class executes a stochastic gradient descent optimization on Apache Wayang, just like {@link SGDImpl}. However,
diff --git a/wayang-benchmark/src/main/java/org/apache/wayang/apps/tpch/Main.java b/wayang-benchmark/src/main/java/org/apache/wayang/apps/tpch/Main.java
index c020b34..f77abe2 100644
--- a/wayang-benchmark/src/main/java/org/apache/wayang/apps/tpch/Main.java
+++ b/wayang-benchmark/src/main/java/org/apache/wayang/apps/tpch/Main.java
@@ -21,14 +21,17 @@ package org.apache.wayang.apps.tpch;
 import org.apache.wayang.apps.tpch.data.LineItemTuple;
 import org.apache.wayang.apps.tpch.data.q1.GroupKey;
 import org.apache.wayang.apps.tpch.data.q1.ReturnTuple;
-import org.apache.wayang.basic.operators.*;
+import org.apache.wayang.basic.operators.FilterOperator;
+import org.apache.wayang.basic.operators.LocalCallbackSink;
+import org.apache.wayang.basic.operators.MapOperator;
+import org.apache.wayang.basic.operators.ReduceByOperator;
+import org.apache.wayang.basic.operators.TextFileSource;
 import org.apache.wayang.core.api.WayangContext;
 import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.util.ReflectionUtils;
 import org.apache.wayang.java.Java;
 import org.apache.wayang.java.platform.JavaPlatform;
 import org.apache.wayang.spark.Spark;
-import org.apache.wayang.spark.platform.SparkPlatform;
 
 /**
  * Main class for the TPC-H app based on Apache Wayang.
diff --git a/wayang-benchmark/src/main/java/org/apache/wayang/apps/wordcount/Main.java b/wayang-benchmark/src/main/java/org/apache/wayang/apps/wordcount/Main.java
index 9b613cd..0cd0f4d 100644
--- a/wayang-benchmark/src/main/java/org/apache/wayang/apps/wordcount/Main.java
+++ b/wayang-benchmark/src/main/java/org/apache/wayang/apps/wordcount/Main.java
@@ -18,8 +18,19 @@
 
 package org.apache.wayang.apps.wordcount;
 
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
 import org.apache.wayang.basic.data.Tuple2;
-import org.apache.wayang.basic.operators.*;
+import org.apache.wayang.basic.operators.FilterOperator;
+import org.apache.wayang.basic.operators.FlatMapOperator;
+import org.apache.wayang.basic.operators.LocalCallbackSink;
+import org.apache.wayang.basic.operators.MapOperator;
+import org.apache.wayang.basic.operators.ReduceByOperator;
+import org.apache.wayang.basic.operators.TextFileSource;
 import org.apache.wayang.core.api.WayangContext;
 import org.apache.wayang.core.function.FlatMapDescriptor;
 import org.apache.wayang.core.function.ReduceDescriptor;
@@ -32,14 +43,6 @@ import org.apache.wayang.core.util.ReflectionUtils;
 import org.apache.wayang.java.Java;
 import org.apache.wayang.java.platform.JavaPlatform;
 import org.apache.wayang.spark.Spark;
-import org.apache.wayang.spark.platform.SparkPlatform;
-
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
 
 /**
  * Example Apache Wayang App that does a word count -- the Hello World of Map/Reduce-like systems.
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/benchmark/OptimizerScalabilityTest.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/benchmark/OptimizerScalabilityTest.scala
index f1c598a..d4b6b39 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/benchmark/OptimizerScalabilityTest.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/benchmark/OptimizerScalabilityTest.scala
@@ -19,7 +19,6 @@
 package org.apache.wayang.apps.benchmark
 
 import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
-import org.apache.wayang.apps.util.ProfileDBHelper
 import org.apache.wayang.core.api.{Configuration, WayangContext}
 
 /**
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/benchmark/PlanGenerator.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/benchmark/PlanGenerator.scala
index 7aaccbe..3e7f720 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/benchmark/PlanGenerator.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/benchmark/PlanGenerator.scala
@@ -18,8 +18,8 @@
 
 package org.apache.wayang.apps.benchmark
 
-import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.api.{DataQuanta, PlanBuilder}
+import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.WayangContext
 import org.apache.wayang.core.plan.wayangplan.WayangPlan
 
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/crocopr/CrocoPR.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/crocopr/CrocoPR.scala
index 9a92ba5..7f16921 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/crocopr/CrocoPR.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/crocopr/CrocoPR.scala
@@ -18,10 +18,9 @@
 
 package org.apache.wayang.apps.crocopr
 
-import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper, StdOut}
 import org.apache.wayang.api.graph._
 import org.apache.wayang.api.{DataQuanta, PlanBuilder}
-import org.apache.wayang.apps.util.ProfileDBHelper
+import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper, StdOut}
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.exception.WayangException
 import org.apache.wayang.core.api.{Configuration, WayangContext}
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/kmeans/Kmeans.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/kmeans/Kmeans.scala
index 5a1f1fc..bad00ec 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/kmeans/Kmeans.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/kmeans/Kmeans.scala
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.apps.kmeans
 
-import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
-
 import java.util
+
 import org.apache.wayang.api._
-import org.apache.wayang.apps.util.ProfileDBHelper
+import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.{Configuration, WayangContext}
 import org.apache.wayang.core.function.ExecutionContext
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/kmeans/postgres/Kmeans.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/kmeans/postgres/Kmeans.scala
index 301d953..362de09 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/kmeans/postgres/Kmeans.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/kmeans/postgres/Kmeans.scala
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.apps.kmeans.postgres
 
-import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
-
 import java.util
+
 import org.apache.wayang.api.{PlanBuilder, _}
-import org.apache.wayang.apps.util.ProfileDBHelper
+import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.{Configuration, WayangContext}
 import org.apache.wayang.core.function.ExecutionContext
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/sgd/SGD.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/sgd/SGD.scala
index 981cf1d..2fa5189 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/sgd/SGD.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/sgd/SGD.scala
@@ -19,7 +19,6 @@
 package org.apache.wayang.apps.sgd
 
 import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
-import org.apache.wayang.apps.util.ProfileDBHelper
 import org.apache.wayang.core.api.Configuration
 
 /**
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/ScrubFunction.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/ScrubFunction.scala
index a24f403..246f38e 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/ScrubFunction.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/ScrubFunction.scala
@@ -18,7 +18,6 @@
 
 package org.apache.wayang.apps.simwords
 
-import java.lang.Iterable
 import java.util
 
 import org.apache.wayang.core.function.ExecutionContext
@@ -33,7 +32,7 @@ class ScrubFunction extends ExtendedSerializableFunction[String, java.lang.Itera
 
   override def open(ctx: ExecutionContext): Unit = {}
 
-  override def apply(line: String): Iterable[String] = {
+  override def apply(line: String): java.lang.Iterable[String] = {
     val result = new util.LinkedList[String]()
     textScrubber.splitAndScrub(line, result)
     result
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/SelectNearestCentroidFunction.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/SelectNearestCentroidFunction.scala
index 933acee..37eaefb 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/SelectNearestCentroidFunction.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/SelectNearestCentroidFunction.scala
@@ -18,10 +18,10 @@
 
 package org.apache.wayang.apps.simwords
 
+import org.apache.logging.log4j.LogManager
 import org.apache.wayang.core.function.ExecutionContext
 import org.apache.wayang.core.function.FunctionDescriptor.ExtendedSerializableFunction
 import org.apache.wayang.core.util.WayangCollections
-import org.apache.logging.log4j.LogManager
 
 import scala.collection.JavaConversions._
 import scala.util.Random
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/SimWords.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/SimWords.scala
index f1ace56..183e52a 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/SimWords.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/SimWords.scala
@@ -18,9 +18,8 @@
 
 package org.apache.wayang.apps.simwords
 
-import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
 import org.apache.wayang.api._
-import org.apache.wayang.apps.util.ProfileDBHelper
+import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.{Configuration, WayangContext}
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/Word2NVec.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/Word2NVec.scala
index adbe05c..5696800 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/Word2NVec.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/simwords/Word2NVec.scala
@@ -18,9 +18,8 @@
 
 package org.apache.wayang.apps.simwords
 
-import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
 import org.apache.wayang.api._
-import org.apache.wayang.apps.util.ProfileDBHelper
+import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.{Configuration, WayangContext}
 import org.apache.wayang.core.function.ExecutionContext
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/sindy/Sindy.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/sindy/Sindy.scala
index 01db9ea..f189f70 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/sindy/Sindy.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/sindy/Sindy.scala
@@ -18,13 +18,11 @@
 
 package org.apache.wayang.apps.sindy
 
-import java.lang.Iterable
 import java.util
+
 import org.apache.wayang.api._
-import org.apache.wayang.apps
-import Sindy.{CellCreator, CellMerger, IndCandidateGenerator, IndCandidateMerger}
+import org.apache.wayang.apps.sindy.Sindy.{CellCreator, CellMerger, IndCandidateGenerator, IndCandidateMerger}
 import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper, StdOut}
-import org.apache.wayang.apps.util.ProfileDBHelper
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.{Configuration, WayangContext}
 import org.apache.wayang.core.function.FunctionDescriptor.{SerializableBinaryOperator, SerializableFunction}
@@ -149,7 +147,7 @@ object Sindy extends ExperimentDescriptor {
     */
   class CellCreator(val offset: Int, val separator: Char) extends SerializableFunction[String, java.lang.Iterable[(String, Int)]] {
 
-    override def apply(row: String): Iterable[(String, Int)] = {
+    override def apply(row: String): java.lang.Iterable[(String, Int)] = {
       val fields = row.split(separator)
       val cells = new util.ArrayList[(String, Int)](fields.length)
       var columnId = offset
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/TpcH.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/TpcH.scala
index 60e35a7..3c101e8 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/TpcH.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/TpcH.scala
@@ -20,8 +20,6 @@ package org.apache.wayang.apps.tpch
 
 import org.apache.wayang.apps.tpch.queries.{Query1, Query3Database, Query3File, Query3Hybrid}
 import org.apache.wayang.apps.util.{Parameters, ProfileDBHelper, StdOut}
-import org.apache.wayang.apps.tpch.queries.Query1
-import org.apache.wayang.apps.util.ProfileDBHelper
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.Configuration
 import org.apache.wayang.jdbc.platform.JdbcPlatformTemplate
@@ -30,7 +28,7 @@ import org.apache.wayang.postgres.operators.PostgresTableSource
 import org.apache.wayang.sqlite3.Sqlite3
 import org.apache.wayang.sqlite3.operators.Sqlite3TableSource
 
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters
 
 /**
   * This app adapts some TPC-H queries.
@@ -50,7 +48,14 @@ object TpcH {
 
     val jdbcPlatform = {
       val jdbcPlatforms = plugins
-        .flatMap(_.getRequiredPlatforms)
+        .flatMap(
+          plugin => {
+            JavaConverters
+              .collectionAsScalaIterable(
+                plugin.getRequiredPlatforms
+              )
+              .toSeq
+          })
         .filter(_.isInstanceOf[JdbcPlatformTemplate])
         .distinct
       if (jdbcPlatforms.size == 1) jdbcPlatforms.head.asInstanceOf[JdbcPlatformTemplate]
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query1.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query1.scala
index 01c6a3d..b63af06 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query1.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query1.scala
@@ -18,10 +18,10 @@
 
 package org.apache.wayang.apps.tpch.queries
 
+import org.apache.wayang.api._
 import org.apache.wayang.apps.tpch.CsvUtils
 import org.apache.wayang.apps.tpch.data.LineItem
 import org.apache.wayang.apps.util.ExperimentDescriptor
-import org.apache.wayang.api._
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.{Configuration, WayangContext}
 import org.apache.wayang.core.plugin.Plugin
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query3Database.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query3Database.scala
index d3ea4e7..f146555 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query3Database.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query3Database.scala
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.apps.tpch.queries
 
+import org.apache.wayang.api._
 import org.apache.wayang.apps.tpch.CsvUtils
 import org.apache.wayang.apps.tpch.data.{Customer, LineItem, Order}
 import org.apache.wayang.apps.util.ExperimentDescriptor
-import org.apache.wayang.api._
-import org.apache.wayang.apps.tpch.data.LineItem
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.{Configuration, WayangContext}
 import org.apache.wayang.core.plugin.Plugin
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query3File.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query3File.scala
index 171e184..63aef01 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query3File.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query3File.scala
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.apps.tpch.queries
 
+import org.apache.wayang.api._
 import org.apache.wayang.apps.tpch.CsvUtils
 import org.apache.wayang.apps.tpch.data.{Customer, LineItem, Order}
 import org.apache.wayang.apps.util.ExperimentDescriptor
-import org.apache.wayang.api._
-import org.apache.wayang.apps.tpch.data.LineItem
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.{Configuration, WayangContext}
 import org.apache.wayang.core.plugin.Plugin
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query3Hybrid.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query3Hybrid.scala
index 06a8cc7..930c39d 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query3Hybrid.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/tpch/queries/Query3Hybrid.scala
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.apps.tpch.queries
 
+import org.apache.wayang.api._
 import org.apache.wayang.apps.tpch.CsvUtils
 import org.apache.wayang.apps.tpch.data.{Customer, LineItem, Order}
 import org.apache.wayang.apps.util.ExperimentDescriptor
-import org.apache.wayang.api._
-import org.apache.wayang.apps.tpch.data.LineItem
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.{Configuration, WayangContext}
 import org.apache.wayang.core.plugin.Plugin
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/util/Parameters.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/util/Parameters.scala
index 135c46a..211fba7 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/util/Parameters.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/util/Parameters.scala
@@ -18,8 +18,8 @@
 
 package org.apache.wayang.apps.util
 
-import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.basic.WayangBasics
+import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval
 import org.apache.wayang.core.plugin.{DynamicPlugin, Plugin}
 //import org.apache.wayang.graphchi.GraphChi
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/util/ProfileDBHelper.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/util/ProfileDBHelper.scala
index 7c4b381..3d98487 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/util/ProfileDBHelper.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/util/ProfileDBHelper.scala
@@ -20,9 +20,6 @@ package org.apache.wayang.apps.util
 
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.Configuration
-import org.apache.wayang.core.profiling.ProfileDBs
-
-import java.io.File
 
 /**
   * Helper utility to employ with [[ProfileDB]].
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/wordcount/WordCountScala.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/wordcount/WordCountScala.scala
index 722cf43..af61bcd 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/wordcount/WordCountScala.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/wordcount/WordCountScala.scala
@@ -18,9 +18,8 @@
 
 package org.apache.wayang.apps.wordcount
 
-import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
 import org.apache.wayang.api._
-import org.apache.wayang.apps.util.ProfileDBHelper
+import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.{Configuration, WayangContext}
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval
diff --git a/wayang-benchmark/src/test/java/org/apache/wayang/apps/tpch/data/LineItemTupleTest.java b/wayang-benchmark/src/test/java/org/apache/wayang/apps/tpch/data/LineItemTupleTest.java
index 506a0cb..e53a258 100644
--- a/wayang-benchmark/src/test/java/org/apache/wayang/apps/tpch/data/LineItemTupleTest.java
+++ b/wayang-benchmark/src/test/java/org/apache/wayang/apps/tpch/data/LineItemTupleTest.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.apps.tpch.data;
 
-import org.junit.Assert;
-import org.junit.Test;
-
 import java.util.Calendar;
 import java.util.GregorianCalendar;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suited for {@link LineItemTuple}.
diff --git a/wayang-benchmark/src/test/scala/org/apache/wayang/apps/kmeans/KmeansTest.scala b/wayang-benchmark/src/test/scala/org/apache/wayang/apps/kmeans/KmeansTest.scala
index 53d6fea..72c3853 100644
--- a/wayang-benchmark/src/test/scala/org/apache/wayang/apps/kmeans/KmeansTest.scala
+++ b/wayang-benchmark/src/test/scala/org/apache/wayang/apps/kmeans/KmeansTest.scala
@@ -19,11 +19,11 @@
 package org.apache.wayang.apps.kmeans
 
 import org.apache.wayang.commons.util.profiledb.model.{Experiment, Subject}
-import org.junit.Assert._
-import org.junit.Test
 import org.apache.wayang.core.api.Configuration
 import org.apache.wayang.java.Java
 import org.apache.wayang.spark.Spark
+import org.junit.Assert._
+import org.junit.Test
 
 /**
   * Test suite for [[Kmeans]].
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/channels/FileChannel.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/channels/FileChannel.java
index 9a56afb..17efde9 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/channels/FileChannel.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/channels/FileChannel.java
@@ -18,6 +18,13 @@
 
 package org.apache.wayang.basic.channels;
 
+import java.io.IOException;
+import java.io.UncheckedIOException;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.Random;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -31,14 +38,6 @@ import org.apache.wayang.core.util.Actions;
 import org.apache.wayang.core.util.fs.FileSystem;
 import org.apache.wayang.core.util.fs.FileSystems;
 
-import java.io.IOException;
-import java.io.UncheckedIOException;
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Random;
-
 /**
  * Represents a {@link Channel} that is realized via a file/set of files.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/data/Record.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/data/Record.java
index d11506c..dac710b 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/data/Record.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/data/Record.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.basic.data;
 
-import org.apache.wayang.core.util.Copyable;
-import org.apache.wayang.core.util.ReflectionUtils;
-
 import java.io.Serializable;
 import java.util.Arrays;
 import java.util.Objects;
+import org.apache.wayang.core.util.Copyable;
+import org.apache.wayang.core.util.ReflectionUtils;
 
 /**
  * A Type that represents a record with a schema, might be replaced with something standard like JPA entity.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/function/ProjectionDescriptor.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/function/ProjectionDescriptor.java
index 5db00d7..b4ab9ae 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/function/ProjectionDescriptor.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/function/ProjectionDescriptor.java
@@ -18,17 +18,16 @@
 
 package org.apache.wayang.basic.function;
 
+import java.lang.reflect.Field;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.basic.types.RecordType;
 import org.apache.wayang.core.function.FunctionDescriptor;
 import org.apache.wayang.core.function.TransformationDescriptor;
 import org.apache.wayang.core.types.BasicDataUnitType;
 
-import java.lang.reflect.Field;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * This descriptor pertains to projections. It takes field names of the input type to describe the projection.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/GlobalReduceMapping.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/GlobalReduceMapping.java
index 3fe03d6..1888143 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/GlobalReduceMapping.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/GlobalReduceMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.basic.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.GlobalReduceOperator;
 import org.apache.wayang.basic.operators.GroupByOperator;
 import org.apache.wayang.basic.operators.ReduceByOperator;
@@ -31,9 +33,6 @@ import org.apache.wayang.core.mapping.SubplanPattern;
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * This mapping detects combinations of the {@link GroupByOperator} and {@link ReduceOperator} and merges them into
  * a single {@link ReduceByOperator}.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/Mappings.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/Mappings.java
index 38bf55b..ecd7a68 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/Mappings.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/Mappings.java
@@ -18,10 +18,9 @@
 
 package org.apache.wayang.basic.mapping;
 
-import org.apache.wayang.core.mapping.Mapping;
-
 import java.util.Arrays;
 import java.util.Collection;
+import org.apache.wayang.core.mapping.Mapping;
 
 /**
  * Register for the components provided in the basic plugin.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/MaterializedGroupByMapping.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/MaterializedGroupByMapping.java
index 62c49c3..039bf52 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/MaterializedGroupByMapping.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/MaterializedGroupByMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.basic.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.GroupByOperator;
 import org.apache.wayang.basic.operators.MaterializedGroupByOperator;
 import org.apache.wayang.core.mapping.Mapping;
@@ -29,9 +31,6 @@ import org.apache.wayang.core.mapping.SubplanPattern;
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * This mapping translates the {@link GroupByOperator} into the {@link MaterializedGroupByOperator}.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/PageRankMapping.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/PageRankMapping.java
index 9491b4d..49ed260 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/PageRankMapping.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/PageRankMapping.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.basic.mapping;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.basic.operators.CountOperator;
 import org.apache.wayang.basic.operators.DistinctOperator;
@@ -44,11 +48,6 @@ import org.apache.wayang.core.plan.wayangplan.Subplan;
 import org.apache.wayang.core.util.ReflectionUtils;
 import org.apache.wayang.core.util.WayangCollections;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * This {@link Mapping} translates a {@link PageRankOperator} into a {@link Subplan} of basic {@link Operator}s.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/ReduceByMapping.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/ReduceByMapping.java
index f9b9e1a..97a1328 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/ReduceByMapping.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/ReduceByMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.basic.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.GroupByOperator;
 import org.apache.wayang.basic.operators.ReduceByOperator;
 import org.apache.wayang.basic.operators.ReduceOperator;
@@ -30,9 +32,6 @@ import org.apache.wayang.core.mapping.SubplanPattern;
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * This mapping detects combinations of the {@link GroupByOperator} and {@link ReduceOperator} and merges them into
  * a single {@link ReduceByOperator}.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/RepeatMapping.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/RepeatMapping.java
index d92edf2..c56d3b2 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/RepeatMapping.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/mapping/RepeatMapping.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.basic.mapping;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.CollectionSource;
 import org.apache.wayang.basic.operators.LoopOperator;
 import org.apache.wayang.basic.operators.MapOperator;
@@ -31,10 +34,6 @@ import org.apache.wayang.core.plan.wayangplan.Subplan;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.util.WayangCollections;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * This {@link Mapping} translates a {@link RepeatOperator} into a {@link Subplan} with the {@link LoopOperator}.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CartesianOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CartesianOperator.java
index 4fde9fc..89f64a9 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CartesianOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CartesianOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.api.Configuration;
@@ -26,8 +27,6 @@ import org.apache.wayang.core.optimizer.cardinality.DefaultCardinalityEstimator;
 import org.apache.wayang.core.plan.wayangplan.BinaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 
 /**
  * This operator returns the cartesian product of elements of input datasets.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CoGroupOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CoGroupOperator.java
index 22676e9..b8f2da7 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CoGroupOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CoGroupOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.api.Configuration;
@@ -28,8 +29,6 @@ import org.apache.wayang.core.optimizer.cardinality.DefaultCardinalityEstimator;
 import org.apache.wayang.core.plan.wayangplan.BinaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 
 /**
  * This operator groups both inputs by some key and then matches groups with the same key. If a key appears in only
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CollectionSource.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CollectionSource.java
index 0150263..2df6de1 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CollectionSource.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CollectionSource.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
@@ -26,10 +29,6 @@ import org.apache.wayang.core.plan.wayangplan.ElementaryOperator;
 import org.apache.wayang.core.plan.wayangplan.UnarySource;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Optional;
-
 /**
  * This source takes as input a Java {@link java.util.Collection}.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CountOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CountOperator.java
index 0740575..b990609 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CountOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/CountOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
@@ -25,8 +26,6 @@ import org.apache.wayang.core.optimizer.cardinality.FixedSizeCardinalityEstimato
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 
 /**
  * This operator returns the count of elements in this stream.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/DistinctOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/DistinctOperator.java
index bf1e2d4..8e461f2 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/DistinctOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/DistinctOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
@@ -25,8 +26,6 @@ import org.apache.wayang.core.optimizer.cardinality.DefaultCardinalityEstimator;
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 
 /**
  * This operator returns the distinct elements in this dataset.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/DoWhileOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/DoWhileOperator.java
index 8966f01..ef4376c 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/DoWhileOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/DoWhileOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Optional;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.PredicateDescriptor;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
@@ -31,11 +35,6 @@ import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.util.ReflectionUtils;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Optional;
-
 /**
  * This operator has three inputs and two outputs.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/FilterOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/FilterOperator.java
index 767ff69..876fa20 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/FilterOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/FilterOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.PredicateDescriptor;
@@ -27,8 +28,6 @@ import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 
 /**
  * This operator returns a new dataset after filtering by applying predicateDescriptor.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/FlatMapOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/FlatMapOperator.java
index e2d4406..7cb0e39 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/FlatMapOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/FlatMapOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.FlatMapDescriptor;
@@ -28,8 +29,6 @@ import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 /**
  * A flatmap operator represents semantics as they are known from frameworks, such as Spark and Flink. It pulls each
  * available element from the input slot, applies a function to it, returning zero or more output elements,
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/GlobalMaterializedGroupOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/GlobalMaterializedGroupOperator.java
index 3ddb8b5..7f51a16 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/GlobalMaterializedGroupOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/GlobalMaterializedGroupOperator.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
 import org.apache.wayang.core.optimizer.cardinality.FixedSizeCardinalityEstimator;
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 /**
  * This operator groups the elements of a data set into a single data quantum.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/GlobalReduceOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/GlobalReduceOperator.java
index 3c03e1c..9301a30 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/GlobalReduceOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/GlobalReduceOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.FunctionDescriptor;
@@ -28,8 +29,6 @@ import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.BasicDataUnitType;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 /**
  * This operator groups the elements of a data set and aggregates the groups.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/IntersectOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/IntersectOperator.java
index d082695..e354a0c 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/IntersectOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/IntersectOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
@@ -25,8 +26,6 @@ import org.apache.wayang.core.optimizer.cardinality.DefaultCardinalityEstimator;
 import org.apache.wayang.core.plan.wayangplan.BinaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 
 /**
  * This operator returns the set intersection of elements of input datasets.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/JoinOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/JoinOperator.java
index 1d4d1f3..7601652 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/JoinOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/JoinOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.api.Configuration;
@@ -28,8 +29,6 @@ import org.apache.wayang.core.optimizer.cardinality.DefaultCardinalityEstimator;
 import org.apache.wayang.core.plan.wayangplan.BinaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 
 /**
  * This operator returns the cartesian product of elements of input datasets.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/LocalCallbackSink.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/LocalCallbackSink.java
index d88e963..4671dc1 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/LocalCallbackSink.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/LocalCallbackSink.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Collection;
+import java.util.Optional;
+import java.util.function.Consumer;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.ConsumerDescriptor;
@@ -27,10 +30,6 @@ import org.apache.wayang.core.plan.wayangplan.UnarySink;
 import org.apache.wayang.core.types.BasicDataUnitType;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Collection;
-import java.util.Optional;
-import java.util.function.Consumer;
-
 /**
  * This sink executes a callback on each received data unit into a Java {@link Collection}.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/LoopOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/LoopOperator.java
index e83022c..6ae1864 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/LoopOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/LoopOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Optional;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.PredicateDescriptor;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
@@ -31,11 +35,6 @@ import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.util.ReflectionUtils;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Optional;
-
 /**
  * This operator has three inputs and three outputs.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/MapOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/MapOperator.java
index 13c25a1..1ecb9b1 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/MapOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/MapOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.basic.function.ProjectionDescriptor;
@@ -30,8 +31,6 @@ import org.apache.wayang.core.optimizer.cardinality.DefaultCardinalityEstimator;
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 /**
  * A map operator represents semantics as they are known from frameworks, such as Spark and Flink. It pulls each
  * available element from the input slot, applies a function to it, and pushes that element to the output slot.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/MapPartitionsOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/MapPartitionsOperator.java
index 976845e..942a252 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/MapPartitionsOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/MapPartitionsOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.FunctionDescriptor;
@@ -28,8 +29,6 @@ import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 /**
  * This operator takes as input potentially multiple input data quanta and outputs multiple input data quanta.
  * <p>Since Wayang is not a physical execution engine, its notion of partitions is rather loose. Implementors
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/MaterializedGroupByOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/MaterializedGroupByOperator.java
index 4b06020..11bca6a 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/MaterializedGroupByOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/MaterializedGroupByOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.FunctionDescriptor;
@@ -27,8 +28,6 @@ import org.apache.wayang.core.optimizer.cardinality.DefaultCardinalityEstimator;
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 /**
  * This operator collocates the data units in a data set w.r.t. a key function.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ObjectFileSink.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ObjectFileSink.java
index 600eedc..72ffd9c 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ObjectFileSink.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ObjectFileSink.java
@@ -1,9 +1,5 @@
 package org.apache.wayang.basic.operators;
 
-import java.util.Objects;
-import org.apache.wayang.core.function.TransformationDescriptor;
-import org.apache.wayang.core.optimizer.costs.DefaultLoadEstimator;
-import org.apache.wayang.core.optimizer.costs.NestableLoadProfileEstimator;
 import org.apache.wayang.core.plan.wayangplan.UnarySink;
 import org.apache.wayang.core.types.DataSetType;
 
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/PageRankOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/PageRankOperator.java
index 49a9cc6..1358879 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/PageRankOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/PageRankOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
@@ -28,8 +29,6 @@ import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 /**
  * {@link Operator} for the PageRank algorithm. It takes as input a list of directed edges, whereby each edge
  * is represented as {@code (source vertex ID, target vertex ID)} tuple. Its output are the page ranks, codified
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ReduceByOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ReduceByOperator.java
index dd078d0..627bf0e 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ReduceByOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ReduceByOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.FunctionDescriptor;
@@ -28,8 +29,6 @@ import org.apache.wayang.core.optimizer.cardinality.DefaultCardinalityEstimator;
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 /**
  * This operator groups the elements of a data set and aggregates the groups.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ReduceOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ReduceOperator.java
index 8d93f0b..153df73 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ReduceOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ReduceOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.FunctionDescriptor;
 import org.apache.wayang.core.function.ReduceDescriptor;
@@ -26,8 +27,6 @@ import org.apache.wayang.core.optimizer.cardinality.FixedSizeCardinalityEstimato
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 /**
  * This operator is context dependent: after a {@link GroupByOperator}, it is meant to be a {@link ReduceByOperator};
  * otherwise, it is a {@link GlobalReduceOperator}.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/RepeatOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/RepeatOperator.java
index a2c97b7..3919c5c 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/RepeatOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/RepeatOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Optional;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
 import org.apache.wayang.core.optimizer.cardinality.SwitchForwardCardinalityEstimator;
@@ -29,11 +33,6 @@ import org.apache.wayang.core.plan.wayangplan.OperatorBase;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Optional;
-
 /**
  * This {@link Operator} repeats a certain subplan of {@link Operator}s for a given number of times.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/SampleOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/SampleOperator.java
index 50db0d7..5d0c773 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/SampleOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/SampleOperator.java
@@ -18,19 +18,18 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
+import java.util.function.IntUnaryOperator;
+import java.util.function.LongUnaryOperator;
 import org.apache.commons.lang3.Validate;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
 import org.apache.wayang.core.optimizer.cardinality.FixedSizeCardinalityEstimator;
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.Optional;
-import java.util.function.IntUnaryOperator;
-import java.util.function.LongUnaryOperator;
 
 /**
  * A random sample operator randomly selects its inputs from the input slot and pushes that element to the output slot.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/SortOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/SortOperator.java
index 3436b98..49a7273 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/SortOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/SortOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.FunctionDescriptor;
@@ -27,8 +28,6 @@ import org.apache.wayang.core.optimizer.cardinality.DefaultCardinalityEstimator;
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 
 /**
  * This operator sorts the elements in this dataset.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/TextFileSink.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/TextFileSink.java
index 970a11f..35f8d99 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/TextFileSink.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/TextFileSink.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Objects;
 import org.apache.wayang.core.function.TransformationDescriptor;
 import org.apache.wayang.core.optimizer.costs.DefaultLoadEstimator;
 import org.apache.wayang.core.optimizer.costs.NestableLoadProfileEstimator;
 import org.apache.wayang.core.plan.wayangplan.UnarySink;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Objects;
-
 /**
  * This {@link UnarySink} writes all incoming data quanta to a text file.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/TextFileSource.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/TextFileSource.java
index 67ddf49..76474b1 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/TextFileSource.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/TextFileSource.java
@@ -19,7 +19,15 @@
 package org.apache.wayang.basic.operators;
 
 
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.util.Optional;
+import java.util.OptionalDouble;
+import java.util.OptionalLong;
 import org.apache.commons.lang3.Validate;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.commons.util.profiledb.model.measurement.TimeMeasurement;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -29,15 +37,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.util.LimitedInputStream;
 import org.apache.wayang.core.util.fs.FileSystem;
 import org.apache.wayang.core.util.fs.FileSystems;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.util.Optional;
-import java.util.OptionalDouble;
-import java.util.OptionalLong;
 
 /**
  * This source reads a text file and outputs the lines as data units.
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/UnionAllOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/UnionAllOperator.java
index 449ee9e..5f4a075 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/UnionAllOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/UnionAllOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
@@ -27,8 +28,6 @@ import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 
 /**
  * This {@link Operator} creates the union (bag semantics) of two .
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ZipWithIdOperator.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ZipWithIdOperator.java
index 001b010..eba1ec2 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ZipWithIdOperator.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ZipWithIdOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.basic.operators;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.api.Configuration;
@@ -26,8 +27,6 @@ import org.apache.wayang.core.optimizer.cardinality.DefaultCardinalityEstimator;
 import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Optional;
-
 /**
  * This operators attaches a unique ID to each input data quantum.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/plugin/WayangBasic.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/plugin/WayangBasic.java
index e580af7..5a9321d 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/plugin/WayangBasic.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/plugin/WayangBasic.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.basic.plugin;
 
+import java.io.File;
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.mapping.Mappings;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.mapping.Mapping;
@@ -27,10 +30,6 @@ import org.apache.wayang.core.plugin.Plugin;
 import org.apache.wayang.core.util.ReflectionUtils;
 import org.apache.wayang.core.util.fs.LocalFileSystem;
 
-import java.io.File;
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Activator for the basic Wayang package.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/plugin/WayangBasicGraph.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/plugin/WayangBasicGraph.java
index 87c7045..5b867de 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/plugin/WayangBasicGraph.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/plugin/WayangBasicGraph.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.basic.plugin;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.mapping.Mappings;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.mapping.Mapping;
@@ -25,9 +27,6 @@ import org.apache.wayang.core.optimizer.channels.ChannelConversion;
 import org.apache.wayang.core.platform.Platform;
 import org.apache.wayang.core.plugin.Plugin;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Activator for graph operations being executed with Wayang's basic operators.
  */
diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/types/RecordType.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/types/RecordType.java
index 7988e99..09e79e2 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/types/RecordType.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/types/RecordType.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.basic.types;
 
-import org.apache.wayang.basic.data.Record;
-import org.apache.wayang.core.types.BasicDataUnitType;
-
 import java.util.Arrays;
 import java.util.Objects;
+import org.apache.wayang.basic.data.Record;
+import org.apache.wayang.core.types.BasicDataUnitType;
 
 /**
  * This is a specific {@link BasicDataUnitType} for {@link Record}s. In particular, it adds schema information.
diff --git a/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/function/ProjectionDescriptorTest.java b/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/function/ProjectionDescriptorTest.java
index 4532264..80862ac 100644
--- a/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/function/ProjectionDescriptorTest.java
+++ b/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/function/ProjectionDescriptorTest.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.basic.function;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.function.Function;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.basic.types.RecordType;
-
-import java.util.function.Function;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Tests for the {@link ProjectionDescriptor}.
diff --git a/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/mapping/ReduceByMappingTest.java b/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/mapping/ReduceByMappingTest.java
index 20d5a63..7b0b0a4 100644
--- a/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/mapping/ReduceByMappingTest.java
+++ b/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/mapping/ReduceByMappingTest.java
@@ -18,8 +18,6 @@
 
 package org.apache.wayang.basic.mapping;
 
-import org.junit.Assert;
-import org.junit.Test;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.basic.function.ProjectionDescriptor;
 import org.apache.wayang.basic.operators.GroupByOperator;
@@ -31,11 +29,13 @@ import org.apache.wayang.core.function.ReduceDescriptor;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.PlanTransformation;
 import org.apache.wayang.core.plan.wayangplan.Operator;
-import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.plan.wayangplan.UnarySink;
 import org.apache.wayang.core.plan.wayangplan.UnarySource;
+import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for the {@link ReduceByMapping}.
diff --git a/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/operators/MaterializedGroupByOperatorTest.java b/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/operators/MaterializedGroupByOperatorTest.java
index d5f21a7..2410a61 100644
--- a/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/operators/MaterializedGroupByOperatorTest.java
+++ b/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/operators/MaterializedGroupByOperatorTest.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.basic.operators;
 
-import org.junit.Test;
+import java.util.stream.StreamSupport;
 import org.apache.wayang.core.function.TransformationDescriptor;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
-
-import java.util.stream.StreamSupport;
+import org.junit.Test;
 
 /**
  * Tests for the {@link MaterializedGroupByOperator}.
diff --git a/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/operators/TextFileSourceTest.java b/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/operators/TextFileSourceTest.java
index 909169c..a12f832 100644
--- a/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/operators/TextFileSourceTest.java
+++ b/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/operators/TextFileSourceTest.java
@@ -19,19 +19,8 @@
 package org.apache.wayang.basic.operators;
 
 
-import org.apache.wayang.commons.util.profiledb.instrumentation.StopWatch;
-import org.apache.wayang.commons.util.profiledb.model.Experiment;
-import org.apache.wayang.commons.util.profiledb.model.Subject;
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.api.Job;
-import org.apache.wayang.core.optimizer.DefaultOptimizationContext;
-import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
-import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 import java.io.BufferedReader;
 import java.io.File;
@@ -41,9 +30,18 @@ import java.io.InputStreamReader;
 import java.net.URISyntaxException;
 import java.net.URL;
 import java.util.Optional;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.commons.util.profiledb.instrumentation.StopWatch;
+import org.apache.wayang.commons.util.profiledb.model.Experiment;
+import org.apache.wayang.commons.util.profiledb.model.Subject;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.api.Job;
+import org.apache.wayang.core.optimizer.DefaultOptimizationContext;
+import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
+import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link TextFileSource}.
diff --git a/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/types/RecordTypeTest.java b/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/types/RecordTypeTest.java
index 9d8b472..d7de74c 100644
--- a/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/types/RecordTypeTest.java
+++ b/wayang-commons/wayang-basic/src/test/java/org/apache/wayang/basic/types/RecordTypeTest.java
@@ -18,10 +18,10 @@
 
 package org.apache.wayang.basic.types;
 
-import org.junit.Assert;
-import org.junit.Test;
 import org.apache.wayang.basic.data.Record;
 import org.apache.wayang.core.types.DataSetType;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Tests for the {@link RecordType}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/Configuration.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/Configuration.java
index 966ecc5..9c264a6 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/Configuration.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/Configuration.java
@@ -18,8 +18,27 @@
 
 package org.apache.wayang.core.api;
 
+import static org.apache.wayang.core.util.ReflectionUtils.instantiateDefault;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Optional;
+import java.util.OptionalDouble;
+import java.util.OptionalLong;
+import java.util.Properties;
+import java.util.Random;
+import java.util.function.ToDoubleFunction;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.configuration.CollectionProvider;
 import org.apache.wayang.core.api.configuration.ConstantValueProvider;
 import org.apache.wayang.core.api.configuration.ExplicitCollectionProvider;
@@ -58,26 +77,6 @@ import org.apache.wayang.core.util.Actions;
 import org.apache.wayang.core.util.ReflectionUtils;
 import org.apache.wayang.core.util.fs.FileSystem;
 import org.apache.wayang.core.util.fs.FileSystems;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.Optional;
-import java.util.OptionalDouble;
-import java.util.OptionalLong;
-import java.util.Properties;
-import java.util.Random;
-import java.util.function.ToDoubleFunction;
-
-import static org.apache.wayang.core.util.ReflectionUtils.instantiateDefault;
 
 /**
  * Describes both the configuration of a {@link WayangContext} and {@link Job}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/Job.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/Job.java
index 97454b3..cbfa05f 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/Job.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/Job.java
@@ -18,6 +18,19 @@
 
 package org.apache.wayang.core.api;
 
+import java.io.IOException;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Queue;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.stream.Collectors;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.commons.util.profiledb.instrumentation.StopWatch;
 import org.apache.wayang.commons.util.profiledb.model.Experiment;
 import org.apache.wayang.commons.util.profiledb.model.measurement.TimeMeasurement;
@@ -67,20 +80,6 @@ import org.apache.wayang.core.util.Formats;
 import org.apache.wayang.core.util.OneTimeExecutable;
 import org.apache.wayang.core.util.ReflectionUtils;
 import org.apache.wayang.core.util.WayangCollections;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.io.IOException;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Queue;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.stream.Collectors;
 
 /**
  * Describes a job that is to be executed using Wayang.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/WayangContext.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/WayangContext.java
index f40f536..9c3150a 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/WayangContext.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/WayangContext.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.core.api;
 
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.commons.util.profiledb.model.Experiment;
 import org.apache.wayang.commons.util.profiledb.model.Subject;
 import org.apache.wayang.core.monitor.Monitor;
@@ -27,8 +29,6 @@ import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.plugin.Plugin;
 import org.apache.wayang.core.profiling.CardinalityRepository;
 import org.apache.wayang.core.util.ReflectionUtils;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
 
 /**
  * This is the entry point for users to work with Wayang.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/CollectionProvider.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/CollectionProvider.java
index e9e9b73..3a55bd4 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/CollectionProvider.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/CollectionProvider.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.api.configuration;
 
+import java.util.Collection;
+import java.util.Iterator;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 
-import java.util.Collection;
-import java.util.Iterator;
-
 /**
  * Provides a {@link Collection} of objects.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/ExplicitCollectionProvider.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/ExplicitCollectionProvider.java
index 28850a7..c67ab63 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/ExplicitCollectionProvider.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/ExplicitCollectionProvider.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.api.configuration;
 
-import org.apache.wayang.core.api.Configuration;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.LinkedHashSet;
 import java.util.Set;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.core.api.Configuration;
 
 /**
  * {@link CollectionProvider} implementation based on a blacklist and a whitelist.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/FunctionalCollectionProvider.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/FunctionalCollectionProvider.java
index d18211a..821eeb7 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/FunctionalCollectionProvider.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/FunctionalCollectionProvider.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.core.api.configuration;
 
-import org.apache.wayang.core.api.Configuration;
-
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.function.Function;
+import org.apache.wayang.core.api.Configuration;
 
 /**
  * {@link CollectionProvider} implementation based on a blacklist and a whitelist.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/FunctionalKeyValueProvider.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/FunctionalKeyValueProvider.java
index a567ab6..555c23a 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/FunctionalKeyValueProvider.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/FunctionalKeyValueProvider.java
@@ -18,10 +18,9 @@
 
 package org.apache.wayang.core.api.configuration;
 
-import org.apache.wayang.core.api.Configuration;
-
 import java.util.function.BiFunction;
 import java.util.function.Function;
+import org.apache.wayang.core.api.Configuration;
 
 /**
  * Implementation of {@link KeyValueProvider} that uses a {@link Function} to provide a value.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/FunctionalValueProvider.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/FunctionalValueProvider.java
index d861290..93e0be3 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/FunctionalValueProvider.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/FunctionalValueProvider.java
@@ -18,9 +18,8 @@
 
 package org.apache.wayang.core.api.configuration;
 
-import org.apache.wayang.core.api.Configuration;
-
 import java.util.function.Function;
+import org.apache.wayang.core.api.Configuration;
 
 /**
  * Used by {@link Configuration}s to provide some value.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/KeyValueProvider.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/KeyValueProvider.java
index 512d14c..b19d73a 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/KeyValueProvider.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/KeyValueProvider.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.api.configuration;
 
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.api.exception.WayangException;
+import java.util.Optional;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
-
-import java.util.Optional;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.api.exception.WayangException;
 
 /**
  * Used by {@link Configuration}s to provide some value.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/MapBasedKeyValueProvider.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/MapBasedKeyValueProvider.java
index 96881d9..0160d98 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/MapBasedKeyValueProvider.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/MapBasedKeyValueProvider.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.core.api.configuration;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.api.Configuration;
-
 import java.util.HashMap;
 import java.util.Map;
+import org.apache.commons.lang3.Validate;
+import org.apache.wayang.core.api.Configuration;
 
 /**
  * Implementation of {@link KeyValueProvider} that uses a {@link Map} to provide a value.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/ValueProvider.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/ValueProvider.java
index 3b8a905..5346816 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/ValueProvider.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/api/configuration/ValueProvider.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.api.configuration;
 
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.api.exception.WayangException;
+import java.util.Optional;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
-
-import java.util.Optional;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.api.exception.WayangException;
 
 /**
  * Used by {@link Configuration}s to provide some value.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/AggregationDescriptor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/AggregationDescriptor.java
index b1a6c4a..6f19937 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/AggregationDescriptor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/AggregationDescriptor.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.core.function;
 
+import java.util.Iterator;
 import org.apache.wayang.core.optimizer.costs.LoadEstimator;
 import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
 import org.apache.wayang.core.optimizer.costs.NestableLoadProfileEstimator;
@@ -25,8 +26,6 @@ import org.apache.wayang.core.types.BasicDataUnitType;
 import org.apache.wayang.core.types.DataUnitGroupType;
 import org.apache.wayang.core.types.DataUnitType;
 
-import java.util.Iterator;
-
 /**
  * This descriptor pertains to functions that take multiple data units and aggregate them into a single data unit.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/ConsumerDescriptor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/ConsumerDescriptor.java
index 83221bd..b3507bc 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/ConsumerDescriptor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/ConsumerDescriptor.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.function;
 
+import java.util.Optional;
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
 import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
 import org.apache.wayang.core.types.BasicDataUnitType;
 
-import java.util.Optional;
-
 /**
  * Created by bertty on 13-07-17.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/ExecutionContext.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/ExecutionContext.java
index a870ef0..ebfffdc 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/ExecutionContext.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/ExecutionContext.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.core.function;
 
+import java.util.Collection;
 import org.apache.wayang.core.plan.wayangplan.LoopSubplan;
 import org.apache.wayang.core.platform.Platform;
 
-import java.util.Collection;
-
 /**
  * While a function is executed on a certain {@link Platform}, allows access to some information of the context in
  * which the function is being executed.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/FlatMapDescriptor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/FlatMapDescriptor.java
index 948af92..2b1f991 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/FlatMapDescriptor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/FlatMapDescriptor.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.function;
 
+import java.util.Optional;
+import java.util.function.Function;
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
 import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
 import org.apache.wayang.core.types.BasicDataUnitType;
 import org.apache.wayang.core.types.DataUnitType;
 
-import java.util.Optional;
-import java.util.function.Function;
-
 /**
  * This descriptor pertains to functions that consume a single data unit and output a group of data units.
  *
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/FunctionDescriptor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/FunctionDescriptor.java
index 18d13e0..dfd2d9b 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/FunctionDescriptor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/FunctionDescriptor.java
@@ -18,11 +18,6 @@
 
 package org.apache.wayang.core.function;
 
-import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
-import org.apache.wayang.core.optimizer.costs.LoadEstimator;
-import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
-import org.apache.wayang.core.optimizer.costs.NestableLoadProfileEstimator;
-
 import java.io.Serializable;
 import java.util.Optional;
 import java.util.function.BiFunction;
@@ -30,6 +25,10 @@ import java.util.function.BinaryOperator;
 import java.util.function.Consumer;
 import java.util.function.Function;
 import java.util.function.Predicate;
+import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
+import org.apache.wayang.core.optimizer.costs.LoadEstimator;
+import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
+import org.apache.wayang.core.optimizer.costs.NestableLoadProfileEstimator;
 
 /**
  * A function operates on single data units or collections of those.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/MapPartitionsDescriptor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/MapPartitionsDescriptor.java
index d93833c..08f230c 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/MapPartitionsDescriptor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/MapPartitionsDescriptor.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.function;
 
+import java.util.Optional;
+import java.util.function.Function;
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
 import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
 import org.apache.wayang.core.types.BasicDataUnitType;
 import org.apache.wayang.core.types.DataUnitType;
 
-import java.util.Optional;
-import java.util.function.Function;
-
 /**
  * This descriptor pertains to functions that consume and output multiple data quanta.
  *
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/PredicateDescriptor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/PredicateDescriptor.java
index 6b90e27..01b5eef 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/PredicateDescriptor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/PredicateDescriptor.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.function;
 
+import java.util.Optional;
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
 import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
 import org.apache.wayang.core.types.BasicDataUnitType;
 
-import java.util.Optional;
-
 /**
  * This descriptor pertains to predicates that consume a single data unit.
  *
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/ReduceDescriptor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/ReduceDescriptor.java
index 0bd3853..fbc090c 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/ReduceDescriptor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/ReduceDescriptor.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.core.function;
 
+import java.util.function.BinaryOperator;
 import org.apache.wayang.core.optimizer.costs.LoadEstimator;
 import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
 import org.apache.wayang.core.optimizer.costs.NestableLoadProfileEstimator;
@@ -25,8 +26,6 @@ import org.apache.wayang.core.types.BasicDataUnitType;
 import org.apache.wayang.core.types.DataUnitGroupType;
 import org.apache.wayang.core.types.DataUnitType;
 
-import java.util.function.BinaryOperator;
-
 /**
  * This descriptor pertains to functions that take multiple data units and aggregate them into a single data unit
  * by means of a tree-like fold, i.e., using a commutative, associative function..
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/TransformationDescriptor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/TransformationDescriptor.java
index 3de70e7..34c7b6a 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/TransformationDescriptor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/function/TransformationDescriptor.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.function;
 
+import java.util.function.Function;
 import org.apache.wayang.core.optimizer.costs.LoadEstimator;
 import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
 import org.apache.wayang.core.optimizer.costs.NestableLoadProfileEstimator;
 import org.apache.wayang.core.types.BasicDataUnitType;
 
-import java.util.function.Function;
-
 /**
  * This descriptor pertains to functions that consume a single data unit and output a single data unit.
  *
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/OperatorPattern.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/OperatorPattern.java
index 03de5b2..f876dfa 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/OperatorPattern.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/OperatorPattern.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.core.mapping;
 
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.function.Predicate;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.plan.wayangplan.OperatorBase;
@@ -26,10 +29,6 @@ import org.apache.wayang.core.plan.wayangplan.Slot;
 import org.apache.wayang.core.plan.wayangplan.TopDownPlanVisitor;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.function.Predicate;
-
 /**
  * An operator pattern matches to a class of operator instances.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/PlanTransformation.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/PlanTransformation.java
index 090a05b..39e0720 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/PlanTransformation.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/PlanTransformation.java
@@ -18,6 +18,12 @@
 
 package org.apache.wayang.core.mapping;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.plan.wayangplan.OperatorAlternative;
@@ -25,13 +31,6 @@ import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.plan.wayangplan.PlanTraversal;
 import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.platform.Platform;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
 
 /**
  * Looks for a {@link SubplanPattern} in a {@link WayangPlan} and replaces it with an alternative {@link Operator}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/ReplacementSubplanFactory.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/ReplacementSubplanFactory.java
index 9315f65..b9c2f30 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/ReplacementSubplanFactory.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/ReplacementSubplanFactory.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.core.mapping;
 
+import java.util.Map;
+import java.util.function.BiFunction;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.plan.wayangplan.ActualOperator;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
@@ -27,9 +29,6 @@ import org.apache.wayang.core.plan.wayangplan.OperatorBase;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.plan.wayangplan.Subplan;
 
-import java.util.Map;
-import java.util.function.BiFunction;
-
 /**
  * This factory takes an {@link SubplanMatch} and derives a replacement {@link Subplan} from it.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/SubplanMatch.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/SubplanMatch.java
index 5f100b3..7bfc084 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/SubplanMatch.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/SubplanMatch.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.mapping;
 
-import org.apache.wayang.core.plan.wayangplan.Operator;
-import org.apache.wayang.core.platform.Platform;
-
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Optional;
 import java.util.Set;
+import org.apache.wayang.core.plan.wayangplan.Operator;
+import org.apache.wayang.core.platform.Platform;
 
 /**
  * A subplan match correlates a {@link SubplanPattern} with its actually matched .
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/SubplanPattern.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/SubplanPattern.java
index a53065d..b6eadda 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/SubplanPattern.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/mapping/SubplanPattern.java
@@ -18,6 +18,12 @@
 
 package org.apache.wayang.core.mapping;
 
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
@@ -25,15 +31,8 @@ import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.plan.wayangplan.OperatorBase;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.plan.wayangplan.PlanTraversal;
-import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.plan.wayangplan.TopDownPlanVisitor;
-
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
+import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 
 /**
  * A subplan pattern describes a class of subplans in a {@link WayangPlan}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/DisabledMonitor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/DisabledMonitor.java
index ebb598b..45077d9 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/DisabledMonitor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/DisabledMonitor.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.monitor;
 
-import org.apache.wayang.core.api.Configuration;
-
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import org.apache.wayang.core.api.Configuration;
 
 
 public class DisabledMonitor extends Monitor {
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/FileMonitor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/FileMonitor.java
index aee3af3..e264fd9 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/FileMonitor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/FileMonitor.java
@@ -19,16 +19,15 @@
 package org.apache.wayang.core.monitor;
 
 
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.util.fs.FileSystem;
-import org.apache.wayang.core.util.fs.FileSystems;
-
 import java.io.IOException;
 import java.io.OutputStreamWriter;
 import java.io.UncheckedIOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.util.fs.FileSystem;
+import org.apache.wayang.core.util.fs.FileSystems;
 import org.apache.wayang.core.util.json.JSONObject;
 
 public class FileMonitor extends Monitor {
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/HttpMonitor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/HttpMonitor.java
index dda6335..86b234c 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/HttpMonitor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/HttpMonitor.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.monitor;
 
-import org.apache.wayang.core.api.Configuration;
-
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import org.apache.wayang.core.api.Configuration;
 
 /**
  * TODO: Implement
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/Monitor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/Monitor.java
index 2d5e7c9..a4e8f83 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/Monitor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/Monitor.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.monitor;
 
-import org.apache.wayang.core.api.Configuration;
-
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import org.apache.wayang.core.api.Configuration;
 
 public abstract class Monitor {
 
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/ZeroMQMonitor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/ZeroMQMonitor.java
index c031032..881560e 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/ZeroMQMonitor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/monitor/ZeroMQMonitor.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.monitor;
 
-import org.apache.wayang.core.api.Configuration;
-
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import org.apache.wayang.core.api.Configuration;
 
 /**
  * TODO: Implement
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/AggregateOptimizationContext.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/AggregateOptimizationContext.java
index 964d94a..2592632 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/AggregateOptimizationContext.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/AggregateOptimizationContext.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.optimizer;
 
-import org.apache.wayang.core.plan.wayangplan.LoopSubplan;
-import org.apache.wayang.core.plan.wayangplan.Operator;
-
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
+import org.apache.wayang.core.plan.wayangplan.LoopSubplan;
+import org.apache.wayang.core.plan.wayangplan.Operator;
 
 /**
  * This {@link OptimizationContext} implementation aggregates several {@link OptimizationContext}s and exposes
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/DefaultOptimizationContext.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/DefaultOptimizationContext.java
index 187979d..f7dc525 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/DefaultOptimizationContext.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/DefaultOptimizationContext.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.core.optimizer;
 
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.optimizer.channels.ChannelConversionGraph;
 import org.apache.wayang.core.optimizer.enumeration.PlanEnumerationPruningStrategy;
@@ -25,16 +30,10 @@ import org.apache.wayang.core.plan.wayangplan.LoopSubplan;
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.plan.wayangplan.OperatorAlternative;
 import org.apache.wayang.core.plan.wayangplan.PlanTraversal;
-import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.plan.wayangplan.Subplan;
+import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.util.WayangArrays;
 
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-
 /**
  * This implementation of {@link OptimizationContext} represents a direct mapping from {@link OptimizationContext.OperatorContext}
  * to executions of the respective {@link Operator}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/OptimizationContext.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/OptimizationContext.java
index 19e7b01..bf10011 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/OptimizationContext.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/OptimizationContext.java
@@ -18,6 +18,17 @@
 
 package org.apache.wayang.core.optimizer;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.function.ToDoubleFunction;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.api.exception.WayangException;
@@ -40,23 +51,11 @@ import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.plan.wayangplan.OperatorContainer;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.plan.wayangplan.PlanTraversal;
-import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.plan.wayangplan.Slot;
+import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.platform.Platform;
 import org.apache.wayang.core.platform.lineage.ExecutionLineageNode;
 import org.apache.wayang.core.util.ReflectionUtils;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.function.ToDoubleFunction;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 /**
  * Manages contextual information required during the optimization of a {@link WayangPlan}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/OptimizationUtils.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/OptimizationUtils.java
index 3f71b5d..56f523b 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/OptimizationUtils.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/OptimizationUtils.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.core.optimizer;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.optimizer.enumeration.PlanEnumerationPruningStrategy;
@@ -26,14 +30,9 @@ import org.apache.wayang.core.plan.executionplan.ExecutionTask;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
-import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.plan.wayangplan.Slot;
 import org.apache.wayang.core.plan.wayangplan.SlotMapping;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Set;
+import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 
 /**
  * Utility methods for the optimization process.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/ProbabilisticIntervalEstimate.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/ProbabilisticIntervalEstimate.java
index 5e8a112..39027c6 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/ProbabilisticIntervalEstimate.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/ProbabilisticIntervalEstimate.java
@@ -18,10 +18,9 @@
 
 package org.apache.wayang.core.optimizer;
 
-import org.apache.wayang.core.util.Formats;
-
 import java.util.Comparator;
 import java.util.Objects;
+import org.apache.wayang.core.util.Formats;
 
 /***
  * An estimate that is capable of expressing uncertainty.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/SanityChecker.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/SanityChecker.java
index d4a5703..f3061b2 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/SanityChecker.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/SanityChecker.java
@@ -18,17 +18,16 @@
 
 package org.apache.wayang.core.optimizer;
 
+import java.util.Collection;
+import java.util.concurrent.atomic.AtomicBoolean;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.plan.wayangplan.OperatorAlternative;
 import org.apache.wayang.core.plan.wayangplan.PlanTraversal;
-import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.plan.wayangplan.Subplan;
+import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.util.WayangCollections;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.Collection;
-import java.util.concurrent.atomic.AtomicBoolean;
 
 /**
  * This class checks a {@link WayangPlan} for several sanity criteria:
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/AggregatingCardinalityEstimator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/AggregatingCardinalityEstimator.java
index 7d404a1..1a7f438 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/AggregatingCardinalityEstimator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/AggregatingCardinalityEstimator.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.optimizer.OptimizationContext;
-
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.commons.lang3.Validate;
+import org.apache.wayang.core.optimizer.OptimizationContext;
 
 /**
  * {@link CardinalityEstimator} implementation that can have multiple ways of calculating a {@link CardinalityEstimate}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/CardinalityEstimationTraversal.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/CardinalityEstimationTraversal.java
index 7dc5ae9..4cb5f1c 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/CardinalityEstimationTraversal.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/CardinalityEstimationTraversal.java
@@ -18,17 +18,6 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.optimizer.OptimizationContext;
-import org.apache.wayang.core.plan.wayangplan.InputSlot;
-import org.apache.wayang.core.plan.wayangplan.Operator;
-import org.apache.wayang.core.plan.wayangplan.OperatorContainer;
-import org.apache.wayang.core.plan.wayangplan.OutputSlot;
-import org.apache.wayang.core.plan.wayangplan.PlanTraversal;
-import org.apache.wayang.core.util.OneTimeExecutable;
-import org.apache.wayang.core.util.WayangCollections;
-
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -41,6 +30,16 @@ import java.util.Objects;
 import java.util.Queue;
 import java.util.Set;
 import java.util.stream.Stream;
+import org.apache.commons.lang3.Validate;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.optimizer.OptimizationContext;
+import org.apache.wayang.core.plan.wayangplan.InputSlot;
+import org.apache.wayang.core.plan.wayangplan.Operator;
+import org.apache.wayang.core.plan.wayangplan.OperatorContainer;
+import org.apache.wayang.core.plan.wayangplan.OutputSlot;
+import org.apache.wayang.core.plan.wayangplan.PlanTraversal;
+import org.apache.wayang.core.util.OneTimeExecutable;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * {@link CardinalityEstimator} that subsumes a DAG of operators, each one providing a local {@link CardinalityEstimator}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/CardinalityEstimatorManager.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/CardinalityEstimatorManager.java
index 5c046cc..0c930e7 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/CardinalityEstimatorManager.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/CardinalityEstimatorManager.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
+import java.util.Collections;
+import java.util.Map;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.OptimizationUtils;
@@ -30,11 +34,8 @@ import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.core.platform.ExecutionState;
 import org.apache.wayang.core.platform.Junction;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;;
 
-import java.util.Collections;
-import java.util.Map;
+;
 
 /**
  * Handles the {@link CardinalityEstimate}s of a {@link WayangPlan}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/CardinalityPusher.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/CardinalityPusher.java
index bb3bd58..13fb901 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/CardinalityPusher.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/CardinalityPusher.java
@@ -18,16 +18,15 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
+import java.util.Arrays;
+import java.util.Objects;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.costs.TimeEstimate;
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.util.WayangArrays;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.Arrays;
-import java.util.Objects;
 
 /**
  * Pushes a input {@link CardinalityEstimate}s through an {@link Operator} and yields its output
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/DefaultCardinalityEstimator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/DefaultCardinalityEstimator.java
index 7582261..d52c444 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/DefaultCardinalityEstimator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/DefaultCardinalityEstimator.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.optimizer.OptimizationContext;
-
 import java.util.Arrays;
 import java.util.function.ToLongBiFunction;
 import java.util.function.ToLongFunction;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.optimizer.OptimizationContext;
 
 /**
  * Default implementation of the {@link CardinalityEstimator}. Generalizes a single-point estimation function.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/LoopHeadAlternativeCardinalityPusher.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/LoopHeadAlternativeCardinalityPusher.java
index 67a1b7a..627936e 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/LoopHeadAlternativeCardinalityPusher.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/LoopHeadAlternativeCardinalityPusher.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
+import java.util.Collection;
+import java.util.function.BiFunction;
+import java.util.stream.Collectors;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
@@ -28,10 +31,6 @@ import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.plan.wayangplan.Slot;
 import org.apache.wayang.core.util.Tuple;
 
-import java.util.Collection;
-import java.util.function.BiFunction;
-import java.util.stream.Collectors;
-
 /**
  * {@link CardinalityPusher} implementation for {@link LoopHeadAlternative}s.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/LoopSubplanCardinalityPusher.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/LoopSubplanCardinalityPusher.java
index 4834bc2..32ddec7 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/LoopSubplanCardinalityPusher.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/LoopSubplanCardinalityPusher.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
@@ -26,12 +31,6 @@ import org.apache.wayang.core.plan.wayangplan.LoopSubplan;
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Objects;
-import java.util.Set;
-import java.util.stream.Collectors;
-
 /**
  * {@link CardinalityPusher} implementation for {@link LoopSubplan}s.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/OperatorAlternativeCardinalityPusher.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/OperatorAlternativeCardinalityPusher.java
index d5886fc..5beb60e 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/OperatorAlternativeCardinalityPusher.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/OperatorAlternativeCardinalityPusher.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
+import java.util.List;
+import java.util.stream.Collectors;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.OperatorAlternative;
 import org.apache.wayang.core.util.Tuple;
 
-import java.util.List;
-import java.util.stream.Collectors;
-
 /**
  * {@link CardinalityPusher} implementation for {@link OperatorAlternative}s.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/SubplanCardinalityPusher.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/SubplanCardinalityPusher.java
index 50184bc..71683a2 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/SubplanCardinalityPusher.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/SubplanCardinalityPusher.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.CompositeOperator;
@@ -28,12 +33,6 @@ import org.apache.wayang.core.plan.wayangplan.OperatorContainer;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.plan.wayangplan.Subplan;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.stream.Collectors;
-
 /**
  * {@link CardinalityPusher} implementation for {@link Subplan}s (but not for {@link LoopSubplan}s!)
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/SwitchForwardCardinalityEstimator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/SwitchForwardCardinalityEstimator.java
index 7f69fe5..bb50881 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/SwitchForwardCardinalityEstimator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/cardinality/SwitchForwardCardinalityEstimator.java
@@ -18,9 +18,9 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
+import org.apache.logging.log4j.LogManager;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
-import org.apache.logging.log4j.LogManager;
 
 /**
  * Forwards the {@link CardinalityEstimate} of any given {@link InputSlot} that is not {@code null}. Asserts that
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/channels/ChannelConversion.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/channels/ChannelConversion.java
index 95590a8..fffbce5 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/channels/ChannelConversion.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/channels/ChannelConversion.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.core.optimizer.channels;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
@@ -26,9 +28,6 @@ import org.apache.wayang.core.plan.executionplan.Channel;
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.platform.ChannelDescriptor;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Can convert a given {@link Channel} to another {@link Channel}.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/channels/ChannelConversionGraph.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/channels/ChannelConversionGraph.java
index 3e06c95..fcce46e 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/channels/ChannelConversionGraph.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/channels/ChannelConversionGraph.java
@@ -18,6 +18,22 @@
 
 package org.apache.wayang.core.optimizer.channels;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+import java.util.Set;
+import java.util.function.ToDoubleFunction;
+import java.util.stream.Collectors;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.DefaultOptimizationContext;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -37,25 +53,8 @@ import org.apache.wayang.core.platform.Junction;
 import org.apache.wayang.core.util.Bitmask;
 import org.apache.wayang.core.util.OneTimeExecutable;
 import org.apache.wayang.core.util.ReflectionUtils;
-import org.apache.wayang.core.util.WayangCollections;
 import org.apache.wayang.core.util.Tuple;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
-import java.util.Set;
-import java.util.function.ToDoubleFunction;
-import java.util.stream.Collectors;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * This graph contains a set of {@link ChannelConversion}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/channels/DefaultChannelConversion.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/channels/DefaultChannelConversion.java
index d4c97a8..7c38140 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/channels/DefaultChannelConversion.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/channels/DefaultChannelConversion.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.core.optimizer.channels;
 
+import java.util.Collection;
+import java.util.function.BiFunction;
+import java.util.function.Supplier;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
@@ -28,10 +31,6 @@ import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.platform.ChannelDescriptor;
 
-import java.util.Collection;
-import java.util.function.BiFunction;
-import java.util.function.Supplier;
-
 /**
  * Default implementation of the {@link ChannelConversion}. Can be used without further subclassing.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/DefaultLoadEstimator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/DefaultLoadEstimator.java
index 775129e..dc13005 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/DefaultLoadEstimator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/DefaultLoadEstimator.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.optimizer.costs;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
-import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
-
 import java.util.Arrays;
 import java.util.function.ToDoubleBiFunction;
 import java.util.function.ToLongBiFunction;
 import java.util.stream.LongStream;
+import org.apache.commons.lang3.Validate;
+import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
+import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 
 /**
  * Implementation of {@link LoadEstimator} that uses a single-point cost function.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/EstimationContext.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/EstimationContext.java
index d1896fd..789b4d8 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/EstimationContext.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/EstimationContext.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.optimizer.costs;
 
+import java.util.Arrays;
+import java.util.Collection;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.util.JsonSerializables;
 import org.apache.wayang.core.util.JsonSerializer;
-
-import java.util.Arrays;
-import java.util.Collection;
 import org.apache.wayang.core.util.json.JSONObject;
 
 /**
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/IntervalLoadEstimator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/IntervalLoadEstimator.java
index 2d7d697..9a5c395 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/IntervalLoadEstimator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/IntervalLoadEstimator.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.optimizer.costs;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
-import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
-
 import java.util.Arrays;
 import java.util.function.ToDoubleBiFunction;
 import java.util.function.ToLongBiFunction;
 import java.util.stream.LongStream;
+import org.apache.commons.lang3.Validate;
+import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
+import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 
 /**
  * Implementation of {@link LoadEstimator} that uses a interval-based cost function.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadEstimator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadEstimator.java
index 0f07067..9fb40ba 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadEstimator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadEstimator.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.optimizer.costs;
 
+import java.util.Arrays;
 import org.apache.wayang.core.function.FunctionDescriptor;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 
-import java.util.Arrays;
-
 /**
  * Describes the resource utilization of something executable within an {@link EstimationContext}, such as an
  * {@link ExecutionOperator} or a {@link FunctionDescriptor}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadProfile.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadProfile.java
index 94f5856..c0da95d 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadProfile.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadProfile.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.optimizer.costs;
 
+import java.util.Collection;
+import java.util.LinkedList;
 import org.apache.wayang.core.function.FunctionDescriptor;
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.util.JsonSerializable;
 import org.apache.wayang.core.util.JsonSerializables;
-
-import java.util.Collection;
-import java.util.LinkedList;
 import org.apache.wayang.core.util.json.JSONObject;
 
 /**
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadProfileEstimator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadProfileEstimator.java
index 1eb2dc3..7e933b2 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadProfileEstimator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadProfileEstimator.java
@@ -18,10 +18,9 @@
 
 package org.apache.wayang.core.optimizer.costs;
 
-import org.apache.wayang.core.api.Configuration;
-
 import java.util.Collection;
 import java.util.LinkedList;
+import org.apache.wayang.core.api.Configuration;
 
 /**
  * Estimates the {@link LoadProfile} of some executable artifact that takes some input data quanta and produces them.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadProfileEstimators.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadProfileEstimators.java
index fcfe1fe..a0e5ca4 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadProfileEstimators.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/LoadProfileEstimators.java
@@ -18,6 +18,19 @@
 
 package org.apache.wayang.core.optimizer.costs;
 
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.function.ToDoubleBiFunction;
+import java.util.function.ToDoubleFunction;
+import java.util.function.ToLongBiFunction;
+import java.util.stream.Collectors;
+import java.util.stream.StreamSupport;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.function.FunctionDescriptor;
@@ -33,20 +46,6 @@ import org.apache.wayang.core.util.mathex.DefaultContext;
 import org.apache.wayang.core.util.mathex.Expression;
 import org.apache.wayang.core.util.mathex.ExpressionBuilder;
 import org.apache.wayang.core.util.mathex.exceptions.EvaluationException;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.function.ToDoubleBiFunction;
-import java.util.function.ToDoubleFunction;
-import java.util.function.ToLongBiFunction;
-import java.util.stream.Collectors;
-import java.util.stream.StreamSupport;
 
 /**
  * Utilities to deal with {@link LoadProfileEstimator}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/NestableLoadProfileEstimator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/NestableLoadProfileEstimator.java
index 7bd64c2..58be3d1 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/NestableLoadProfileEstimator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/NestableLoadProfileEstimator.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.optimizer.costs;
 
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.api.exception.WayangException;
-import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
-
 import java.util.Collection;
 import java.util.LinkedList;
 import java.util.function.Function;
 import java.util.function.ToDoubleBiFunction;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.api.exception.WayangException;
+import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
 
 /**
  * {@link LoadProfileEstimator} that can host further {@link LoadProfileEstimator}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/SimpleEstimationContext.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/SimpleEstimationContext.java
index 5e3cac2..38b9851 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/SimpleEstimationContext.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/costs/SimpleEstimationContext.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.optimizer.costs;
 
+import java.util.Collection;
 import java.util.HashMap;
+import java.util.List;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
 import org.apache.wayang.core.util.JsonSerializables;
 import org.apache.wayang.core.util.JsonSerializer;
-
-import java.util.Collection;
-import java.util.List;
 import org.apache.wayang.core.util.json.JSONObject;
 
 /**
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/ExecutionTaskFlow.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/ExecutionTaskFlow.java
index 6f6daea..06f22cd 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/ExecutionTaskFlow.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/ExecutionTaskFlow.java
@@ -18,16 +18,6 @@
 
 package org.apache.wayang.core.optimizer.enumeration;
 
-import org.apache.wayang.core.plan.executionplan.Channel;
-import org.apache.wayang.core.plan.executionplan.ExecutionPlan;
-import org.apache.wayang.core.plan.executionplan.ExecutionStage;
-import org.apache.wayang.core.plan.executionplan.ExecutionTask;
-import org.apache.wayang.core.plan.executionplan.PlatformExecution;
-import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
-import org.apache.wayang.core.plan.wayangplan.traversal.AbstractTopologicalTraversal;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -36,6 +26,15 @@ import java.util.List;
 import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Stream;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.core.plan.executionplan.Channel;
+import org.apache.wayang.core.plan.executionplan.ExecutionPlan;
+import org.apache.wayang.core.plan.executionplan.ExecutionStage;
+import org.apache.wayang.core.plan.executionplan.ExecutionTask;
+import org.apache.wayang.core.plan.executionplan.PlatformExecution;
+import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
+import org.apache.wayang.core.plan.wayangplan.traversal.AbstractTopologicalTraversal;
 
 /**
  * Graph of {@link ExecutionTask}s and {@link Channel}s. Does not define {@link ExecutionStage}s and
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/ExecutionTaskFlowCompiler.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/ExecutionTaskFlowCompiler.java
index 972fb4e..098af4d 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/ExecutionTaskFlowCompiler.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/ExecutionTaskFlowCompiler.java
@@ -18,6 +18,17 @@
 
 package org.apache.wayang.core.optimizer.enumeration;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import org.apache.logging.log4j.LogManager;
 import org.apache.wayang.core.optimizer.OptimizationUtils;
 import org.apache.wayang.core.plan.executionplan.Channel;
 import org.apache.wayang.core.plan.executionplan.ExecutionPlan;
@@ -33,18 +44,6 @@ import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.plan.wayangplan.traversal.AbstractTopologicalTraversal;
 import org.apache.wayang.core.platform.Junction;
 import org.apache.wayang.core.platform.Platform;
-import org.apache.logging.log4j.LogManager;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 /**
  * Creates an {@link ExecutionTaskFlow} from a {@link PlanImplementation}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/LatentOperatorPruningStrategy.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/LatentOperatorPruningStrategy.java
index a228f14..7aaee98 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/LatentOperatorPruningStrategy.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/LatentOperatorPruningStrategy.java
@@ -18,19 +18,18 @@
 
 package org.apache.wayang.core.optimizer.enumeration;
 
+import java.util.Collection;
+import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.plan.wayangplan.Slot;
 import org.apache.wayang.core.platform.Platform;
 import org.apache.wayang.core.util.Tuple;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
 
 /**
  * This {@link PlanEnumerationPruningStrategy} follows the idea that we can prune a
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/LoopEnumerator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/LoopEnumerator.java
index f884364..1ac5c4e 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/LoopEnumerator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/LoopEnumerator.java
@@ -18,6 +18,12 @@
 
 package org.apache.wayang.core.optimizer.enumeration;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import org.apache.logging.log4j.LogManager;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
 import org.apache.wayang.core.plan.wayangplan.LoopHeadOperator;
@@ -26,13 +32,6 @@ import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.platform.Junction;
 import org.apache.wayang.core.util.OneTimeExecutable;
 import org.apache.wayang.core.util.Tuple;
-import org.apache.logging.log4j.LogManager;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
 
 /**
  * Enumerator for {@link LoopSubplan}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/LoopImplementation.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/LoopImplementation.java
index 57416fa..0b577f0 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/LoopImplementation.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/LoopImplementation.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.core.optimizer.enumeration;
 
+import java.util.LinkedList;
+import java.util.List;
+import java.util.stream.Stream;
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
 import org.apache.wayang.core.optimizer.costs.TimeEstimate;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
@@ -27,10 +30,6 @@ import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.platform.Junction;
 
-import java.util.LinkedList;
-import java.util.List;
-import java.util.stream.Stream;
-
 /**
  * Describes the enumeration of a {@link LoopSubplan}.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/PlanEnumeration.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/PlanEnumeration.java
index e00753c..b441ebb 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/PlanEnumeration.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/PlanEnumeration.java
@@ -19,6 +19,19 @@
 package org.apache.wayang.core.optimizer.enumeration;
 
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.commons.util.profiledb.model.measurement.TimeMeasurement;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -33,22 +46,8 @@ import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.platform.Junction;
 import org.apache.wayang.core.util.MultiMap;
-import org.apache.wayang.core.util.WayangCollections;
 import org.apache.wayang.core.util.Tuple;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.function.Predicate;
-import java.util.stream.Collectors;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * Represents a collection of {@link PlanImplementation}s that all implement the same section of a {@link WayangPlan} (which
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/PlanEnumerator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/PlanEnumerator.java
index 17ce28b..a490690 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/PlanEnumerator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/PlanEnumerator.java
@@ -18,6 +18,25 @@
 
 package org.apache.wayang.core.optimizer.enumeration;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.PriorityQueue;
+import java.util.Queue;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicReference;
+import java.util.function.ToDoubleFunction;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.commons.util.profiledb.model.measurement.TimeMeasurement;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.exception.WayangException;
@@ -35,30 +54,10 @@ import org.apache.wayang.core.plan.wayangplan.OperatorAlternative;
 import org.apache.wayang.core.plan.wayangplan.OperatorContainer;
 import org.apache.wayang.core.plan.wayangplan.Operators;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
-import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.plan.wayangplan.Slot;
-import org.apache.wayang.core.util.WayangCollections;
+import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.util.Tuple;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.PriorityQueue;
-import java.util.Queue;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicReference;
-import java.util.function.ToDoubleFunction;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * The plan partitioner recursively dissects a {@link WayangPlan} into {@link PlanEnumeration}s and then assembles
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/PlanImplementation.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/PlanImplementation.java
index d8f49af..6cf32c1 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/PlanImplementation.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/PlanImplementation.java
@@ -18,7 +18,24 @@
 
 package org.apache.wayang.core.optimizer.enumeration;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.function.ToDoubleFunction;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 import org.apache.commons.lang3.Validate;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
@@ -33,31 +50,13 @@ import org.apache.wayang.core.plan.wayangplan.LoopSubplan;
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.plan.wayangplan.OperatorAlternative;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
-import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.plan.wayangplan.Slot;
+import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.platform.Junction;
 import org.apache.wayang.core.platform.Platform;
 import org.apache.wayang.core.util.Canonicalizer;
-import org.apache.wayang.core.util.WayangCollections;
 import org.apache.wayang.core.util.Tuple;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
-import java.util.function.ToDoubleFunction;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * Represents a partial execution plan.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/RandomPruningStrategy.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/RandomPruningStrategy.java
index c10eb32..21c7731 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/RandomPruningStrategy.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/RandomPruningStrategy.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.core.optimizer.enumeration;
 
-import org.apache.wayang.core.api.Configuration;
-
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Random;
+import org.apache.wayang.core.api.Configuration;
 
 /**
  * This {@link PlanEnumerationPruningStrategy} retains only the best {@code k} {@link PlanImplementation}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/StageAssignmentTraversal.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/StageAssignmentTraversal.java
index 2ff313c..70c0746 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/StageAssignmentTraversal.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/StageAssignmentTraversal.java
@@ -18,7 +18,20 @@
 
 package org.apache.wayang.core.optimizer.enumeration;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Queue;
+import java.util.Set;
+import java.util.stream.Collectors;
 import org.apache.commons.lang3.Validate;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.plan.executionplan.Channel;
 import org.apache.wayang.core.plan.executionplan.ExecutionPlan;
 import org.apache.wayang.core.plan.executionplan.ExecutionStage;
@@ -34,20 +47,6 @@ import org.apache.wayang.core.platform.Platform;
 import org.apache.wayang.core.util.Iterators;
 import org.apache.wayang.core.util.OneTimeExecutable;
 import org.apache.wayang.core.util.Tuple;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.Queue;
-import java.util.Set;
-import java.util.stream.Collectors;
 
 /**
  * Builds an {@link ExecutionPlan} from a {@link ExecutionTaskFlow}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/TopKPruningStrategy.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/TopKPruningStrategy.java
index a80f9d9..2447710 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/TopKPruningStrategy.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/optimizer/enumeration/TopKPruningStrategy.java
@@ -18,9 +18,8 @@
 
 package org.apache.wayang.core.optimizer.enumeration;
 
-import org.apache.wayang.core.api.Configuration;
-
 import java.util.ArrayList;
+import org.apache.wayang.core.api.Configuration;
 
 /**
  * This {@link PlanEnumerationPruningStrategy} retains only the best {@code k} {@link PlanImplementation}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/Channel.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/Channel.java
index f6e5804..a96b347 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/Channel.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/Channel.java
@@ -18,33 +18,32 @@
 
 package org.apache.wayang.core.plan.executionplan;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
-import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.plan.wayangplan.Slot;
+import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.platform.Breakpoint;
 import org.apache.wayang.core.platform.ChannelDescriptor;
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.core.platform.Executor;
 import org.apache.wayang.core.platform.Platform;
 import org.apache.wayang.core.types.DataSetType;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Objects;
-import java.util.Set;
-import java.util.function.Predicate;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
 
 /**
  * Models the data movement between to {@link ExecutionTask}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/ExecutionPlan.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/ExecutionPlan.java
index 352c413..2961f1f 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/ExecutionPlan.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/ExecutionPlan.java
@@ -18,12 +18,6 @@
 
 package org.apache.wayang.core.plan.executionplan;
 
-import org.apache.wayang.core.optimizer.enumeration.ExecutionTaskFlow;
-import org.apache.wayang.core.optimizer.enumeration.StageAssignmentTraversal;
-import org.apache.wayang.core.util.Counter;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -35,6 +29,11 @@ import java.util.Queue;
 import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.core.optimizer.enumeration.ExecutionTaskFlow;
+import org.apache.wayang.core.optimizer.enumeration.StageAssignmentTraversal;
+import org.apache.wayang.core.util.Counter;
 
 /**
  * Represents an executable, cross-platform data flow. Consists of muliple {@link PlatformExecution}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/ExecutionStage.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/ExecutionStage.java
index ced3433..e6a1e8f 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/ExecutionStage.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/ExecutionStage.java
@@ -18,11 +18,6 @@
 
 package org.apache.wayang.core.plan.executionplan;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.plan.wayangplan.LoopHeadOperator;
-import org.apache.wayang.core.platform.Platform;
-import org.apache.wayang.core.util.WayangCollections;
-
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -34,6 +29,10 @@ import java.util.Map;
 import java.util.Queue;
 import java.util.Set;
 import java.util.stream.Collectors;
+import org.apache.commons.lang3.Validate;
+import org.apache.wayang.core.plan.wayangplan.LoopHeadOperator;
+import org.apache.wayang.core.platform.Platform;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * Resides within a {@link PlatformExecution} and represents the minimum execution unit that is controlled by Wayang.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/ExecutionStageLoop.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/ExecutionStageLoop.java
index b2b6e94..f112738 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/ExecutionStageLoop.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/ExecutionStageLoop.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.plan.executionplan;
 
+import java.util.Collection;
+import java.util.HashSet;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.plan.wayangplan.LoopHeadOperator;
 import org.apache.wayang.core.plan.wayangplan.LoopSubplan;
 
-import java.util.Collection;
-import java.util.HashSet;
-
 /**
  * This class models the execution equivalent of {@link LoopSubplan}s.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/PlatformExecution.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/PlatformExecution.java
index 877eba4..a338e18 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/PlatformExecution.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/executionplan/PlatformExecution.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.plan.executionplan;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.platform.Platform;
-
 import java.util.Collection;
 import java.util.LinkedList;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicInteger;
+import org.apache.commons.lang3.Validate;
+import org.apache.wayang.core.platform.Platform;
 
 /**
  * Complete data flow on a single platform, that consists of multiple {@link ExecutionStage}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/ElementaryOperator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/ElementaryOperator.java
index b56f05a..3a4ae67 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/ElementaryOperator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/ElementaryOperator.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
 
-import java.util.Optional;
-
 /**
  * Indivisible {@link Operator} that is not containing other {@link Operator}s.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/EstimationContextProperty.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/EstimationContextProperty.java
index c64ac69..73763b8 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/EstimationContextProperty.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/EstimationContextProperty.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.apache.wayang.core.optimizer.costs.EstimationContext;
-
 import java.lang.annotation.ElementType;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.lang.annotation.Target;
+import org.apache.wayang.core.optimizer.costs.EstimationContext;
 
 /**
  * Marks a property of an {@link Operator} that is relevant to the estimation process, i.e., should be provided
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/ExecutionOperator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/ExecutionOperator.java
index f95a946..ce3b055 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/ExecutionOperator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/ExecutionOperator.java
@@ -18,6 +18,12 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Optional;
+import org.apache.logging.log4j.LogManager;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
@@ -33,13 +39,6 @@ import org.apache.wayang.core.platform.Platform;
 import org.apache.wayang.core.platform.lineage.ExecutionLineageNode;
 import org.apache.wayang.core.platform.lineage.LazyExecutionLineageNode;
 import org.apache.wayang.core.util.Tuple;
-import org.apache.logging.log4j.LogManager;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Optional;
 
 /**
  * An execution operator is handled by a certain platform.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/InputSlot.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/InputSlot.java
index 6713f48..e846e3e 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/InputSlot.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/InputSlot.java
@@ -18,9 +18,8 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.apache.wayang.core.types.DataSetType;
-
 import java.util.List;
+import org.apache.wayang.core.types.DataSetType;
 
 /**
  * An input slot declares an input of an {@link Operator}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopHeadAlternative.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopHeadAlternative.java
index 70d9854..cd1adfb 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopHeadAlternative.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopHeadAlternative.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
+import java.util.Collection;
+import java.util.Objects;
+import java.util.stream.Collectors;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityPusher;
 import org.apache.wayang.core.optimizer.cardinality.LoopHeadAlternativeCardinalityPusher;
 import org.apache.wayang.core.util.WayangCollections;
 
-import java.util.Collection;
-import java.util.Objects;
-import java.util.stream.Collectors;
-
 /**
  * Special {@link OperatorAlternative} for {@link LoopHeadOperator}s.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopHeadOperator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopHeadOperator.java
index 5db5c24..63d0bc6 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopHeadOperator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopHeadOperator.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
+import java.util.Collection;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityPusher;
 import org.apache.wayang.core.optimizer.cardinality.DefaultCardinalityPusher;
 
-import java.util.Collection;
-
 /**
  * Head of a {@link LoopSubplan}.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopIsolator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopIsolator.java
index e497c08..d8dcf7f 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopIsolator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopIsolator.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.util.OneTimeExecutable;
-import org.apache.logging.log4j.LogManager;
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.List;
+import org.apache.commons.lang3.Validate;
+import org.apache.logging.log4j.LogManager;
+import org.apache.wayang.core.util.OneTimeExecutable;
 
 /**
  * Goes over a {@link WayangPlan} and isolates its loops.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopSubplan.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopSubplan.java
index 079d071..a86790c 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopSubplan.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/LoopSubplan.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityPusher;
 import org.apache.wayang.core.optimizer.cardinality.LoopSubplanCardinalityPusher;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Wraps a loop of {@link Operator}s.
  *
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/Operator.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/Operator.java
index 5095342..de856eb 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/Operator.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/Operator.java
@@ -18,14 +18,6 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.optimizer.OptimizationContext;
-import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
-import org.apache.wayang.core.optimizer.cardinality.CardinalityPusher;
-import org.apache.wayang.core.optimizer.cardinality.DefaultCardinalityPusher;
-import org.apache.wayang.core.platform.Platform;
-
 import java.lang.reflect.Field;
 import java.util.Arrays;
 import java.util.Collection;
@@ -36,6 +28,13 @@ import java.util.Objects;
 import java.util.Queue;
 import java.util.Set;
 import java.util.stream.Collectors;
+import org.apache.commons.lang3.Validate;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.optimizer.OptimizationContext;
+import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
+import org.apache.wayang.core.optimizer.cardinality.CardinalityPusher;
+import org.apache.wayang.core.optimizer.cardinality.DefaultCardinalityPusher;
+import org.apache.wayang.core.platform.Platform;
 
 /**
  * An operator is any node that within a {@link WayangPlan}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorAlternative.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorAlternative.java
index babad5d..aff41f8 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorAlternative.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorAlternative.java
@@ -18,12 +18,6 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.optimizer.OptimizationContext;
-import org.apache.wayang.core.optimizer.cardinality.CardinalityPusher;
-import org.apache.wayang.core.optimizer.cardinality.OperatorAlternativeCardinalityPusher;
-import org.apache.wayang.core.util.WayangCollections;
-
 import java.util.Collection;
 import java.util.Collections;
 import java.util.LinkedList;
@@ -31,6 +25,11 @@ import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.optimizer.OptimizationContext;
+import org.apache.wayang.core.optimizer.cardinality.CardinalityPusher;
+import org.apache.wayang.core.optimizer.cardinality.OperatorAlternativeCardinalityPusher;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * This operator encapsulates operators that are alternative to each other.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorBase.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorBase.java
index e351b49..e3d662c 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorBase.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorBase.java
@@ -26,6 +26,13 @@ import com.google.gson.JsonObject;
 import com.google.gson.JsonParseException;
 import com.google.gson.JsonSerializationContext;
 import com.google.gson.JsonSerializer;
+import java.lang.reflect.Type;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import java.util.function.Supplier;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.function.FlatMapDescriptor;
 import org.apache.wayang.core.function.FunctionDescriptor;
@@ -39,14 +46,6 @@ import org.apache.wayang.core.platform.Platform;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.util.Tuple;
 
-import java.lang.reflect.Type;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.function.Supplier;
-
 /**
  * Helper class for the implementation of the {@link Operator} interface.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorContainer.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorContainer.java
index 38e86dd..d9d6087 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorContainer.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorContainer.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.apache.wayang.core.optimizer.OptimizationContext;
-import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
-import org.apache.wayang.core.util.WayangCollections;
-import org.apache.logging.log4j.LogManager;
-
 import java.util.Collection;
 import java.util.Collections;
 import java.util.stream.Collectors;
+import org.apache.logging.log4j.LogManager;
+import org.apache.wayang.core.optimizer.OptimizationContext;
+import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * This is not an {@link Operator} in its own right. However, it contains a set of operators and can redirect
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorContainers.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorContainers.java
index becd0a3..4e0d0c4 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorContainers.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OperatorContainers.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.apache.commons.lang3.Validate;
-
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import java.util.stream.Stream;
+import org.apache.commons.lang3.Validate;
 
 /**
  * Utilities to deal with {@link OperatorContainer}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OutputSlot.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OutputSlot.java
index b9a0b91..c9f3762 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OutputSlot.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/OutputSlot.java
@@ -18,8 +18,6 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.apache.wayang.core.types.DataSetType;
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.LinkedList;
@@ -29,6 +27,7 @@ import java.util.Queue;
 import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.wayang.core.types.DataSetType;
 
 /**
  * An output slot declares an output of an {@link Operator}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/PlanTraversal.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/PlanTraversal.java
index f289e5e..317ebc0 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/PlanTraversal.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/PlanTraversal.java
@@ -18,9 +18,6 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashSet;
@@ -28,6 +25,8 @@ import java.util.Set;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 
 /**
  * Traverse a plan. In each instance, every operator will be traversed only once.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/Slot.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/Slot.java
index 93f1488..09bb233 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/Slot.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/Slot.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
+import java.util.Collection;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Collection;
-
 /**
  * Abstract class for inputs and outputs to operators.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/SlotMapping.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/SlotMapping.java
index 48a1e8a..64bcd93 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/SlotMapping.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/SlotMapping.java
@@ -18,18 +18,16 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import java.util.Map.Entry;
-import org.apache.wayang.core.util.WayangCollections;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.Map;
-import java.util.stream.Collectors;
+import java.util.Map.Entry;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * This mapping can be used to encapsulate subplans by connecting slots (usually <b>against</b> the data flow direction,
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/Subplan.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/Subplan.java
index 4954f37..a599229 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/Subplan.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/Subplan.java
@@ -18,12 +18,6 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.optimizer.OptimizationContext;
-import org.apache.wayang.core.optimizer.cardinality.CardinalityPusher;
-import org.apache.wayang.core.optimizer.cardinality.SubplanCardinalityPusher;
-
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -32,6 +26,11 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.commons.lang3.Validate;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.optimizer.OptimizationContext;
+import org.apache.wayang.core.optimizer.cardinality.CardinalityPusher;
+import org.apache.wayang.core.optimizer.cardinality.SubplanCardinalityPusher;
 
 /**
  * A subplan encapsulates connected operators as a single operator.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/WayangPlan.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/WayangPlan.java
index 649a121..8ec78fc 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/WayangPlan.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/WayangPlan.java
@@ -18,19 +18,18 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.api.exception.WayangException;
-import org.apache.wayang.core.mapping.PlanTransformation;
-import org.apache.wayang.core.optimizer.SanityChecker;
-import org.apache.wayang.core.util.WayangCollections;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.Set;
+import org.apache.commons.lang3.Validate;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.core.api.exception.WayangException;
+import org.apache.wayang.core.mapping.PlanTransformation;
+import org.apache.wayang.core.optimizer.SanityChecker;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * A Wayang plan consists of a set of {@link Operator}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/traversal/AbstractTopologicalTraversal.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/traversal/AbstractTopologicalTraversal.java
index 10ba588..e08c77c 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/traversal/AbstractTopologicalTraversal.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plan/wayangplan/traversal/AbstractTopologicalTraversal.java
@@ -18,17 +18,16 @@
 
 package org.apache.wayang.core.plan.wayangplan.traversal;
 
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.Queue;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.plan.wayangplan.WayangPlan;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.Queue;
 
 /**
  * Encapsulates logic to traverse a {@link WayangPlan} in a topological, bottom-up manner.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/AbstractChannelInstance.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/AbstractChannelInstance.java
index a45b565..878609b 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/AbstractChannelInstance.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/AbstractChannelInstance.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.platform;
 
+import java.util.OptionalLong;
+import org.apache.logging.log4j.LogManager;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.executionplan.ExecutionTask;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.platform.lineage.ChannelLineageNode;
-import org.apache.logging.log4j.LogManager;
-
-import java.util.OptionalLong;
 
 /**
  * Template for {@link ChannelInstance} implementations.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/AtomicExecutionGroup.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/AtomicExecutionGroup.java
index 1f8ba8a..a98d7ee 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/AtomicExecutionGroup.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/AtomicExecutionGroup.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.core.platform;
 
+import java.util.Collection;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.costs.EstimationContext;
 import org.apache.wayang.core.optimizer.costs.LoadProfile;
@@ -26,8 +27,6 @@ import org.apache.wayang.core.optimizer.costs.SimpleEstimationContext;
 import org.apache.wayang.core.optimizer.costs.TimeEstimate;
 import org.apache.wayang.core.util.JsonSerializables;
 import org.apache.wayang.core.util.JsonSerializer;
-
-import java.util.Collection;
 import org.apache.wayang.core.util.json.JSONObject;
 
 /**
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/CardinalityBreakpoint.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/CardinalityBreakpoint.java
index a80ffdc..f932ff2 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/CardinalityBreakpoint.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/CardinalityBreakpoint.java
@@ -19,6 +19,8 @@
 package org.apache.wayang.core.platform;
 
 import org.apache.commons.lang3.Validate;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
@@ -27,8 +29,6 @@ import org.apache.wayang.core.plan.executionplan.ExecutionStage;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.plan.wayangplan.Slot;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
 
 /**
  * {@link Breakpoint} implementation that is based on the {@link CardinalityEstimate}s of {@link Channel}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ChannelDescriptor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ChannelDescriptor.java
index 618609c..abb069d 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ChannelDescriptor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ChannelDescriptor.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.platform;
 
+import java.lang.reflect.Constructor;
+import java.util.Objects;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.plan.executionplan.Channel;
 import org.apache.wayang.core.plan.executionplan.ExecutionStage;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 
-import java.lang.reflect.Constructor;
-import java.util.Objects;
-
 /**
  * Describes a certain {@link Channel} type including further parameters.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ChannelInstance.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ChannelInstance.java
index b5a6fd5..787aed8 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ChannelInstance.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ChannelInstance.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.platform;
 
+import java.util.OptionalLong;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.executionplan.Channel;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.platform.lineage.ChannelLineageNode;
 
-import java.util.OptionalLong;
-
 /**
  * Represents the actual, allocated resource represented by {@link Channel}.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ConjunctiveBreakpoint.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ConjunctiveBreakpoint.java
index 6c35138..3c88d00 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ConjunctiveBreakpoint.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ConjunctiveBreakpoint.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.platform;
 
-import org.apache.wayang.core.optimizer.OptimizationContext;
-import org.apache.wayang.core.plan.executionplan.ExecutionStage;
-
 import java.util.Arrays;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Objects;
+import org.apache.wayang.core.optimizer.OptimizationContext;
+import org.apache.wayang.core.plan.executionplan.ExecutionStage;
 
 /**
  * {@link Breakpoint} implementation that disrupts execution if all aggregated {@link Breakpoint}s request a disruption.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/CrossPlatformExecutor.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/CrossPlatformExecutor.java
index 1f539bd..8c96ac0 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/CrossPlatformExecutor.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/CrossPlatformExecutor.java
@@ -18,6 +18,18 @@
 
 package org.apache.wayang.core.platform;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.Map;
+import java.util.Queue;
+import java.util.Set;
+import java.util.function.Supplier;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -33,19 +45,8 @@ import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.profiling.InstrumentationStrategy;
 import org.apache.wayang.core.util.AbstractReferenceCountable;
 import org.apache.wayang.core.util.Formats;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;;
 
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.Map;
-import java.util.Queue;
-import java.util.Set;
-import java.util.function.Supplier;
+;
 
 /**
  * Executes a (cross-platform) {@link ExecutionPlan}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ExecutionState.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ExecutionState.java
index 3cd987e..5301da3 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ExecutionState.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ExecutionState.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.core.platform;
 
+import java.util.Collection;
 import org.apache.wayang.core.optimizer.enumeration.ExecutionTaskFlow;
 import org.apache.wayang.core.plan.executionplan.Channel;
 
-import java.util.Collection;
-
 /**
  * Contains a state of the execution of an {@link ExecutionTaskFlow}.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ExecutorTemplate.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ExecutorTemplate.java
index dd49737..699ee5d 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ExecutorTemplate.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/ExecutorTemplate.java
@@ -18,6 +18,14 @@
 
 package org.apache.wayang.core.platform;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.OptionalLong;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
@@ -25,15 +33,6 @@ import org.apache.wayang.core.plan.executionplan.Channel;
 import org.apache.wayang.core.plan.executionplan.ExecutionStageLoop;
 import org.apache.wayang.core.platform.lineage.ExecutionLineageNode;
 import org.apache.wayang.core.util.AbstractReferenceCountable;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.OptionalLong;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicInteger;
 
 /**
  * Implements the {@link ExecutionResource} handling as defined by {@link Executor}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/FixBreakpoint.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/FixBreakpoint.java
index f6fb93d..35b6a6b 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/FixBreakpoint.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/FixBreakpoint.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.platform;
 
-import org.apache.wayang.core.optimizer.OptimizationContext;
-import org.apache.wayang.core.plan.executionplan.ExecutionPlan;
-import org.apache.wayang.core.plan.executionplan.ExecutionStage;
-
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Set;
+import org.apache.wayang.core.optimizer.OptimizationContext;
+import org.apache.wayang.core.plan.executionplan.ExecutionPlan;
+import org.apache.wayang.core.plan.executionplan.ExecutionStage;
 
 /**
  * Describes when to interrupt the execution of an {@link ExecutionPlan}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/Junction.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/Junction.java
index b590443..159bd91 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/Junction.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/Junction.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.core.platform;
 
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
 import org.apache.wayang.core.optimizer.costs.TimeEstimate;
@@ -27,12 +32,6 @@ import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.util.WayangCollections;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
 
 /**
  * Describes the implementation of one {@link OutputSlot} to its occupied {@link InputSlot}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/PartialExecution.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/PartialExecution.java
index ef3a8f1..9d2ab9d 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/PartialExecution.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/PartialExecution.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.core.platform;
 
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.Set;
+import java.util.stream.Collectors;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval;
@@ -28,11 +32,6 @@ import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.platform.lineage.ExecutionLineageNode;
 import org.apache.wayang.core.util.JsonSerializables;
 import org.apache.wayang.core.util.JsonSerializer;
-
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.Set;
-import java.util.stream.Collectors;
 import org.apache.wayang.core.util.json.JSONObject;
 
 /**
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/PushExecutorTemplate.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/PushExecutorTemplate.java
index f46ae71..5cb335b 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/PushExecutorTemplate.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/PushExecutorTemplate.java
@@ -18,6 +18,15 @@
 
 package org.apache.wayang.core.platform;
 
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Queue;
+import java.util.Set;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.executionplan.Channel;
@@ -27,18 +36,8 @@ import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
 import org.apache.wayang.core.plan.wayangplan.LoopHeadOperator;
 import org.apache.wayang.core.util.OneTimeExecutable;
-import org.apache.wayang.core.util.WayangCollections;
 import org.apache.wayang.core.util.Tuple;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Queue;
-import java.util.Set;
+import org.apache.wayang.core.util.WayangCollections;
 
 /**
  * {@link Executor} implementation that employs a push model, i.e., data quanta are "pushed"
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/lineage/ExecutionLineageNode.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/lineage/ExecutionLineageNode.java
index 7d91f7a..39446ec 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/lineage/ExecutionLineageNode.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/lineage/ExecutionLineageNode.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.platform.lineage;
 
+import java.util.Collection;
+import java.util.LinkedList;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.optimizer.costs.LoadProfileEstimator;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.platform.AtomicExecution;
 
-import java.util.Collection;
-import java.util.LinkedList;
-
 /**
  * Encapsulates {@link AtomicExecution}s with a common {@link OptimizationContext.OperatorContext} in a lazy execution lineage.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/lineage/LazyExecutionLineageNode.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/lineage/LazyExecutionLineageNode.java
index ef3f6fc..6359a20 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/lineage/LazyExecutionLineageNode.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/platform/lineage/LazyExecutionLineageNode.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.platform.lineage;
 
-import org.apache.wayang.core.platform.ChannelInstance;
-import org.apache.wayang.core.util.Tuple;
-import org.apache.logging.log4j.LogManager;
-
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.LinkedList;
+import org.apache.logging.log4j.LogManager;
+import org.apache.wayang.core.platform.ChannelInstance;
+import org.apache.wayang.core.util.Tuple;
 
 /**
  * A node wraps a {@link ChannelInstance} and keeps track of predecessor nodes.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plugin/DynamicPlugin.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plugin/DynamicPlugin.java
index c0d7695..a4ca0a9 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plugin/DynamicPlugin.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plugin/DynamicPlugin.java
@@ -18,17 +18,6 @@
 
 package org.apache.wayang.core.plugin;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.api.exception.WayangException;
-import org.apache.wayang.core.mapping.Mapping;
-import org.apache.wayang.core.optimizer.channels.ChannelConversion;
-import org.apache.wayang.core.platform.Platform;
-import org.apache.wayang.core.util.ReflectionUtils;
-import org.apache.wayang.core.util.fs.FileSystem;
-import org.apache.wayang.core.util.fs.FileSystems;
-import org.yaml.snakeyaml.Yaml;
-
 import java.io.IOException;
 import java.io.InputStream;
 import java.util.Collection;
@@ -39,6 +28,16 @@ import java.util.Map;
 import java.util.Objects;
 import java.util.Set;
 import java.util.function.Consumer;
+import org.apache.commons.lang3.Validate;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.api.exception.WayangException;
+import org.apache.wayang.core.mapping.Mapping;
+import org.apache.wayang.core.optimizer.channels.ChannelConversion;
+import org.apache.wayang.core.platform.Platform;
+import org.apache.wayang.core.util.ReflectionUtils;
+import org.apache.wayang.core.util.fs.FileSystem;
+import org.apache.wayang.core.util.fs.FileSystems;
+import org.yaml.snakeyaml.Yaml;
 
 /**
  * This {@link Plugin} can be arbitrarily customized.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plugin/Plugin.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plugin/Plugin.java
index a714588..4fdfc3c 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plugin/Plugin.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/plugin/Plugin.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.core.plugin;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.WayangContext;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
 import org.apache.wayang.core.platform.Platform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * A plugin contributes the following components to a {@link WayangContext}:
  * <ul>
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/CardinalityRepository.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/CardinalityRepository.java
index 3418ba0..9814bc0 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/CardinalityRepository.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/CardinalityRepository.java
@@ -18,7 +18,16 @@
 
 package org.apache.wayang.core.profiling;
 
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.UnsupportedEncodingException;
 import org.apache.commons.io.IOUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -29,16 +38,6 @@ import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.plan.wayangplan.Slot;
 import org.apache.wayang.core.platform.CrossPlatformExecutor;
 import org.apache.wayang.core.platform.ExecutionState;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.UnsupportedEncodingException;
 import org.apache.wayang.core.util.json.JSONArray;
 import org.apache.wayang.core.util.json.JSONObject;
 
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/ExecutionLog.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/ExecutionLog.java
index ce1a3d8..6e275f0 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/ExecutionLog.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/ExecutionLog.java
@@ -18,16 +18,6 @@
 
 package org.apache.wayang.core.profiling;
 
-import org.apache.commons.io.IOUtils;
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.api.exception.WayangException;
-import org.apache.wayang.core.platform.CrossPlatformExecutor;
-import org.apache.wayang.core.platform.PartialExecution;
-import org.apache.wayang.core.util.JsonSerializables;
-import org.apache.wayang.core.util.JsonSerializer;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileNotFoundException;
@@ -39,6 +29,15 @@ import java.nio.charset.Charset;
 import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.util.stream.Stream;
+import org.apache.commons.io.IOUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.api.exception.WayangException;
+import org.apache.wayang.core.platform.CrossPlatformExecutor;
+import org.apache.wayang.core.platform.PartialExecution;
+import org.apache.wayang.core.util.JsonSerializables;
+import org.apache.wayang.core.util.JsonSerializer;
 import org.apache.wayang.core.util.json.JSONObject;
 
 /**
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/ExecutionPlanMeasurement.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/ExecutionPlanMeasurement.java
index 1459d15..9614df8 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/ExecutionPlanMeasurement.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/ExecutionPlanMeasurement.java
@@ -19,6 +19,11 @@
 package org.apache.wayang.core.profiling;
 
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import org.apache.wayang.commons.util.profiledb.model.Measurement;
 import org.apache.wayang.commons.util.profiledb.model.Type;
 import org.apache.wayang.core.plan.executionplan.Channel;
@@ -26,12 +31,6 @@ import org.apache.wayang.core.plan.executionplan.ExecutionPlan;
 import org.apache.wayang.core.plan.executionplan.ExecutionTask;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
 /**
  * This {@link Measurement} encapsulates an {@link ExecutionPlan}.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/FullInstrumentationStrategy.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/FullInstrumentationStrategy.java
index a90cb0d..d90dd90 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/FullInstrumentationStrategy.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/profiling/FullInstrumentationStrategy.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.core.profiling;
 
+import java.util.Arrays;
 import org.apache.wayang.core.plan.executionplan.Channel;
 import org.apache.wayang.core.plan.executionplan.ExecutionStage;
 
-import java.util.Arrays;
-
 /**
  * Instruments only outbound {@link Channel}s.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/types/DataSetType.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/types/DataSetType.java
index cc409a8..66ff893 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/types/DataSetType.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/types/DataSetType.java
@@ -18,9 +18,8 @@
 
 package org.apache.wayang.core.types;
 
-import org.apache.wayang.core.util.ReflectionUtils;
-
 import java.util.Objects;
+import org.apache.wayang.core.util.ReflectionUtils;
 
 /**
  * A data set is an abstraction of the Wayang programming model. Although never directly materialized, a data set
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/types/DataUnitGroupType.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/types/DataUnitGroupType.java
index af8904e..39f9992 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/types/DataUnitGroupType.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/types/DataUnitGroupType.java
@@ -18,9 +18,8 @@
 
 package org.apache.wayang.core.types;
 
-import org.apache.wayang.core.util.ReflectionUtils;
-
 import java.util.Objects;
+import org.apache.wayang.core.util.ReflectionUtils;
 
 /**
  * A grouped data unit type describes just the structure of data units within a grouped dataset.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/JsonSerializable.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/JsonSerializable.java
index dba692e..7018401 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/JsonSerializable.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/JsonSerializable.java
@@ -18,10 +18,9 @@
 
 package org.apache.wayang.core.util;
 
-import org.apache.wayang.core.api.exception.WayangException;
-
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.util.json.JSONObject;
 
 /**
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/JsonSerializables.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/JsonSerializables.java
index b164eac..fe1be2f 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/JsonSerializables.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/JsonSerializables.java
@@ -18,12 +18,10 @@
 
 package org.apache.wayang.core.util;
 
-import org.apache.commons.lang3.SerializationException;
-
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import org.apache.commons.lang3.SerializationException;
 import org.apache.wayang.core.util.json.JSONArray;
 import org.apache.wayang.core.util.json.JSONObject;
 
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/JuelUtils.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/JuelUtils.java
index 0ed45ad..c59c055 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/JuelUtils.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/JuelUtils.java
@@ -21,13 +21,12 @@ package org.apache.wayang.core.util;
 import de.odysseus.el.ExpressionFactoryImpl;
 import de.odysseus.el.TreeValueExpression;
 import de.odysseus.el.util.SimpleContext;
-import org.apache.wayang.core.api.exception.WayangException;
-import org.apache.wayang.core.optimizer.OptimizationUtils;
-import org.apache.logging.log4j.LogManager;
-
-import javax.el.ValueExpression;
 import java.util.HashMap;
 import java.util.Map;
+import javax.el.ValueExpression;
+import org.apache.logging.log4j.LogManager;
+import org.apache.wayang.core.api.exception.WayangException;
+import org.apache.wayang.core.optimizer.OptimizationUtils;
 
 /**
  * Utilities to deal with JUEL expressions.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/LruCache.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/LruCache.java
index 0b87241..013486d 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/LruCache.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/LruCache.java
@@ -18,10 +18,9 @@
 
 package org.apache.wayang.core.util;
 
-import org.apache.commons.lang3.Validate;
-
 import java.util.LinkedHashMap;
 import java.util.Map;
+import org.apache.commons.lang3.Validate;
 
 /**
  * Key-value cache with "least recently used" eviction strategy.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/ReflectionUtils.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/ReflectionUtils.java
index c470778..f9871dd 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/ReflectionUtils.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/ReflectionUtils.java
@@ -18,11 +18,6 @@
 
 package org.apache.wayang.core.util;
 
-import org.apache.commons.lang3.Validate;
-import org.apache.wayang.core.api.exception.WayangException;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;;
-
 import java.io.InputStream;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Field;
@@ -46,6 +41,12 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
+import org.apache.commons.lang3.Validate;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.core.api.exception.WayangException;
+
+;
 
 /**
  * Utilities for reflection code.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/WayangCollections.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/WayangCollections.java
index 5b3e891..d0a2d91 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/WayangCollections.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/WayangCollections.java
@@ -18,8 +18,6 @@
 
 package org.apache.wayang.core.util;
 
-import org.apache.commons.lang3.Validate;
-
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
@@ -33,6 +31,7 @@ import java.util.Set;
 import java.util.function.BiFunction;
 import java.util.function.Function;
 import java.util.function.Supplier;
+import org.apache.commons.lang3.Validate;
 
 /**
  * Utilities to operate {@link java.util.Collection}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/FileSystems.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/FileSystems.java
index 21ae249..01513f1 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/FileSystems.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/FileSystems.java
@@ -18,11 +18,6 @@
 
 package org.apache.wayang.core.util.fs;
 
-import org.apache.wayang.core.api.exception.WayangException;
-import org.apache.wayang.core.util.LruCache;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.io.FileNotFoundException;
 import java.util.Arrays;
 import java.util.Collection;
@@ -30,6 +25,10 @@ import java.util.Collections;
 import java.util.Optional;
 import java.util.OptionalLong;
 import java.util.stream.Collectors;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.core.api.exception.WayangException;
+import org.apache.wayang.core.util.LruCache;
 
 /**
  * Tool to work with {@link FileSystem}s.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/FileUtils.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/FileUtils.java
index 85cc0da..b8dfc8d 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/FileUtils.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/FileUtils.java
@@ -18,9 +18,6 @@
 
 package org.apache.wayang.core.util.fs;
 
-import org.apache.commons.io.IOUtils;
-import org.apache.wayang.core.api.exception.WayangException;
-
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStreamReader;
@@ -29,6 +26,8 @@ import java.util.Iterator;
 import java.util.Spliterators;
 import java.util.stream.Stream;
 import java.util.stream.StreamSupport;
+import org.apache.commons.io.IOUtils;
+import org.apache.wayang.core.api.exception.WayangException;
 
 public class FileUtils {
 
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/HadoopFileSystem.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/HadoopFileSystem.java
index 735251e..a280af9 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/HadoopFileSystem.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/HadoopFileSystem.java
@@ -18,14 +18,6 @@
 
 package org.apache.wayang.core.util.fs;
 
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileStatus;
-import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
-import org.apache.hadoop.fs.Path;
-import org.apache.wayang.core.api.exception.WayangException;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
@@ -36,6 +28,13 @@ import java.net.URL;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.stream.Collectors;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileStatus;
+import org.apache.hadoop.fs.FsUrlStreamHandlerFactory;
+import org.apache.hadoop.fs.Path;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.core.api.exception.WayangException;
 
 /**
  * {@link FileSystem} immplementation for the HDFS.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/LocalFileSystem.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/LocalFileSystem.java
index ff4c24a..cf962ad 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/LocalFileSystem.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/fs/LocalFileSystem.java
@@ -18,10 +18,6 @@
 
 package org.apache.wayang.core.util.fs;
 
-import org.apache.wayang.core.api.exception.WayangException;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
@@ -36,6 +32,9 @@ import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.stream.Collectors;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.apache.wayang.core.api.exception.WayangException;
 
 /**
  * {@link FileSystem} implementation for the local file system.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/Context.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/Context.java
index bd01fa5..1fbfdc3 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/Context.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/Context.java
@@ -18,9 +18,8 @@
 
 package org.apache.wayang.core.util.mathex;
 
-import org.apache.wayang.core.util.mathex.exceptions.EvaluationException;
-
 import java.util.function.ToDoubleFunction;
+import org.apache.wayang.core.util.mathex.exceptions.EvaluationException;
 
 /**
  * Provides contextual variables and functions in order to evaluate an {@link Expression}.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/DefaultContext.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/DefaultContext.java
index 0bea52c..41b8237 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/DefaultContext.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/DefaultContext.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.core.util.mathex;
 
-import org.apache.wayang.core.util.mathex.exceptions.EvaluationException;
-
 import java.util.HashMap;
 import java.util.Map;
 import java.util.function.ToDoubleFunction;
+import org.apache.wayang.core.util.mathex.exceptions.EvaluationException;
 
 /**
  * Default {@link Context} implementation that can be configured.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/ExpressionBuilder.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/ExpressionBuilder.java
index 6170be4..e95d804 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/ExpressionBuilder.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/ExpressionBuilder.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.core.util.mathex;
 
+import java.util.List;
+import java.util.stream.Collectors;
 import org.antlr.v4.runtime.ANTLRInputStream;
 import org.antlr.v4.runtime.BaseErrorListener;
 import org.antlr.v4.runtime.CommonTokenStream;
@@ -33,9 +35,6 @@ import org.apache.wayang.core.util.mathex.model.NamedFunction;
 import org.apache.wayang.core.util.mathex.model.UnaryOperation;
 import org.apache.wayang.core.util.mathex.model.Variable;
 
-import java.util.List;
-import java.util.stream.Collectors;
-
 /**
  * This utility builds {@link Expression}s from an input {@link String}.
  */
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/model/CompiledFunction.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/model/CompiledFunction.java
index 11455ab..06a15ac 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/model/CompiledFunction.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/model/CompiledFunction.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.util.mathex.model;
 
-import org.apache.wayang.core.util.mathex.Context;
-import org.apache.wayang.core.util.mathex.Expression;
-
 import java.util.ArrayList;
 import java.util.List;
 import java.util.function.ToDoubleFunction;
 import java.util.stream.Collectors;
+import org.apache.wayang.core.util.mathex.Context;
+import org.apache.wayang.core.util.mathex.Expression;
 
 /**
  * {@link Expression} implementation that represents a function with a static implementation.
diff --git a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/model/NamedFunction.java b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/model/NamedFunction.java
index 9c26eb4..b27e5f3 100644
--- a/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/model/NamedFunction.java
+++ b/wayang-commons/wayang-core/src/main/java/org/apache/wayang/core/util/mathex/model/NamedFunction.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.util.mathex.model;
 
-import org.apache.wayang.core.util.mathex.Context;
-import org.apache.wayang.core.util.mathex.Expression;
-import org.apache.wayang.core.util.mathex.exceptions.EvaluationException;
-
 import java.util.List;
 import java.util.function.ToDoubleFunction;
 import java.util.stream.Collectors;
+import org.apache.wayang.core.util.mathex.Context;
+import org.apache.wayang.core.util.mathex.Expression;
+import org.apache.wayang.core.util.mathex.exceptions.EvaluationException;
 
 /**
  * {@link Expression} implementation that represents a function that is identified
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/SlotTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/SlotTest.java
index ebc8e8a..6f4b3ca 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/SlotTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/SlotTest.java
@@ -18,13 +18,13 @@
 
 package org.apache.wayang.core;
 
-import org.junit.Test;
 import org.apache.wayang.core.plan.wayangplan.Slot;
 import org.apache.wayang.core.plan.wayangplan.test.TestSink;
 import org.apache.wayang.core.plan.wayangplan.test.TestSource;
 import org.apache.wayang.core.test.TestDataUnit;
 import org.apache.wayang.core.test.TestDataUnit2;
 import org.apache.wayang.core.types.DataSetType;
+import org.junit.Test;
 
 /**
  * Test suite for {@link Slot}s.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/OperatorPatternTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/OperatorPatternTest.java
index 1cc7101..2000d43 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/OperatorPatternTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/OperatorPatternTest.java
@@ -18,9 +18,9 @@
 
 package org.apache.wayang.core.mapping;
 
+import org.apache.wayang.core.test.DummyExecutionOperator;
 import org.junit.Assert;
 import org.junit.Test;
-import org.apache.wayang.core.test.DummyExecutionOperator;
 
 /**
  * Tests for {@link OperatorPattern}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/PlanTransformationTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/PlanTransformationTest.java
index d98cbb8..7457c8a 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/PlanTransformationTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/PlanTransformationTest.java
@@ -18,19 +18,19 @@
 
 package org.apache.wayang.core.mapping;
 
-import org.junit.Assert;
-import org.junit.Test;
 import org.apache.wayang.core.mapping.test.TestSinkToTestSink2Factory;
 import org.apache.wayang.core.plan.wayangplan.Operator;
 import org.apache.wayang.core.plan.wayangplan.OperatorAlternative;
-import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.plan.wayangplan.UnarySink;
 import org.apache.wayang.core.plan.wayangplan.UnarySource;
+import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.plan.wayangplan.test.TestSink;
 import org.apache.wayang.core.plan.wayangplan.test.TestSink2;
 import org.apache.wayang.core.plan.wayangplan.test.TestSource;
 import org.apache.wayang.core.test.TestDataUnit;
 import org.apache.wayang.core.types.DataSetType;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for the {@link org.apache.wayang.core.mapping.PlanTransformation} class.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/SubplanPatternTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/SubplanPatternTest.java
index dec530b..5e84d27 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/SubplanPatternTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/SubplanPatternTest.java
@@ -18,18 +18,17 @@
 
 package org.apache.wayang.core.mapping;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.List;
 import org.apache.wayang.core.plan.wayangplan.Operator;
-import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.plan.wayangplan.UnarySink;
 import org.apache.wayang.core.plan.wayangplan.UnarySource;
+import org.apache.wayang.core.plan.wayangplan.WayangPlan;
 import org.apache.wayang.core.plan.wayangplan.test.TestSink;
 import org.apache.wayang.core.plan.wayangplan.test.TestSource;
 import org.apache.wayang.core.test.TestDataUnit;
 import org.apache.wayang.core.types.DataSetType;
-
-import java.util.List;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for the {@link SubplanPattern}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/test/TestSinkMapping.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/test/TestSinkMapping.java
index 8b57d34..da575e7 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/test/TestSinkMapping.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/mapping/test/TestSinkMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.core.mapping.test;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
 import org.apache.wayang.core.mapping.PlanTransformation;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.plan.wayangplan.test.TestSink2;
 import org.apache.wayang.core.test.DummyPlatform;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Dummy {@link Mapping} implementation from {@link TestSink} to {@link TestSink2}.
  */
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/AggregatingCardinalityEstimatorTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/AggregatingCardinalityEstimatorTest.java
index e72d942..188744b 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/AggregatingCardinalityEstimatorTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/AggregatingCardinalityEstimatorTest.java
@@ -18,16 +18,15 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.optimizer.OptimizationContext;
-
-import java.util.Arrays;
-
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
+import java.util.Arrays;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.optimizer.OptimizationContext;
+import org.junit.Assert;
+import org.junit.Test;
+
 /**
  * Test suite for {@link AggregatingCardinalityEstimator}.
  */
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/DefaultCardinalityEstimatorTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/DefaultCardinalityEstimatorTest.java
index 5ffc3ab..7ec3312 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/DefaultCardinalityEstimatorTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/DefaultCardinalityEstimatorTest.java
@@ -18,16 +18,15 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.core.api.Configuration;
-import org.apache.wayang.core.optimizer.OptimizationContext;
-
-import java.util.function.ToLongFunction;
-
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
+import java.util.function.ToLongFunction;
+import org.apache.wayang.core.api.Configuration;
+import org.apache.wayang.core.optimizer.OptimizationContext;
+import org.junit.Assert;
+import org.junit.Test;
+
 
 /**
  * Test suite for the {@link DefaultCardinalityEstimator}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/LoopSubplanCardinalityPusherTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/LoopSubplanCardinalityPusherTest.java
index 5a4583e..d50b266 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/LoopSubplanCardinalityPusherTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/LoopSubplanCardinalityPusherTest.java
@@ -18,9 +18,6 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.api.configuration.FunctionalKeyValueProvider;
@@ -38,6 +35,9 @@ import org.apache.wayang.core.plan.wayangplan.test.TestLoopHead;
 import org.apache.wayang.core.plan.wayangplan.test.TestSource;
 import org.apache.wayang.core.test.MockFactory;
 import org.apache.wayang.core.util.WayangCollections;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
 
 /**
  * Test suite for {@link LoopSubplanCardinalityPusher}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/SubplanCardinalityPusherTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/SubplanCardinalityPusherTest.java
index 60b194a..a689a52 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/SubplanCardinalityPusherTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/cardinality/SubplanCardinalityPusherTest.java
@@ -18,9 +18,6 @@
 
 package org.apache.wayang.core.optimizer.cardinality;
 
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.api.configuration.FunctionalKeyValueProvider;
@@ -35,6 +32,9 @@ import org.apache.wayang.core.plan.wayangplan.test.TestMapOperator;
 import org.apache.wayang.core.plan.wayangplan.test.TestSource;
 import org.apache.wayang.core.test.MockFactory;
 import org.apache.wayang.core.types.DataSetType;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SubplanCardinalityPusher}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/channels/ChannelConversionGraphTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/channels/ChannelConversionGraphTest.java
index 7013c6c..c08fc14 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/channels/ChannelConversionGraphTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/channels/ChannelConversionGraphTest.java
@@ -18,9 +18,8 @@
 
 package org.apache.wayang.core.optimizer.channels;
 
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.function.Supplier;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.optimizer.DefaultOptimizationContext;
@@ -38,9 +37,9 @@ import org.apache.wayang.core.test.DummyNonReusableChannel;
 import org.apache.wayang.core.test.DummyReusableChannel;
 import org.apache.wayang.core.test.MockFactory;
 import org.apache.wayang.core.util.WayangCollections;
-
-import java.util.Arrays;
-import java.util.function.Supplier;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
 
 /**
  * Test suite for {@link ChannelConversionGraph}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/costs/NestableLoadProfileEstimatorTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/costs/NestableLoadProfileEstimatorTest.java
index 6295021..20c12c2 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/costs/NestableLoadProfileEstimatorTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/costs/NestableLoadProfileEstimatorTest.java
@@ -19,8 +19,7 @@
 package org.apache.wayang.core.optimizer.costs;
 
 import java.util.HashMap;
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.List;
 import org.apache.wayang.core.optimizer.OptimizationUtils;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimate;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
@@ -28,8 +27,8 @@ import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.platform.ChannelDescriptor;
 import org.apache.wayang.core.platform.Platform;
 import org.apache.wayang.core.types.DataSetType;
-
-import java.util.List;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Tests for the {@link NestableLoadProfileEstimator}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/enumeration/StageAssignmentTraversalTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/enumeration/StageAssignmentTraversalTest.java
index 9d3d2eb..b0604a3 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/enumeration/StageAssignmentTraversalTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/optimizer/enumeration/StageAssignmentTraversalTest.java
@@ -18,8 +18,7 @@
 
 package org.apache.wayang.core.optimizer.enumeration;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Collections;
 import org.apache.wayang.core.plan.executionplan.Channel;
 import org.apache.wayang.core.plan.executionplan.ExecutionPlan;
 import org.apache.wayang.core.plan.executionplan.ExecutionStage;
@@ -28,8 +27,8 @@ import org.apache.wayang.core.plan.executionplan.test.TestChannel;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.platform.Platform;
 import org.apache.wayang.core.test.MockFactory;
-
-import java.util.Collections;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link StageAssignmentTraversal}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/LoopIsolatorTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/LoopIsolatorTest.java
index 6eae428..546e635 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/LoopIsolatorTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/LoopIsolatorTest.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.ArrayList;
+import java.util.List;
 import org.apache.wayang.core.plan.wayangplan.test.TestLoopHead;
 import org.apache.wayang.core.plan.wayangplan.test.TestMapOperator;
 import org.apache.wayang.core.plan.wayangplan.test.TestSink;
 import org.apache.wayang.core.plan.wayangplan.test.TestSource;
-
-import java.util.ArrayList;
-import java.util.List;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for the {@link LoopIsolator}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/OperatorTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/OperatorTest.java
index 4018ee1..c2638eb 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/OperatorTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/OperatorTest.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Collection;
 import org.apache.wayang.core.util.ReflectionUtils;
 import org.apache.wayang.core.util.WayangCollections;
-
-import java.util.Collection;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for the {@link Operator} class.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/SlotMappingTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/SlotMappingTest.java
index 6659beb..1a8da28 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/SlotMappingTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/SlotMappingTest.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.core.plan.wayangplan;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.core.plan.wayangplan.test.TestSink;
-import org.apache.wayang.core.plan.wayangplan.test.TestSource;
-import org.apache.wayang.core.types.DataSetType;
-
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
+import org.apache.wayang.core.plan.wayangplan.test.TestSink;
+import org.apache.wayang.core.plan.wayangplan.test.TestSource;
+import org.apache.wayang.core.types.DataSetType;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link SlotMapping}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestFilterOperator.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestFilterOperator.java
index c05ad58..e524993 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestFilterOperator.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestFilterOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.core.plan.wayangplan.test;
 
+import java.util.Optional;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
 import org.apache.wayang.core.optimizer.cardinality.DefaultCardinalityEstimator;
@@ -25,8 +26,6 @@ import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
 
-import java.util.Optional;
-
 /**
  * Test operator that exposes filter-like behavior.
  */
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestJoin.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestJoin.java
index 6c8424e..f91bd53 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestJoin.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestJoin.java
@@ -19,6 +19,7 @@
 package org.apache.wayang.core.plan.wayangplan.test;
 
 
+import java.util.Optional;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
 import org.apache.wayang.core.optimizer.cardinality.DefaultCardinalityEstimator;
@@ -30,8 +31,6 @@ import org.apache.wayang.core.plan.wayangplan.TopDownPlanVisitor;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
 
-import java.util.Optional;
-
 /**
  * Join-like operator.
  */
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestLoopHead.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestLoopHead.java
index f938da9..c6f79cc 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestLoopHead.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestLoopHead.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.core.plan.wayangplan.test;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Optional;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
 import org.apache.wayang.core.optimizer.cardinality.SwitchForwardCardinalityEstimator;
@@ -29,10 +32,6 @@ import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Optional;
-
 /**
  * {@link LoopHeadOperator} implementation for test purposes.
  */
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestMapOperator.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestMapOperator.java
index 216f0a4..3988fe5 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestMapOperator.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestMapOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.core.plan.wayangplan.test;
 
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
@@ -26,8 +27,6 @@ import org.apache.wayang.core.plan.wayangplan.UnaryToUnaryOperator;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
 
-import java.util.Optional;
-
 /**
  * Test operator that exposes map-like behavior.
  */
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestSink.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestSink.java
index e934f31..bfd1dea 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestSink.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestSink.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.core.plan.wayangplan.test;
 
+import java.util.Optional;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
 import org.apache.wayang.core.plan.wayangplan.UnarySink;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
 
-import java.util.Optional;
-
 /**
  * Dummy sink for testing purposes.
  */
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestSource.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestSource.java
index 06ea764..a81e922 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestSource.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plan/wayangplan/test/TestSource.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.core.plan.wayangplan.test;
 
+import java.util.Optional;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.cardinality.CardinalityEstimator;
 import org.apache.wayang.core.optimizer.cardinality.FixedSizeCardinalityEstimator;
@@ -25,8 +26,6 @@ import org.apache.wayang.core.plan.wayangplan.UnarySource;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.core.types.DataUnitType;
 
-import java.util.Optional;
-
 /**
  * Dummy source for testing purposes.
  */
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/platform/PartialExecutionTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/platform/PartialExecutionTest.java
index f39d331..5740114 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/platform/PartialExecutionTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/platform/PartialExecutionTest.java
@@ -18,9 +18,10 @@
 
 package org.apache.wayang.core.platform;
 
-import org.apache.wayang.core.util.json.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Arrays;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.configuration.KeyValueProvider;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -33,11 +34,9 @@ import org.apache.wayang.core.test.DummyPlatform;
 import org.apache.wayang.core.test.SerializableDummyExecutionOperator;
 import org.apache.wayang.core.util.JsonSerializables;
 import org.apache.wayang.core.util.WayangCollections;
-
-import java.util.Arrays;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import org.apache.wayang.core.util.json.JSONObject;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suites for {@link PartialExecution}s.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plugin/DynamicPluginTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plugin/DynamicPluginTest.java
index 6fd6b39..713613a 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plugin/DynamicPluginTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/plugin/DynamicPluginTest.java
@@ -18,8 +18,11 @@
 
 package org.apache.wayang.core.plugin;
 
-import org.junit.Assert;
-import org.junit.Test;
+import static org.mockito.Mockito.mock;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Set;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.test.TestSinkMapping;
@@ -30,12 +33,8 @@ import org.apache.wayang.core.platform.Platform;
 import org.apache.wayang.core.test.DummyPlatform;
 import org.apache.wayang.core.util.ReflectionUtils;
 import org.apache.wayang.core.util.WayangCollections;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Set;
-
-import static org.mockito.Mockito.mock;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for the {@link DynamicPlugin} class.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/test/DummyExecutionOperator.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/test/DummyExecutionOperator.java
index ae3e7ec..97234de 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/test/DummyExecutionOperator.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/test/DummyExecutionOperator.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.core.test;
 
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
 import org.apache.wayang.core.plan.wayangplan.OperatorBase;
@@ -26,10 +29,6 @@ import org.apache.wayang.core.platform.ChannelDescriptor;
 import org.apache.wayang.core.platform.Platform;
 import org.apache.wayang.core.types.DataSetType;
 
-import java.util.ArrayList;
-import java.util.LinkedList;
-import java.util.List;
-
 /**
  * Dummy {@link ExecutionOperator} for test purposes.
  */
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/test/MockFactory.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/test/MockFactory.java
index a125d21..fa672c2 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/test/MockFactory.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/test/MockFactory.java
@@ -18,7 +18,10 @@
 
 package org.apache.wayang.core.test;
 
-import org.mockito.Answers;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Collections;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.optimizer.DefaultOptimizationContext;
@@ -29,11 +32,7 @@ import org.apache.wayang.core.plan.wayangplan.OperatorContainer;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
 import org.apache.wayang.core.platform.Platform;
 import org.apache.wayang.core.types.DataSetType;
-
-import java.util.Collections;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import org.mockito.Answers;
 
 /**
  * Utility to mock Wayang objects.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/ConsumerIteratorAdapterTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/ConsumerIteratorAdapterTest.java
index 5b1faa1..071b139 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/ConsumerIteratorAdapterTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/ConsumerIteratorAdapterTest.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.util;
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
 import java.util.Iterator;
 import java.util.function.Consumer;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for the {@link ConsumerIteratorAdapter}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/CrossProductIterableTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/CrossProductIterableTest.java
index 021d5c8..8f1b124 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/CrossProductIterableTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/CrossProductIterableTest.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.core.util;
 
-import org.junit.Assert;
-import org.junit.Test;
-
 import java.util.Arrays;
 import java.util.List;
 import java.util.stream.Collectors;
 import java.util.stream.StreamSupport;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link CrossProductIterable}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/LimitedInputStreamTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/LimitedInputStreamTest.java
index f757d79..48dfde5 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/LimitedInputStreamTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/LimitedInputStreamTest.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.core.util;
 
-import org.junit.Assert;
-import org.junit.Test;
-
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for the {@link LimitedInputStream}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/ReflectionUtilsTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/ReflectionUtilsTest.java
index 380b250..f6b53ea 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/ReflectionUtilsTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/ReflectionUtilsTest.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.util;
 
-import org.junit.Assert;
-import org.junit.Test;
-
 import java.lang.reflect.Type;
 import java.util.HashMap;
 import java.util.Map;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link ReflectionUtils}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/WayangCollectionsTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/WayangCollectionsTest.java
index 210e831..b26e192 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/WayangCollectionsTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/WayangCollectionsTest.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.core.util;
 
-import org.junit.Assert;
-import org.junit.Test;
-
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.List;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for {@link WayangCollections}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/mathex/ExpressionBuilderTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/mathex/ExpressionBuilderTest.java
index 05c9a97..b311548 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/mathex/ExpressionBuilderTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/mathex/ExpressionBuilderTest.java
@@ -19,12 +19,11 @@
 package org.apache.wayang.core.util.mathex;
 
 
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.wayang.core.util.mathex.exceptions.ParseException;
-
 import java.util.Arrays;
 import java.util.Collection;
+import org.apache.wayang.core.util.mathex.exceptions.ParseException;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for the class {@link ExpressionBuilder}.
diff --git a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/mathex/ExpressionTest.java b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/mathex/ExpressionTest.java
index b2ac236..a789b0b 100644
--- a/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/mathex/ExpressionTest.java
+++ b/wayang-commons/wayang-core/src/test/java/org/apache/wayang/core/util/mathex/ExpressionTest.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.core.util.mathex;
 
-import org.junit.Assert;
-import org.junit.Test;
+import java.util.Arrays;
+import java.util.Collection;
 import org.apache.wayang.core.util.mathex.exceptions.EvaluationException;
 import org.apache.wayang.core.util.mathex.model.CompiledFunction;
 import org.apache.wayang.core.util.mathex.model.Constant;
 import org.apache.wayang.core.util.mathex.model.NamedFunction;
-
-import java.util.Arrays;
-import java.util.Collection;
+import org.junit.Assert;
+import org.junit.Test;
 
 /**
  * Test suite for the {@link Expression} subclasses.
diff --git a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/ProfileDB.java b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/ProfileDB.java
index d5550b9..a3ab9ae 100644
--- a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/ProfileDB.java
+++ b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/ProfileDB.java
@@ -20,18 +20,19 @@ package org.apache.wayang.commons.util.profiledb;
 
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.function.Consumer;
 import org.apache.wayang.commons.util.profiledb.json.MeasurementDeserializer;
 import org.apache.wayang.commons.util.profiledb.json.MeasurementSerializer;
 import org.apache.wayang.commons.util.profiledb.model.Experiment;
 import org.apache.wayang.commons.util.profiledb.model.Measurement;
 import org.apache.wayang.commons.util.profiledb.storage.Storage;
 
-import java.io.*;
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.function.Consumer;
-
 /**
  * This class provides facilities to save and load {@link Experiment}s.
  */
diff --git a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/json/MeasurementDeserializer.java b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/json/MeasurementDeserializer.java
index 4592cf4..3fce0d1 100644
--- a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/json/MeasurementDeserializer.java
+++ b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/json/MeasurementDeserializer.java
@@ -22,11 +22,10 @@ import com.google.gson.JsonDeserializationContext;
 import com.google.gson.JsonDeserializer;
 import com.google.gson.JsonElement;
 import com.google.gson.JsonParseException;
-import org.apache.wayang.commons.util.profiledb.model.Measurement;
-
 import java.lang.reflect.Type;
 import java.util.HashMap;
 import java.util.Map;
+import org.apache.wayang.commons.util.profiledb.model.Measurement;
 
 /**
  * Custom deserializer for {@link Measurement}s
diff --git a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/json/MeasurementSerializer.java b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/json/MeasurementSerializer.java
index 7691a04..f6341ee 100644
--- a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/json/MeasurementSerializer.java
+++ b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/json/MeasurementSerializer.java
@@ -22,9 +22,8 @@ import com.google.gson.JsonElement;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonSerializationContext;
 import com.google.gson.JsonSerializer;
-import org.apache.wayang.commons.util.profiledb.model.Measurement;
-
 import java.lang.reflect.Type;
+import org.apache.wayang.commons.util.profiledb.model.Measurement;
 
 /**
  * Custom serializer for {@link Measurement}s
diff --git a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/model/measurement/TimeMeasurement.java b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/model/measurement/TimeMeasurement.java
index 821dbde..e7682be 100644
--- a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/model/measurement/TimeMeasurement.java
+++ b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/model/measurement/TimeMeasurement.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.commons.util.profiledb.model.measurement;
 
-import org.apache.wayang.commons.util.profiledb.model.Measurement;
-import org.apache.wayang.commons.util.profiledb.model.Type;
-
 import java.util.Collection;
 import java.util.LinkedList;
+import org.apache.wayang.commons.util.profiledb.model.Measurement;
+import org.apache.wayang.commons.util.profiledb.model.Type;
 
 /**
  * A {@link Measurement} that captures a certain amount of time in milliseconds. Instances can be nested within
diff --git a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/storage/FileStorage.java b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/storage/FileStorage.java
index 663eefc..64e7705 100644
--- a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/storage/FileStorage.java
+++ b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/storage/FileStorage.java
@@ -18,12 +18,14 @@
 
 package org.apache.wayang.commons.util.profiledb.storage;
 
-import org.apache.wayang.commons.util.profiledb.model.Experiment;
-
-import java.io.*;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
 import java.net.URI;
 import java.util.Arrays;
 import java.util.Collection;
+import org.apache.wayang.commons.util.profiledb.model.Experiment;
 
 public class FileStorage extends Storage {
 
diff --git a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/storage/JDBCStorage.java b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/storage/JDBCStorage.java
index 3b57add..726112c 100644
--- a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/storage/JDBCStorage.java
+++ b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/storage/JDBCStorage.java
@@ -18,8 +18,6 @@
 
 package org.apache.wayang.commons.util.profiledb.storage;
 
-import org.apache.wayang.commons.util.profiledb.model.Experiment;
-
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
@@ -27,6 +25,7 @@ import java.io.IOException;
 import java.net.URI;
 import java.util.Arrays;
 import java.util.Collection;
+import org.apache.wayang.commons.util.profiledb.model.Experiment;
 
 public class JDBCStorage extends Storage {
 
diff --git a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/storage/Storage.java b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/storage/Storage.java
index 6102fb8..650dd12 100644
--- a/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/storage/Storage.java
+++ b/wayang-commons/wayang-utils-profile-db/src/main/java/org/apache/wayang/commons/util/profiledb/storage/Storage.java
@@ -19,13 +19,21 @@
 package org.apache.wayang.commons.util.profiledb.storage;
 
 import com.google.gson.Gson;
-import org.apache.wayang.commons.util.profiledb.ProfileDB;
-import org.apache.wayang.commons.util.profiledb.model.Experiment;
-
-import java.io.*;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Reader;
+import java.io.UnsupportedEncodingException;
+import java.io.Writer;
 import java.net.URI;
 import java.util.Collection;
 import java.util.LinkedList;
+import org.apache.wayang.commons.util.profiledb.ProfileDB;
+import org.apache.wayang.commons.util.profiledb.model.Experiment;
 
 /**
  * Controls how conducted experiments will be persisted and loaded
diff --git a/wayang-commons/wayang-utils-profile-db/src/test/java/org/apache/wayang/commons/util/profiledb/ProfileDBTest.java b/wayang-commons/wayang-utils-profile-db/src/test/java/org/apache/wayang/commons/util/profiledb/ProfileDBTest.java
index 20948b4..e57d881 100644
--- a/wayang-commons/wayang-utils-profile-db/src/test/java/org/apache/wayang/commons/util/profiledb/ProfileDBTest.java
+++ b/wayang-commons/wayang-utils-profile-db/src/test/java/org/apache/wayang/commons/util/profiledb/ProfileDBTest.java
@@ -18,6 +18,17 @@
 
 package org.apache.wayang.commons.util.profiledb;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
 import org.apache.wayang.commons.util.profiledb.measurement.TestMemoryMeasurement;
 import org.apache.wayang.commons.util.profiledb.measurement.TestTimeMeasurement;
 import org.apache.wayang.commons.util.profiledb.model.Experiment;
@@ -27,13 +38,6 @@ import org.apache.wayang.commons.util.profiledb.storage.FileStorage;
 import org.junit.Assert;
 import org.junit.Test;
 
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.util.*;
-
 public class ProfileDBTest {
 
     @Test
diff --git a/wayang-commons/wayang-utils-profile-db/src/test/java/org/apache/wayang/commons/util/profiledb/measurement/TestMemoryMeasurement.java b/wayang-commons/wayang-utils-profile-db/src/test/java/org/apache/wayang/commons/util/profiledb/measurement/TestMemoryMeasurement.java
index be85515..a50abb6 100644
--- a/wayang-commons/wayang-utils-profile-db/src/test/java/org/apache/wayang/commons/util/profiledb/measurement/TestMemoryMeasurement.java
+++ b/wayang-commons/wayang-utils-profile-db/src/test/java/org/apache/wayang/commons/util/profiledb/measurement/TestMemoryMeasurement.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.commons.util.profiledb.measurement;
 
+import java.util.Objects;
 import org.apache.wayang.commons.util.profiledb.model.Measurement;
 import org.apache.wayang.commons.util.profiledb.model.Type;
 
-import java.util.Objects;
-
 /**
  * {@link Measurement} implementation for test purposes.
  */
diff --git a/wayang-commons/wayang-utils-profile-db/src/test/java/org/apache/wayang/commons/util/profiledb/measurement/TestTimeMeasurement.java b/wayang-commons/wayang-utils-profile-db/src/test/java/org/apache/wayang/commons/util/profiledb/measurement/TestTimeMeasurement.java
index addb644..eae47a5 100644
--- a/wayang-commons/wayang-utils-profile-db/src/test/java/org/apache/wayang/commons/util/profiledb/measurement/TestTimeMeasurement.java
+++ b/wayang-commons/wayang-utils-profile-db/src/test/java/org/apache/wayang/commons/util/profiledb/measurement/TestTimeMeasurement.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.commons.util.profiledb.measurement;
 
-import org.apache.wayang.commons.util.profiledb.model.Measurement;
-import org.apache.wayang.commons.util.profiledb.model.Type;
-
 import java.util.Collection;
 import java.util.LinkedList;
 import java.util.Objects;
+import org.apache.wayang.commons.util.profiledb.model.Measurement;
+import org.apache.wayang.commons.util.profiledb.model.Type;
 
 /**
  * {@link Measurement} implementation for test purposes.
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/channels/ChannelConversions.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/channels/ChannelConversions.java
index 64013a8..29d0060 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/channels/ChannelConversions.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/channels/ChannelConversions.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.channels;
 
+import java.util.Arrays;
+import java.util.Collection;
 import org.apache.wayang.basic.channels.FileChannel;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
@@ -31,9 +33,6 @@ import org.apache.wayang.flink.operators.FlinkTsvFileSink;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 import org.apache.wayang.java.channels.CollectionChannel;
 
-import java.util.Arrays;
-import java.util.Collection;
-
 /**
  * {@link ChannelConversion}s used by the {@link FlinkPlatform}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/channels/DataSetChannel.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/channels/DataSetChannel.java
index 5a45b82..e69bb77 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/channels/DataSetChannel.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/channels/DataSetChannel.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.flink.channels;
 
+import java.util.OptionalLong;
 import org.apache.flink.api.java.DataSet;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.executionplan.Channel;
@@ -28,8 +29,6 @@ import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.core.platform.Executor;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.OptionalLong;
-
 /**
  * Describes the situation where one {@link DataSet} is operated on, producing a further {@link DataSet}.
  * <p><i>NB: We might be more specific: Distinguish between cached/uncached and pipelined/aggregated.</i></p>
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/FunctionCompiler.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/FunctionCompiler.java
index 2eb5aaf..378ff6c 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/FunctionCompiler.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/FunctionCompiler.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.flink.compiler;
 
+import java.util.Collection;
+import java.util.function.BiFunction;
+import java.util.function.Function;
 import org.apache.flink.api.common.functions.CoGroupFunction;
 import org.apache.flink.api.common.functions.FilterFunction;
 import org.apache.flink.api.common.functions.FlatMapFunction;
@@ -41,10 +44,6 @@ import org.apache.wayang.core.function.TransformationDescriptor;
 import org.apache.wayang.flink.compiler.criterion.WayangConvergenceCriterion;
 import org.apache.wayang.flink.execution.FlinkExecutionContext;
 
-import java.util.Collection;
-import java.util.function.BiFunction;
-import java.util.function.Function;
-
 /**
  * A compiler translates Wayang functions into executable Flink functions.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/KeySelectorDistinct.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/KeySelectorDistinct.java
index 732c745..f26dfc4 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/KeySelectorDistinct.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/KeySelectorDistinct.java
@@ -18,12 +18,11 @@
 
 package org.apache.wayang.flink.compiler;
 
-import org.apache.flink.api.java.functions.KeySelector;
-
 import java.io.ByteArrayOutputStream;
 import java.io.ObjectOutputStream;
 import java.io.Serializable;
 import java.util.Base64;
+import org.apache.flink.api.java.functions.KeySelector;
 
 /**
  * Wrapper for {@Link KeySelector}
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/KeySelectorFunction.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/KeySelectorFunction.java
index 06098a3..06acfed 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/KeySelectorFunction.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/KeySelectorFunction.java
@@ -18,14 +18,13 @@
 
 package org.apache.wayang.flink.compiler;
 
+import java.io.Serializable;
+import java.util.function.Function;
 import org.apache.flink.api.common.typeinfo.TypeInformation;
 import org.apache.flink.api.java.functions.KeySelector;
 import org.apache.flink.api.java.typeutils.ResultTypeQueryable;
 import org.apache.wayang.core.function.TransformationDescriptor;
 
-import java.io.Serializable;
-import java.util.function.Function;
-
 /**
  * Wrapper for {@Link KeySelector}
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/OutputFormatConsumer.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/OutputFormatConsumer.java
index 91e67f8..8007de8 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/OutputFormatConsumer.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/OutputFormatConsumer.java
@@ -18,13 +18,12 @@
 
 package org.apache.wayang.flink.compiler;
 
+import java.io.IOException;
+import java.io.Serializable;
 import org.apache.flink.api.common.io.OutputFormat;
 import org.apache.flink.configuration.Configuration;
 import org.apache.wayang.core.function.ConsumerDescriptor;
 
-import java.io.IOException;
-import java.io.Serializable;
-
 /**
  * Wrapper for {@Link OutputFormat}
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/WayangFileOutputFormat.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/WayangFileOutputFormat.java
index e2d8eb5..55713b4 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/WayangFileOutputFormat.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/WayangFileOutputFormat.java
@@ -18,6 +18,13 @@
 
 package org.apache.wayang.flink.compiler;
 
+import java.io.ByteArrayOutputStream;
+import java.io.FileNotFoundException;
+import java.io.FilterOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutputStream;
+import java.io.OutputStream;
+import java.net.URI;
 import org.apache.flink.api.common.io.BlockInfo;
 import org.apache.flink.api.common.io.CleanupWhenUnsuccessful;
 import org.apache.flink.api.common.io.FileOutputFormat;
@@ -32,17 +39,9 @@ import org.apache.flink.core.memory.DataOutputViewStreamWrapper;
 import org.apache.hadoop.io.BytesWritable;
 import org.apache.hadoop.io.NullWritable;
 import org.apache.hadoop.io.SequenceFile;
-import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
-
-import java.io.ByteArrayOutputStream;
-import java.io.FileNotFoundException;
-import java.io.FilterOutputStream;
-import java.io.IOException;
-import java.io.ObjectOutputStream;
-import java.io.OutputStream;
-import java.net.URI;
+import org.apache.wayang.core.api.exception.WayangException;
 
 /**
  * Wrapper for {@link FileOutputFormat}
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangAggregator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangAggregator.java
index add4daf..080d53b 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangAggregator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangAggregator.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.flink.compiler.criterion;
 
-import org.apache.flink.api.common.aggregators.Aggregator;
-import org.apache.flink.types.ListValue;
-
 import java.util.ArrayList;
 import java.util.List;
+import org.apache.flink.api.common.aggregators.Aggregator;
+import org.apache.flink.types.ListValue;
 
 /**
  * Class create a {@Link Aggregator} that generate aggregatorWrapper
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangConvergenceCriterion.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangConvergenceCriterion.java
index 17c7e2e..14a4c16 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangConvergenceCriterion.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangConvergenceCriterion.java
@@ -19,12 +19,11 @@
 package org.apache.wayang.flink.compiler.criterion;
 
 
-import org.apache.flink.api.common.aggregators.ConvergenceCriterion;
-import org.apache.wayang.core.function.FunctionDescriptor;
-
 import java.io.Serializable;
 import java.util.Collection;
 import java.util.stream.Collectors;
+import org.apache.flink.api.common.aggregators.ConvergenceCriterion;
+import org.apache.wayang.core.function.FunctionDescriptor;
 
 /**
  * Class create a {@Link ConvergenceCriterion} that generate aggregatorWrapper
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangListValue.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangListValue.java
index 2333e3b..5fb0c92 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangListValue.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangListValue.java
@@ -18,9 +18,8 @@
 
 package org.apache.wayang.flink.compiler.criterion;
 
-import org.apache.flink.types.ListValue;
-
 import java.util.Collection;
+import org.apache.flink.types.ListValue;
 
 /**
  * Is a Wrapper for used in the criterion of the Loops
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangValue.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangValue.java
index 2fc0d6b..3e85e17 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangValue.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/compiler/criterion/WayangValue.java
@@ -19,10 +19,6 @@
 package org.apache.wayang.flink.compiler.criterion;
 
 
-import org.apache.flink.core.memory.DataInputView;
-import org.apache.flink.core.memory.DataOutputView;
-import org.apache.flink.types.Value;
-
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -30,6 +26,9 @@ import java.io.ObjectInput;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutput;
 import java.io.ObjectOutputStream;
+import org.apache.flink.core.memory.DataInputView;
+import org.apache.flink.core.memory.DataOutputView;
+import org.apache.flink.types.Value;
 /**
  * Implementation of {@link Value} of flink for use in Wayang
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/execution/FlinkExecutionContext.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/execution/FlinkExecutionContext.java
index a14b38d..2521cd2 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/execution/FlinkExecutionContext.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/execution/FlinkExecutionContext.java
@@ -18,15 +18,14 @@
 
 package org.apache.wayang.flink.execution;
 
+import java.io.Serializable;
+import java.util.Collection;
 import org.apache.flink.api.common.functions.RichFunction;
 import org.apache.wayang.core.function.ExecutionContext;
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.flink.operators.FlinkExecutionOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.io.Serializable;
-import java.util.Collection;
-
 /**
  * {@link ExecutionContext} implementation for the {@link FlinkPlatform}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/execution/FlinkExecutor.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/execution/FlinkExecutor.java
index 61eef4a..f95c9a8 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/execution/FlinkExecutor.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/execution/FlinkExecutor.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.flink.execution;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
 import org.apache.flink.api.java.ExecutionEnvironment;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.api.exception.WayangException;
@@ -36,10 +39,6 @@ import org.apache.wayang.flink.compiler.FunctionCompiler;
 import org.apache.wayang.flink.operators.FlinkExecutionOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
 /**
  * {@link Executor} implementation for the {@link FlinkPlatform}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CartesianMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CartesianMapping.java
index 08f4927..27c5684 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CartesianMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CartesianMapping.java
@@ -19,6 +19,8 @@
 package org.apache.wayang.flink.mapping;
 
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.CartesianOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -29,9 +31,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.flink.operators.FlinkCartesianOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link CartesianOperator} to {@link FlinkCartesianOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CoGroupMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CoGroupMapping.java
index b2e79a2..7f48397 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CoGroupMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CoGroupMapping.java
@@ -19,6 +19,8 @@
 package org.apache.wayang.flink.mapping;
 
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.CoGroupOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -29,9 +31,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.flink.operators.FlinkCoGroupOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link CoGroupOperator} to {@link FlinkCoGroupOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CollectionSourceMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CollectionSourceMapping.java
index 289207f..b8aa313 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CollectionSourceMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CollectionSourceMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.CollectionSource;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.flink.operators.FlinkCollectionSource;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link CollectionSource} to {@link FlinkCollectionSource}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CountMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CountMapping.java
index 95e9975..fa5921b 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CountMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/CountMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.CountOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.flink.operators.FlinkCountOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link CountOperator} to {@link FlinkCountOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/DistinctMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/DistinctMapping.java
index adf2481..ec53f68 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/DistinctMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/DistinctMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.DistinctOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.flink.operators.FlinkDistinctOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link DistinctOperator} to {@link FlinkDistinctOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/DoWhileMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/DoWhileMapping.java
index d4fc663..f89b66c 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/DoWhileMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/DoWhileMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.DoWhileOperator;
 import org.apache.wayang.core.function.PredicateDescriptor;
 import org.apache.wayang.core.mapping.Mapping;
@@ -29,9 +31,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.flink.operators.FlinkDoWhileOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link DoWhileOperator} to {@link FlinkDoWhileOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/FilterMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/FilterMapping.java
index 8afea3b..fc1f811 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/FilterMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/FilterMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.FilterOperator;
 import org.apache.wayang.core.function.PredicateDescriptor;
 import org.apache.wayang.core.mapping.Mapping;
@@ -29,9 +31,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.flink.operators.FlinkFilterOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 
 /**
  * Mapping from {@link FilterOperator} to {@link FlinkFilterOperator}.
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/FlatMapMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/FlatMapMapping.java
index 2a898ed..8a7d61a 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/FlatMapMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/FlatMapMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.FlatMapOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.flink.operators.FlinkFlatMapOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link FlatMapOperator} to {@link FlinkFlatMapOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/GlobalMaterializedGroupMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/GlobalMaterializedGroupMapping.java
index 870e1aa..b05fa61 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/GlobalMaterializedGroupMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/GlobalMaterializedGroupMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.GlobalMaterializedGroupOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.flink.operators.FlinkGlobalMaterializedGroupOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link GlobalMaterializedGroupOperator} to {@link FlinkGlobalMaterializedGroupOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/GlobalReduceMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/GlobalReduceMapping.java
index 7ced46d..aaf3a2b 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/GlobalReduceMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/GlobalReduceMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.GlobalReduceOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.flink.operators.FlinkGlobalReduceOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link GlobalReduceOperator} to {@link FlinkGlobalReduceOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/GroupByMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/GroupByMapping.java
index 9c9faa0..51ce3d7 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/GroupByMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/GroupByMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.GroupByOperator;
 import org.apache.wayang.core.function.FunctionDescriptor;
 import org.apache.wayang.core.mapping.Mapping;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.mapping.SubplanPattern;
 import org.apache.wayang.flink.operators.FlinkGroupByOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link GroupByOperator} to {@link FlinkGroupByOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/IntersectMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/IntersectMapping.java
index 368a040..2676e55 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/IntersectMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/IntersectMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.IntersectOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.flink.operators.FlinkIntersectOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link IntersectOperator} to {@link FlinkIntersectOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/JoinMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/JoinMapping.java
index cc98c82..f1e2b52 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/JoinMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/JoinMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.JoinOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.flink.operators.FlinkJoinOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link JoinOperator} to {@link FlinkJoinOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/LocalCallbackSinkMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/LocalCallbackSinkMapping.java
index 586c309..19291cb 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/LocalCallbackSinkMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/LocalCallbackSinkMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.LocalCallbackSink;
 import org.apache.wayang.core.function.FunctionDescriptor;
 import org.apache.wayang.core.mapping.Mapping;
@@ -29,9 +31,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.flink.operators.FlinkLocalCallbackSink;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link LocalCallbackSink} to {@link FlinkLocalCallbackSink}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/LoopMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/LoopMapping.java
index dab0374..1645a69 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/LoopMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/LoopMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.LoopOperator;
 import org.apache.wayang.core.function.PredicateDescriptor;
 import org.apache.wayang.core.mapping.Mapping;
@@ -29,9 +31,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.flink.operators.FlinkLoopOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link LoopOperator} to {@link FlinkLoopOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/MapMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/MapMapping.java
index dbbe5e2..c0b62df 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/MapMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/MapMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.MapOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.flink.operators.FlinkMapOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link MapOperator} to {@link FlinkMapOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/MapPartitionsMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/MapPartitionsMapping.java
index bc2a1e2..b7f0320 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/MapPartitionsMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/MapPartitionsMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.MapPartitionsOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.flink.operators.FlinkMapPartitionsOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link MapPartitionsOperator} to {@link FlinkMapPartitionsOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/Mappings.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/Mappings.java
index 9a31979..685b9a1 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/Mappings.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/Mappings.java
@@ -18,10 +18,9 @@
 
 package org.apache.wayang.flink.mapping;
 
-import org.apache.wayang.core.mapping.Mapping;
-
 import java.util.Arrays;
 import java.util.Collection;
+import org.apache.wayang.core.mapping.Mapping;
 
 /**
  * Register for {@link Mapping}s for this platform.
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/MaterializedGroupByMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/MaterializedGroupByMapping.java
index 8fa46c1..72f0049 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/MaterializedGroupByMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/MaterializedGroupByMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.MaterializedGroupByOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.flink.operators.FlinkMaterializedGroupByOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link MaterializedGroupByOperator} to {@link FlinkMaterializedGroupByOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ObjectFileSourceMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ObjectFileSourceMapping.java
index 85d67e9..f48eba3 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ObjectFileSourceMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ObjectFileSourceMapping.java
@@ -21,7 +21,6 @@ package org.apache.wayang.flink.mapping;
 import java.util.Collection;
 import java.util.Collections;
 import org.apache.wayang.basic.operators.ObjectFileSource;
-import org.apache.wayang.basic.operators.TextFileSource;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
 import org.apache.wayang.core.mapping.PlanTransformation;
@@ -29,7 +28,6 @@ import org.apache.wayang.core.mapping.ReplacementSubplanFactory;
 import org.apache.wayang.core.mapping.SubplanPattern;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.flink.operators.FlinkObjectFileSource;
-import org.apache.wayang.flink.operators.FlinkTextFileSource;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
 /**
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/PageRankMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/PageRankMapping.java
index b35a600..6f719aa 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/PageRankMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/PageRankMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.PageRankOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -27,9 +29,6 @@ import org.apache.wayang.core.mapping.SubplanPattern;
 import org.apache.wayang.flink.operators.FlinkPageRankOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link PageRankOperator} to {@link FlinkPageRankOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ReduceByMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ReduceByMapping.java
index 8d5d666..3898b09 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ReduceByMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ReduceByMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.ReduceByOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.flink.operators.FlinkReduceByOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link ReduceByOperator} to {@link FlinkReduceByOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/RepeatMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/RepeatMapping.java
index 5de4d4a..220e1bc 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/RepeatMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/RepeatMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.RepeatOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -29,9 +31,6 @@ import org.apache.wayang.flink.operators.FlinkRepeatExpandedOperator;
 import org.apache.wayang.flink.operators.FlinkRepeatOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link RepeatOperator} to {@link FlinkRepeatOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/SampleMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/SampleMapping.java
index f1d3feb..5318a81 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/SampleMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/SampleMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.SampleOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.flink.operators.FlinkSampleOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link SampleOperator} to {@link FlinkSampleOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/SortMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/SortMapping.java
index 412803f..144e591 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/SortMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/SortMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.SortOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.flink.operators.FlinkSortOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link SortOperator} to {@link FlinkSortOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/TextFileSinkMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/TextFileSinkMapping.java
index c5963fb..e3fc257 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/TextFileSinkMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/TextFileSinkMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.TextFileSink;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.flink.operators.FlinkTextFileSink;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 
 /**
  * Mapping from {@link TextFileSink} to {@link FlinkTextFileSink}.
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/TextFileSourceMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/TextFileSourceMapping.java
index a57bb66..b6ef0a6 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/TextFileSourceMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/TextFileSourceMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.TextFileSource;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -27,9 +29,6 @@ import org.apache.wayang.core.mapping.SubplanPattern;
 import org.apache.wayang.flink.operators.FlinkTextFileSource;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link TextFileSource} to {@link FlinkTextFileSource}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/UnionAllMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/UnionAllMapping.java
index ec2f0ed..ae54c8c 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/UnionAllMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/UnionAllMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.UnionAllOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.flink.operators.FlinkUnionAllOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link UnionAllOperator} to {@link FlinkUnionAllOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ZipWithIdMapping.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ZipWithIdMapping.java
index c45de87..94c72a1 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ZipWithIdMapping.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/mapping/ZipWithIdMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.ZipWithIdOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.flink.operators.FlinkZipWithIdOperator;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link ZipWithIdOperator} to {@link FlinkZipWithIdOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCartesianOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCartesianOperator.java
index 280586b..c2fc3af 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCartesianOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCartesianOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.java.DataSet;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.basic.operators.CartesianOperator;
@@ -32,11 +36,6 @@ import org.apache.wayang.core.util.Tuple;
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Flink implementation of the {@link CartesianOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCoGroupOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCoGroupOperator.java
index d1230b7..5693be6 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCoGroupOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCoGroupOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.common.functions.CoGroupFunction;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.functions.KeySelector;
@@ -38,12 +43,6 @@ import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.compiler.FunctionCompiler;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Flink implementation of the {@link CoGroupOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCollectionSink.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCollectionSink.java
index c88f656..54df5a9 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCollectionSink.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCollectionSink.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.commons.lang3.Validate;
 import org.apache.flink.api.java.DataSet;
 import org.apache.wayang.core.api.Configuration;
@@ -35,11 +39,6 @@ import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 import org.apache.wayang.java.channels.CollectionChannel;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 
 /**
  * Converts {@link DataSetChannel} into a {@link CollectionChannel}
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCollectionSource.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCollectionSource.java
index 577f67f..6e33ec8 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCollectionSource.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCollectionSource.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
 import org.apache.flink.api.java.DataSet;
 import org.apache.wayang.basic.operators.CollectionSource;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -31,10 +34,6 @@ import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 import org.apache.wayang.java.channels.CollectionChannel;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
 /**
  * This is execution operator implements the {@link CollectionSource}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCountOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCountOperator.java
index 570e97e..daf6278 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCountOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkCountOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.java.DataSet;
 import org.apache.wayang.basic.operators.CountOperator;
 import org.apache.wayang.core.api.exception.WayangException;
@@ -31,11 +35,6 @@ import org.apache.wayang.core.util.Tuple;
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Flink implementation of the {@link CountOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkDistinctOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkDistinctOperator.java
index 72037be..be069fc 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkDistinctOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkDistinctOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.java.DataSet;
 import org.apache.wayang.basic.operators.DistinctOperator;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -31,11 +35,6 @@ import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.compiler.KeySelectorDistinct;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 
 /**
  * Flink implementation of the {@link DistinctOperator}.
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkDoWhileOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkDoWhileOperator.java
index a558e1d..7164d29 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkDoWhileOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkDoWhileOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.flink.api.common.aggregators.ConvergenceCriterion;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.operators.IterativeDataSet;
@@ -40,11 +44,6 @@ import org.apache.wayang.flink.compiler.criterion.WayangAggregator;
 import org.apache.wayang.flink.compiler.criterion.WayangFilterCriterion;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Flink implementation of the {@link DoWhileOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkExecutionOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkExecutionOperator.java
index f8b5da4..9bb8755 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkExecutionOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkExecutionOperator.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.io.Serializable;
+import java.util.Collection;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.platform.ChannelInstance;
@@ -26,9 +28,6 @@ import org.apache.wayang.core.util.Tuple;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.io.Serializable;
-import java.util.Collection;
-
 /**
  * Execution operator for the Flink platform.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkFilterOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkFilterOperator.java
index 9954f7f..c364840 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkFilterOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkFilterOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.flink.api.common.functions.FilterFunction;
 import org.apache.flink.api.java.DataSet;
 import org.apache.wayang.basic.operators.FilterOperator;
@@ -35,12 +40,6 @@ import org.apache.wayang.core.util.Tuple;
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Flink implementation of the {@link FilterOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkFlatMapOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkFlatMapOperator.java
index d2f8c41..406d9de 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkFlatMapOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkFlatMapOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.flink.api.common.functions.FlatMapFunction;
 import org.apache.flink.api.common.functions.RichFlatMapFunction;
 import org.apache.flink.api.java.DataSet;
@@ -38,12 +43,6 @@ import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutionContext;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Flink implementation of the {@link FlatMapOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkGlobalMaterializedGroupOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkGlobalMaterializedGroupOperator.java
index a2c78f7..cf4a881 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkGlobalMaterializedGroupOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkGlobalMaterializedGroupOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.common.functions.MapPartitionFunction;
 import org.apache.flink.api.java.DataSet;
 import org.apache.wayang.basic.operators.GlobalMaterializedGroupOperator;
@@ -32,12 +37,6 @@ import org.apache.wayang.core.util.Tuple;
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Flink implementation of the {@link GlobalMaterializedGroupOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkGlobalReduceOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkGlobalReduceOperator.java
index a5ccec3..20f5544 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkGlobalReduceOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkGlobalReduceOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.flink.api.common.functions.ReduceFunction;
 import org.apache.flink.api.java.DataSet;
 import org.apache.wayang.basic.operators.GlobalReduceOperator;
@@ -35,12 +40,6 @@ import org.apache.wayang.core.util.Tuple;
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Flink implementation of the {@link GlobalReduceOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkGroupByOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkGroupByOperator.java
index b2f236f..6e86fee 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkGroupByOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkGroupByOperator.java
@@ -18,6 +18,12 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.flink.api.common.functions.GroupReduceFunction;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.functions.KeySelector;
@@ -37,13 +43,6 @@ import org.apache.wayang.core.util.Tuple;
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Flink implementation of the {@link GroupByOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkIntersectOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkIntersectOperator.java
index 2e4d518..3ab8b97 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkIntersectOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkIntersectOperator.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
 import org.apache.flink.api.common.functions.MapFunction;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.functions.KeySelector;
@@ -34,10 +37,6 @@ import org.apache.wayang.core.util.Tuple;
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
 /**
  * Flink implementation of the {@link IntersectOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkJoinOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkJoinOperator.java
index f60b578..3cdd652 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkJoinOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkJoinOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.flink.api.common.functions.JoinFunction;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.functions.KeySelector;
@@ -38,12 +43,6 @@ import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.compiler.FunctionCompiler;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Flink implementation of the {@link JoinOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkLocalCallbackSink.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkLocalCallbackSink.java
index c3a8e6e..ff8b657 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkLocalCallbackSink.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkLocalCallbackSink.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.io.PrintingOutputFormat;
 import org.apache.wayang.basic.operators.LocalCallbackSink;
@@ -32,11 +36,6 @@ import org.apache.wayang.core.util.Tuple;
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.io.Serializable;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
 /**
  * Implementation of the {@link LocalCallbackSink} operator for the Flink platform.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkLoopOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkLoopOperator.java
index 826c187..82aa3f3 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkLoopOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkLoopOperator.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.common.aggregators.ConvergenceCriterion;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.operators.IterativeDataSet;
@@ -36,10 +39,6 @@ import org.apache.wayang.flink.compiler.criterion.WayangAggregator;
 import org.apache.wayang.flink.compiler.criterion.WayangFilterCriterion;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Flink implementation of the {@link RepeatOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkMapOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkMapOperator.java
index 57f7b96..be66622 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkMapOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkMapOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Optional;
 import org.apache.flink.api.common.functions.MapFunction;
 import org.apache.flink.api.common.functions.RichMapFunction;
 import org.apache.flink.api.java.DataSet;
@@ -37,11 +41,6 @@ import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutionContext;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Flink implementation of the {@link MapOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkMapPartitionsOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkMapPartitionsOperator.java
index 215c473..e39fff5 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkMapPartitionsOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkMapPartitionsOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.flink.api.common.functions.MapPartitionFunction;
 import org.apache.flink.api.common.functions.RichMapPartitionFunction;
 import org.apache.flink.api.java.DataSet;
@@ -37,12 +42,6 @@ import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutionContext;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Flink implementation of the {@link MapPartitionsOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkMaterializedGroupByOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkMaterializedGroupByOperator.java
index 627259a..15545da 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkMaterializedGroupByOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkMaterializedGroupByOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Optional;
 import org.apache.flink.api.common.functions.GroupReduceFunction;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.functions.KeySelector;
@@ -36,12 +41,6 @@ import org.apache.wayang.core.util.Tuple;
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Flink implementation of the {@link MaterializedGroupByOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkObjectFileSink.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkObjectFileSink.java
index 6e29ed7..51a420e 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkObjectFileSink.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkObjectFileSink.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.java.operators.DataSink;
 import org.apache.flink.core.fs.FileSystem;
 import org.apache.wayang.basic.channels.FileChannel;
@@ -25,7 +28,6 @@ import org.apache.wayang.basic.operators.ObjectFileSink;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.plan.wayangplan.Operator;
-import org.apache.wayang.core.plan.wayangplan.UnarySink;
 import org.apache.wayang.core.platform.ChannelDescriptor;
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.core.platform.lineage.ExecutionLineageNode;
@@ -36,10 +38,6 @@ import org.apache.wayang.flink.compiler.WayangFileOutputFormat;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * {@link Operator} for the {@link FlinkPlatform} that creates a sequence file.
  *
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkObjectFileSource.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkObjectFileSource.java
index 9c304a4..d9fba1e 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkObjectFileSource.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkObjectFileSource.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.io.ByteArrayInputStream;
+import java.io.ObjectInputStream;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.common.functions.FlatMapFunction;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.hadoop.mapred.HadoopInputFormat;
@@ -31,7 +36,6 @@ import org.apache.wayang.basic.operators.ObjectFileSource;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.plan.wayangplan.Operator;
-import org.apache.wayang.core.plan.wayangplan.UnarySource;
 import org.apache.wayang.core.platform.ChannelDescriptor;
 import org.apache.wayang.core.platform.ChannelInstance;
 import org.apache.wayang.core.platform.lineage.ExecutionLineageNode;
@@ -41,12 +45,6 @@ import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 
-import java.io.ByteArrayInputStream;
-import java.io.ObjectInputStream;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 
 /**
  * {@link Operator} for the {@link FlinkPlatform} that creates a sequence file.
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkPageRankOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkPageRankOperator.java
index 6a62337..b5095f5 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkPageRankOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkPageRankOperator.java
@@ -18,6 +18,13 @@
 
 package org.apache.wayang.flink.operators;
 
+import static org.apache.flink.api.java.aggregation.Aggregations.SUM;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.common.functions.FilterFunction;
 import org.apache.flink.api.common.functions.FlatMapFunction;
 import org.apache.flink.api.common.functions.GroupReduceFunction;
@@ -36,14 +43,6 @@ import org.apache.wayang.core.util.Tuple;
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-import static org.apache.flink.api.java.aggregation.Aggregations.SUM;
-
 /**
  * Flink implementation of the {@link PageRankOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkReduceByOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkReduceByOperator.java
index d0d7e03..0f2a78e 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkReduceByOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkReduceByOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
 import org.apache.flink.api.common.functions.ReduceFunction;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.functions.KeySelector;
@@ -38,12 +43,6 @@ import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.compiler.FunctionCompiler;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-
 
 /**
  * Flink implementation of the {@link ReduceByOperator}.
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkRepeatExpandedOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkRepeatExpandedOperator.java
index b60abe2..0d551ac 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkRepeatExpandedOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkRepeatExpandedOperator.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.operators.IterativeDataSet;
 import org.apache.wayang.basic.operators.RepeatOperator;
@@ -32,10 +35,6 @@ import org.apache.wayang.core.util.Tuple;
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Flink implementation of the {@link RepeatOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkRepeatOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkRepeatOperator.java
index 3b5507c..8b6bb39 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkRepeatOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkRepeatOperator.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.operators.IterativeDataSet;
 import org.apache.wayang.basic.operators.RepeatOperator;
@@ -31,10 +34,6 @@ import org.apache.wayang.core.util.Tuple;
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Flink implementation of the {@link RepeatOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkSampleOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkSampleOperator.java
index 86b0613..61c9582 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkSampleOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkSampleOperator.java
@@ -18,6 +18,13 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Random;
+import java.util.function.IntUnaryOperator;
+import java.util.function.LongUnaryOperator;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.utils.DataSetUtils;
 import org.apache.wayang.basic.operators.SampleOperator;
@@ -32,14 +39,6 @@ import org.apache.wayang.core.util.Tuple;
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Random;
-import java.util.function.IntUnaryOperator;
-import java.util.function.LongUnaryOperator;
-
 /**
  * Flink implementation of the {@link SampleOperator}. Sampling with replacement (i.e., the sample may contain duplicates)
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkSortOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkSortOperator.java
index 97e5d19..034426a 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkSortOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkSortOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.common.operators.Order;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.functions.KeySelector;
@@ -34,11 +38,6 @@ import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.compiler.FunctionCompiler;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Flink implementation of the {@link SortOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkTextFileSink.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkTextFileSink.java
index 9682344..cfeb271 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkTextFileSink.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkTextFileSink.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Optional;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.io.TextOutputFormat;
 import org.apache.wayang.basic.operators.TextFileSink;
@@ -34,11 +38,6 @@ import org.apache.wayang.core.util.Tuple;
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Optional;
-
 /**
  * Implementation of the {@link TextFileSink} operator for the Flink platform.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkTextFileSource.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkTextFileSource.java
index 2485acf..46c4eca 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkTextFileSource.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkTextFileSource.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
 import org.apache.flink.api.java.DataSet;
 import org.apache.wayang.basic.operators.TextFileSource;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -30,10 +33,6 @@ import org.apache.wayang.core.util.Tuple;
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
 /**
  * Provides a {@link Collection} to a Flink job.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkTsvFileSink.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkTsvFileSink.java
index 4bc2ba9..3e6721c 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkTsvFileSink.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkTsvFileSink.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.common.functions.MapFunction;
 import org.apache.flink.api.java.DataSet;
 import org.apache.wayang.basic.channels.FileChannel;
@@ -33,11 +37,6 @@ import org.apache.wayang.core.util.Tuple;
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Created by bertty on 31-10-17.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkUnionAllOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkUnionAllOperator.java
index 93452ff..f0d1f45 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkUnionAllOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkUnionAllOperator.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
 import org.apache.flink.api.java.DataSet;
 import org.apache.wayang.basic.operators.UnionAllOperator;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -30,10 +33,6 @@ import org.apache.wayang.core.util.Tuple;
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
 /**
  * Flink implementation of the {@link UnionAllOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkZipWithIdOperator.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkZipWithIdOperator.java
index 027821a..7d4ad8a 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkZipWithIdOperator.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/operators/FlinkZipWithIdOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.flink.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.flink.api.java.DataSet;
 import org.apache.flink.api.java.utils.DataSetUtils;
 import org.apache.wayang.basic.data.Tuple2;
@@ -34,11 +38,6 @@ import org.apache.wayang.core.util.Tuple;
 import org.apache.wayang.flink.channels.DataSetChannel;
 import org.apache.wayang.flink.execution.FlinkExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Flink implementation of the {@link MapOperator}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/platform/FlinkPlatform.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/platform/FlinkPlatform.java
index 445e6d0..325afdf 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/platform/FlinkPlatform.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/platform/FlinkPlatform.java
@@ -18,8 +18,14 @@
 
 package org.apache.wayang.flink.platform;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
 import org.apache.flink.api.java.CollectionEnvironment;
 import org.apache.flink.api.java.ExecutionEnvironment;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.basic.plugin.WayangBasic;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
@@ -32,13 +38,6 @@ import org.apache.wayang.core.platform.Platform;
 import org.apache.wayang.core.util.ReflectionUtils;
 import org.apache.wayang.flink.execution.FlinkContextReference;
 import org.apache.wayang.flink.execution.FlinkExecutor;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Set;
 
 /**
  * {@link Platform} for Apache Flink.
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/plugin/FlinkBasicPlugin.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/plugin/FlinkBasicPlugin.java
index bc7df27..853e229 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/plugin/FlinkBasicPlugin.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/plugin/FlinkBasicPlugin.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.flink.plugin;
 
+import java.util.Arrays;
+import java.util.Collection;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
@@ -29,9 +31,6 @@ import org.apache.wayang.flink.mapping.Mappings;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Arrays;
-import java.util.Collection;
-
 /**
  * This {@link Plugin} enables to use the basic Wayang {@link Operator}s on the {@link FlinkPlatform}.
  */
diff --git a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/plugin/FlinkConversionPlugin.java b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/plugin/FlinkConversionPlugin.java
index eb4a8c8..b7c0361 100644
--- a/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/plugin/FlinkConversionPlugin.java
+++ b/wayang-platforms/wayang-flink/src/main/java/org/apache/wayang/flink/plugin/FlinkConversionPlugin.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.flink.plugin;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
@@ -27,10 +30,6 @@ import org.apache.wayang.flink.channels.ChannelConversions;
 import org.apache.wayang.flink.platform.FlinkPlatform;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * This {@link Plugin} provides {@link ChannelConversion}s from the  {@link FlinkPlatform}.
  */
diff --git a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/Algorithm/PageRankAlgorithm.java b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/Algorithm/PageRankAlgorithm.java
index 2e0f688..91710e4 100644
--- a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/Algorithm/PageRankAlgorithm.java
+++ b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/Algorithm/PageRankAlgorithm.java
@@ -19,6 +19,8 @@
 package org.apache.wayang.giraph.Algorithm;
 
 import com.google.common.collect.Lists;
+import java.io.IOException;
+import java.util.List;
 import org.apache.giraph.aggregators.DoubleMaxAggregator;
 import org.apache.giraph.aggregators.DoubleMinAggregator;
 import org.apache.giraph.aggregators.LongSumAggregator;
@@ -41,9 +43,6 @@ import org.apache.hadoop.mapreduce.TaskAttemptContext;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 
-import java.io.IOException;
-import java.util.List;
-
 /**
  * Basic PageRank implementation.
  */
diff --git a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/Algorithm/PageRankParameters.java b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/Algorithm/PageRankParameters.java
index 20f7761..86ef4e2 100644
--- a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/Algorithm/PageRankParameters.java
+++ b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/Algorithm/PageRankParameters.java
@@ -18,12 +18,9 @@
 
 package org.apache.wayang.giraph.Algorithm;
 
-import org.apache.wayang.core.api.exception.WayangException;
-
 import java.util.LinkedList;
-import java.util.List;
 import java.util.Queue;
-import java.util.Stack;
+import org.apache.wayang.core.api.exception.WayangException;
 
 /**
  * Parameters for Basic PageRank implementation.
diff --git a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/channels/ChannelConversions.java b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/channels/ChannelConversions.java
index cd1eb61..90bb99d 100644
--- a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/channels/ChannelConversions.java
+++ b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/channels/ChannelConversions.java
@@ -18,10 +18,10 @@
 
 package org.apache.wayang.giraph.channels;
 
-import org.apache.wayang.core.optimizer.channels.ChannelConversion;
-import org.apache.wayang.giraph.platform.GiraphPlatform;
 import java.util.Collection;
 import java.util.Collections;
+import org.apache.wayang.core.optimizer.channels.ChannelConversion;
+import org.apache.wayang.giraph.platform.GiraphPlatform;
 
 /**
  * {@link ChannelConversion}s for the {@link GiraphPlatform}.
diff --git a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/execution/GiraphExecutor.java b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/execution/GiraphExecutor.java
index 86e7aa1..cc615df 100644
--- a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/execution/GiraphExecutor.java
+++ b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/execution/GiraphExecutor.java
@@ -18,20 +18,28 @@
 
 package org.apache.wayang.giraph.execution;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.Queue;
+import java.util.Set;
 import org.apache.giraph.conf.GiraphConfiguration;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.executionplan.ExecutionStage;
 import org.apache.wayang.core.plan.executionplan.ExecutionTask;
-import org.apache.wayang.core.platform.*;
+import org.apache.wayang.core.platform.ChannelInstance;
+import org.apache.wayang.core.platform.ExecutionState;
+import org.apache.wayang.core.platform.Executor;
+import org.apache.wayang.core.platform.ExecutorTemplate;
+import org.apache.wayang.core.platform.PartialExecution;
 import org.apache.wayang.core.platform.lineage.ExecutionLineageNode;
 import org.apache.wayang.core.util.Tuple;
 import org.apache.wayang.giraph.operators.GiraphExecutionOperator;
 import org.apache.wayang.giraph.platform.GiraphPlatform;
 
-import java.util.*;
-
 /**
  * {@link Executor} for the {@link GiraphPlatform}.
  */
diff --git a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/mappings/Mappings.java b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/mappings/Mappings.java
index 7f98c14..6db2dae 100644
--- a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/mappings/Mappings.java
+++ b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/mappings/Mappings.java
@@ -18,10 +18,9 @@
 
 package org.apache.wayang.giraph.mappings;
 
-import org.apache.wayang.core.mapping.Mapping;
-
 import java.util.Collection;
 import java.util.Collections;
+import org.apache.wayang.core.mapping.Mapping;
 
 /**
  * Register for {@link Mapping}s for this platform.
diff --git a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/mappings/PageRankMapping.java b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/mappings/PageRankMapping.java
index cc21b99..a69a65e 100644
--- a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/mappings/PageRankMapping.java
+++ b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/mappings/PageRankMapping.java
@@ -18,16 +18,17 @@
 
 package org.apache.wayang.giraph.mappings;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.PageRankOperator;
-import org.apache.wayang.core.mapping.*;
-import org.apache.wayang.core.plan.wayangplan.Operator;
-import org.apache.wayang.core.plan.wayangplan.Subplan;
+import org.apache.wayang.core.mapping.Mapping;
+import org.apache.wayang.core.mapping.OperatorPattern;
+import org.apache.wayang.core.mapping.PlanTransformation;
+import org.apache.wayang.core.mapping.ReplacementSubplanFactory;
+import org.apache.wayang.core.mapping.SubplanPattern;
 import org.apache.wayang.giraph.operators.GiraphPageRankOperator;
 import org.apache.wayang.giraph.platform.GiraphPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Maps {@link PageRankOperator}s to {@link GiraphPageRankOperator}s.
  */
diff --git a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/operators/GiraphExecutionOperator.java b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/operators/GiraphExecutionOperator.java
index 21f9b86..988823e 100644
--- a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/operators/GiraphExecutionOperator.java
+++ b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/operators/GiraphExecutionOperator.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.giraph.operators;
 
+import java.util.Collection;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
 import org.apache.wayang.core.platform.ChannelInstance;
@@ -25,8 +26,6 @@ import org.apache.wayang.core.platform.lineage.ExecutionLineageNode;
 import org.apache.wayang.core.util.Tuple;
 import org.apache.wayang.giraph.execution.GiraphExecutor;
 
-import java.util.Collection;
-
 /**
  * {@link ExecutionOperator} that can be run by the {@link GiraphExecutor}.
  */
diff --git a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/operators/GiraphPageRankOperator.java b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/operators/GiraphPageRankOperator.java
index 83e68d3..ac1d5cd 100644
--- a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/operators/GiraphPageRankOperator.java
+++ b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/operators/GiraphPageRankOperator.java
@@ -18,8 +18,17 @@
 
 package org.apache.wayang.giraph.operators;
 
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Stream;
 import org.apache.giraph.conf.GiraphConfiguration;
 import org.apache.giraph.job.GiraphJob;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
 import org.apache.wayang.basic.channels.FileChannel;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.basic.operators.PageRankOperator;
@@ -40,13 +49,6 @@ import org.apache.wayang.giraph.Algorithm.PageRankParameters;
 import org.apache.wayang.giraph.execution.GiraphExecutor;
 import org.apache.wayang.giraph.platform.GiraphPlatform;
 import org.apache.wayang.java.channels.StreamChannel;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.io.*;
-import java.net.URISyntaxException;
-import java.util.*;
-import java.util.stream.Stream;
 
 /**
  * PageRank {@link Operator} implementation for the {@link GiraphPlatform}.
diff --git a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/platform/GiraphPlatform.java b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/platform/GiraphPlatform.java
index d267e25..51f66bc 100644
--- a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/platform/GiraphPlatform.java
+++ b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/platform/GiraphPlatform.java
@@ -18,7 +18,6 @@
 
 package org.apache.wayang.giraph.platform;
 
-import org.apache.giraph.conf.GiraphConfiguration;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.costs.LoadProfileToTimeConverter;
 import org.apache.wayang.core.optimizer.costs.LoadToTimeConverter;
diff --git a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/plugin/GiraphPlugin.java b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/plugin/GiraphPlugin.java
index a1a075d..0700b88 100644
--- a/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/plugin/GiraphPlugin.java
+++ b/wayang-platforms/wayang-giraph/src/main/java/org/apache/wayang/giraph/plugin/GiraphPlugin.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.giraph.plugin;
 
+import java.io.File;
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
@@ -28,10 +31,6 @@ import org.apache.wayang.giraph.channels.ChannelConversions;
 import org.apache.wayang.giraph.mappings.Mappings;
 import org.apache.wayang.giraph.platform.GiraphPlatform;
 
-import java.io.File;
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * This {@link Plugin} activates default capabilities of the {@link GiraphPlatform}.
  */
diff --git a/wayang-platforms/wayang-giraph/src/test/java/org/apache/wayang/giraph/operators/GiraphPagaRankOperatorTest.java b/wayang-platforms/wayang-giraph/src/test/java/org/apache/wayang/giraph/operators/GiraphPagaRankOperatorTest.java
index 436c711..c73592d 100644
--- a/wayang-platforms/wayang-giraph/src/test/java/org/apache/wayang/giraph/operators/GiraphPagaRankOperatorTest.java
+++ b/wayang-platforms/wayang-giraph/src/test/java/org/apache/wayang/giraph/operators/GiraphPagaRankOperatorTest.java
@@ -18,8 +18,10 @@
 
 package org.apache.wayang.giraph.operators;
 
-import org.junit.Before;
-import org.junit.Test;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.io.IOException;
 import org.apache.wayang.basic.channels.FileChannel;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.api.Job;
@@ -33,11 +35,7 @@ import org.apache.wayang.giraph.Giraph;
 import org.apache.wayang.giraph.execution.GiraphExecutor;
 import org.apache.wayang.giraph.platform.GiraphPlatform;
 import org.apache.wayang.java.channels.StreamChannel;
-
-import java.io.IOException;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import org.junit.Before;
 
 /**
  * Test For GiraphPageRank
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/ChannelConversions.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/ChannelConversions.java
index e1e9661..4df344b 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/ChannelConversions.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/ChannelConversions.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.channels;
 
+import java.util.Arrays;
+import java.util.Collection;
 import org.apache.wayang.basic.channels.FileChannel;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.core.optimizer.channels.ChannelConversion;
@@ -30,9 +32,6 @@ import org.apache.wayang.java.operators.JavaTsvFileSink;
 import org.apache.wayang.java.operators.JavaTsvFileSource;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Arrays;
-import java.util.Collection;
-
 /**
  * {@link ChannelConversion}s for the {@link JavaPlatform}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/CollectionChannel.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/CollectionChannel.java
index c71c840..8ab7e22 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/CollectionChannel.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/CollectionChannel.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.channels;
 
+import java.util.Collection;
+import java.util.stream.Stream;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.executionplan.Channel;
 import org.apache.wayang.core.plan.wayangplan.OutputSlot;
@@ -26,9 +28,6 @@ import org.apache.wayang.core.platform.ChannelDescriptor;
 import org.apache.wayang.core.platform.Executor;
 import org.apache.wayang.java.operators.JavaExecutionOperator;
 
-import java.util.Collection;
-import java.util.stream.Stream;
-
 /**
  * {@link Channel} between two {@link JavaExecutionOperator}s using an intermediate {@link Collection}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/JavaChannelInstance.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/JavaChannelInstance.java
index dbcdf8d..e1393f2 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/JavaChannelInstance.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/JavaChannelInstance.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.java.channels;
 
+import java.util.stream.Stream;
 import org.apache.wayang.core.plan.executionplan.Channel;
 import org.apache.wayang.core.platform.ChannelInstance;
 
-import java.util.stream.Stream;
-
 /**
  * Defines execution logic to handle a {@link Channel}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/StreamChannel.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/StreamChannel.java
index 98d8a89..14fc7ba 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/StreamChannel.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/channels/StreamChannel.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.java.channels;
 
+import java.util.Collection;
+import java.util.OptionalLong;
+import java.util.stream.Stream;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.executionplan.Channel;
@@ -27,10 +30,6 @@ import org.apache.wayang.core.platform.ChannelDescriptor;
 import org.apache.wayang.core.platform.Executor;
 import org.apache.wayang.java.operators.JavaExecutionOperator;
 
-import java.util.Collection;
-import java.util.OptionalLong;
-import java.util.stream.Stream;
-
 /**
  * {@link Channel} between two {@link JavaExecutionOperator}s using a {@link Stream}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/compiler/FunctionCompiler.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/compiler/FunctionCompiler.java
index 32c3bcb..94945a5 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/compiler/FunctionCompiler.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/compiler/FunctionCompiler.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.java.compiler;
 
+import java.util.function.BinaryOperator;
+import java.util.function.Function;
+import java.util.function.Predicate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.FlatMapDescriptor;
 import org.apache.wayang.core.function.MapPartitionsDescriptor;
@@ -25,10 +28,6 @@ import org.apache.wayang.core.function.PredicateDescriptor;
 import org.apache.wayang.core.function.ReduceDescriptor;
 import org.apache.wayang.core.function.TransformationDescriptor;
 
-import java.util.function.BinaryOperator;
-import java.util.function.Function;
-import java.util.function.Predicate;
-
 /**
  * A compiler translates Wayang functions into executable Java functions.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/execution/JavaExecutionContext.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/execution/JavaExecutionContext.java
index 14b46cc..dbc70d2 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/execution/JavaExecutionContext.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/execution/JavaExecutionContext.java
@@ -18,6 +18,7 @@
 
 package org.apache.wayang.java.execution;
 
+import java.util.Collection;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.function.ExecutionContext;
 import org.apache.wayang.core.plan.wayangplan.InputSlot;
@@ -26,8 +27,6 @@ import org.apache.wayang.java.channels.CollectionChannel;
 import org.apache.wayang.java.operators.JavaExecutionOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-
 /**
  * {@link ExecutionContext} implementation for the {@link JavaPlatform}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/execution/JavaExecutor.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/execution/JavaExecutor.java
index 6150b7c..7fddddd 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/execution/JavaExecutor.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/execution/JavaExecutor.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.java.execution;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
 import org.apache.wayang.core.api.Job;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.function.ExtendedFunction;
@@ -35,10 +38,6 @@ import org.apache.wayang.java.compiler.FunctionCompiler;
 import org.apache.wayang.java.operators.JavaExecutionOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
 /**
  * {@link Executor} implementation for the {@link JavaPlatform}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CartesianMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CartesianMapping.java
index 9fca8af..95925db 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CartesianMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CartesianMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.CartesianOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.java.operators.JavaCartesianOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link CartesianOperator} to {@link JavaCartesianOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CoGroupMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CoGroupMapping.java
index d029d7c..be2ff24 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CoGroupMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CoGroupMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.CoGroupOperator;
 import org.apache.wayang.basic.operators.JoinOperator;
 import org.apache.wayang.core.mapping.Mapping;
@@ -30,9 +32,6 @@ import org.apache.wayang.java.operators.JavaCoGroupOperator;
 import org.apache.wayang.java.operators.JavaJoinOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link JoinOperator} to {@link JavaJoinOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CollectionSourceMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CollectionSourceMapping.java
index d56087b..b7f9558 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CollectionSourceMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CollectionSourceMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.CollectionSource;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.java.operators.JavaCollectionSource;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link CollectionSource} to {@link JavaCollectionSource}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CountMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CountMapping.java
index ec2c97a..6971e08 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CountMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/CountMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.CountOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.java.operators.JavaCountOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link CountOperator} to {@link JavaCountOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/DistinctMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/DistinctMapping.java
index bdea8d7..421860f 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/DistinctMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/DistinctMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.DistinctOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.java.operators.JavaDistinctOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link DistinctOperator} to {@link JavaDistinctOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/DoWhileMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/DoWhileMapping.java
index c71fab6..f33ab1c 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/DoWhileMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/DoWhileMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.DoWhileOperator;
 import org.apache.wayang.basic.operators.LoopOperator;
 import org.apache.wayang.core.function.PredicateDescriptor;
@@ -31,9 +33,6 @@ import org.apache.wayang.java.operators.JavaDoWhileOperator;
 import org.apache.wayang.java.operators.JavaLoopOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link LoopOperator} to {@link JavaLoopOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/FilterMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/FilterMapping.java
index a75c4cb..f9710e0 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/FilterMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/FilterMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.FilterOperator;
 import org.apache.wayang.core.function.PredicateDescriptor;
 import org.apache.wayang.core.mapping.Mapping;
@@ -29,9 +31,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.java.operators.JavaFilterOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link FilterOperator} to {@link JavaFilterOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/FlatMapMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/FlatMapMapping.java
index 3f282c0..ef34935 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/FlatMapMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/FlatMapMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.FlatMapOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.java.operators.JavaFlatMapOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link FlatMapOperator} to {@link JavaFlatMapOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/GlobalMaterializedGroupMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/GlobalMaterializedGroupMapping.java
index 7472966..8328094 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/GlobalMaterializedGroupMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/GlobalMaterializedGroupMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.GlobalMaterializedGroupOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.java.operators.JavaGlobalMaterializedGroupOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link GlobalMaterializedGroupOperator} to {@link JavaGlobalMaterializedGroupOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/GlobalReduceMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/GlobalReduceMapping.java
index c4aa625..d61cb93 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/GlobalReduceMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/GlobalReduceMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.GlobalReduceOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.java.operators.JavaGlobalReduceOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link GlobalReduceOperator} to {@link JavaGlobalReduceOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/IntersectMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/IntersectMapping.java
index c3e1750..77d24e3 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/IntersectMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/IntersectMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.IntersectOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.java.operators.JavaIntersectOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link IntersectOperator} to {@link JavaIntersectOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/JoinMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/JoinMapping.java
index e48d0eb..5704f7c 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/JoinMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/JoinMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.JoinOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.java.operators.JavaJoinOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link JoinOperator} to {@link JavaJoinOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/LocalCallbackSinkMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/LocalCallbackSinkMapping.java
index 51b7819..b0a1777 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/LocalCallbackSinkMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/LocalCallbackSinkMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.LocalCallbackSink;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.java.operators.JavaLocalCallbackSink;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link LocalCallbackSink} to {@link JavaLocalCallbackSink}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/LoopMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/LoopMapping.java
index de3386d..6b3c5b9 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/LoopMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/LoopMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.LoopOperator;
 import org.apache.wayang.core.function.PredicateDescriptor;
 import org.apache.wayang.core.mapping.Mapping;
@@ -29,9 +31,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.java.operators.JavaLoopOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link LoopOperator} to {@link JavaLoopOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/MapMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/MapMapping.java
index 60c73cb..d5f7c4c 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/MapMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/MapMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.MapOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.java.operators.JavaMapOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link MapOperator} to {@link JavaMapOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/MapPartitionsMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/MapPartitionsMapping.java
index dc1bb5a..49a9d5f 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/MapPartitionsMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/MapPartitionsMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.MapPartitionsOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.java.operators.JavaMapPartitionsOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link MapPartitionsOperator} to {@link JavaMapPartitionsOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/Mappings.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/Mappings.java
index fef4791..c77d531 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/Mappings.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/Mappings.java
@@ -18,11 +18,10 @@
 
 package org.apache.wayang.java.mapping;
 
-import org.apache.wayang.core.mapping.Mapping;
-import org.apache.wayang.java.mapping.graph.PageRankMapping;
-
 import java.util.Arrays;
 import java.util.Collection;
+import org.apache.wayang.core.mapping.Mapping;
+import org.apache.wayang.java.mapping.graph.PageRankMapping;
 
 /**
  * Register for {@link Mapping}s for this platform.
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/MaterializedGroupByMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/MaterializedGroupByMapping.java
index b74e5e0..4ffad2f 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/MaterializedGroupByMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/MaterializedGroupByMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.MaterializedGroupByOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.java.operators.JavaMaterializedGroupByOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link MaterializedGroupByOperator} to {@link JavaMaterializedGroupByOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ObjectFileSinkMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ObjectFileSinkMapping.java
index f2bdf5e..cbc4dca 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ObjectFileSinkMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ObjectFileSinkMapping.java
@@ -21,7 +21,6 @@ package org.apache.wayang.java.mapping;
 import java.util.Collection;
 import java.util.Collections;
 import org.apache.wayang.basic.operators.ObjectFileSink;
-import org.apache.wayang.basic.operators.TextFileSink;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
 import org.apache.wayang.core.mapping.PlanTransformation;
@@ -29,7 +28,6 @@ import org.apache.wayang.core.mapping.ReplacementSubplanFactory;
 import org.apache.wayang.core.mapping.SubplanPattern;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.java.operators.JavaObjectFileSink;
-import org.apache.wayang.java.operators.JavaTextFileSink;
 import org.apache.wayang.java.platform.JavaPlatform;
 
 /**
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ObjectFileSourceMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ObjectFileSourceMapping.java
index dbc101e..2e5f466 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ObjectFileSourceMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ObjectFileSourceMapping.java
@@ -21,7 +21,6 @@ package org.apache.wayang.java.mapping;
 import java.util.Collection;
 import java.util.Collections;
 import org.apache.wayang.basic.operators.ObjectFileSource;
-import org.apache.wayang.basic.operators.TextFileSource;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
 import org.apache.wayang.core.mapping.PlanTransformation;
@@ -29,7 +28,6 @@ import org.apache.wayang.core.mapping.ReplacementSubplanFactory;
 import org.apache.wayang.core.mapping.SubplanPattern;
 import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.java.operators.JavaObjectFileSource;
-import org.apache.wayang.java.operators.JavaTextFileSource;
 import org.apache.wayang.java.platform.JavaPlatform;
 
 /**
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ReduceByMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ReduceByMapping.java
index cea8d88..45684e9 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ReduceByMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ReduceByMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.ReduceByOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.java.operators.JavaReduceByOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link ReduceByOperator} to {@link JavaReduceByOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/RepeatMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/RepeatMapping.java
index 8d80f33..dbd3b8d 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/RepeatMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/RepeatMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.RepeatOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.java.operators.JavaRepeatOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link RepeatOperator} to {@link JavaRepeatOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/SampleMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/SampleMapping.java
index 6cf42c2..d67e6ec 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/SampleMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/SampleMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.SampleOperator;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.mapping.Mapping;
@@ -30,9 +32,6 @@ import org.apache.wayang.java.operators.JavaRandomSampleOperator;
 import org.apache.wayang.java.operators.JavaReservoirSampleOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link SampleOperator} to {@link JavaRandomSampleOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/SortMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/SortMapping.java
index 302f118..8e59b0a 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/SortMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/SortMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.SortOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.java.operators.JavaSortOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link SortOperator} to {@link JavaSortOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/TextFileSinkMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/TextFileSinkMapping.java
index eb1d05a..34b5140 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/TextFileSinkMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/TextFileSinkMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.TextFileSink;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.java.operators.JavaTextFileSink;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link TextFileSink} to {@link JavaTextFileSink}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/TextFileSourceMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/TextFileSourceMapping.java
index 3bc5aa1..45e5db9 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/TextFileSourceMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/TextFileSourceMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.TextFileSource;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -27,9 +29,6 @@ import org.apache.wayang.core.mapping.SubplanPattern;
 import org.apache.wayang.java.operators.JavaTextFileSource;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link TextFileSource} to {@link JavaTextFileSource}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/UnionAllMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/UnionAllMapping.java
index 8fc0fbf..a847cea 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/UnionAllMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/UnionAllMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.UnionAllOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -28,9 +30,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.java.operators.JavaUnionAllOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link UnionAllOperator} to {@link JavaUnionAllOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ZipWithIdMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ZipWithIdMapping.java
index ce0f590..9ae8d8f 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ZipWithIdMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/ZipWithIdMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.basic.operators.ZipWithIdOperator;
 import org.apache.wayang.core.function.ExecutionContext;
@@ -32,9 +34,6 @@ import org.apache.wayang.core.types.DataSetType;
 import org.apache.wayang.java.operators.JavaMapOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link ZipWithIdMapping} to a subplan.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/graph/PageRankMapping.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/graph/PageRankMapping.java
index d2a4c3d..b2b0cb2 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/graph/PageRankMapping.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/mapping/graph/PageRankMapping.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.mapping.graph;
 
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.wayang.basic.operators.PageRankOperator;
 import org.apache.wayang.core.mapping.Mapping;
 import org.apache.wayang.core.mapping.OperatorPattern;
@@ -27,9 +29,6 @@ import org.apache.wayang.core.mapping.SubplanPattern;
 import org.apache.wayang.java.operators.graph.JavaPageRankOperator;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.Collections;
-
 /**
  * Mapping from {@link PageRankOperator} to {@link JavaPageRankOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCartesianOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCartesianOperator.java
index cdb4822..d9d0b7d 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCartesianOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCartesianOperator.java
@@ -18,6 +18,13 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.basic.operators.CartesianOperator;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -33,14 +40,6 @@ import org.apache.wayang.java.channels.JavaChannelInstance;
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
 /**
  * Java implementation of the {@link CartesianOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCoGroupOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCoGroupOperator.java
index 253110f..9e255f1 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCoGroupOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCoGroupOperator.java
@@ -18,6 +18,16 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.function.Function;
 import org.apache.wayang.basic.data.Tuple2;
 import org.apache.wayang.basic.operators.CoGroupOperator;
 import org.apache.wayang.core.api.Configuration;
@@ -37,17 +47,6 @@ import org.apache.wayang.java.channels.JavaChannelInstance;
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.function.Function;
-
 /**
  * Java implementation of the {@link CoGroupOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCollectOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCollectOperator.java
index 10ddfa6..32bfde5 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCollectOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCollectOperator.java
@@ -18,6 +18,11 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
 import org.apache.commons.lang3.Validate;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -34,12 +39,6 @@ import org.apache.wayang.java.channels.CollectionChannel;
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
 /**
  * Converts {@link StreamChannel} into a {@link CollectionChannel}
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCollectionSource.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCollectionSource.java
index 7020349..543d6d6 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCollectionSource.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCollectionSource.java
@@ -18,6 +18,9 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.wayang.basic.operators.CollectionSource;
 import org.apache.wayang.basic.operators.TextFileSource;
 import org.apache.wayang.core.optimizer.OptimizationContext;
@@ -30,10 +33,6 @@ import org.apache.wayang.core.util.Tuple;
 import org.apache.wayang.java.channels.CollectionChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * This is execution operator implements the {@link TextFileSource}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCountOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCountOperator.java
index 0cdf1fd..9018599 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCountOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaCountOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.wayang.basic.operators.CountOperator;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
@@ -31,11 +35,6 @@ import org.apache.wayang.java.channels.JavaChannelInstance;
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Java implementation of the {@link CountOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaDistinctOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaDistinctOperator.java
index 2f43c83..714087a 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaDistinctOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaDistinctOperator.java
@@ -18,6 +18,10 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 import org.apache.wayang.basic.operators.DistinctOperator;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
@@ -31,11 +35,6 @@ import org.apache.wayang.java.channels.JavaChannelInstance;
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
 /**
  * Java implementation of the {@link DistinctOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaDoWhileOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaDoWhileOperator.java
index d1a3659..b2556a9 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaDoWhileOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaDoWhileOperator.java
@@ -18,6 +18,12 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+import java.util.function.Predicate;
 import org.apache.wayang.basic.operators.DoWhileOperator;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.PredicateDescriptor;
@@ -35,13 +41,6 @@ import org.apache.wayang.java.channels.JavaChannelInstance;
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-import java.util.function.Predicate;
-
 /**
  * Java implementation of the {@link DoWhileOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaExecutionOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaExecutionOperator.java
index d6b2ae3..cee674c 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaExecutionOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaExecutionOperator.java
@@ -18,6 +18,8 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Collection;
+import java.util.stream.Stream;
 import org.apache.wayang.core.api.exception.WayangException;
 import org.apache.wayang.core.optimizer.OptimizationContext;
 import org.apache.wayang.core.plan.wayangplan.ExecutionOperator;
@@ -30,9 +32,6 @@ import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 import org.apache.wayang.java.platform.JavaPlatform;
 
-import java.util.Collection;
-import java.util.stream.Stream;
-
 /**
  * Execution operator for the Java platform.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaFilterOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaFilterOperator.java
index 757220e..1d1c3f2 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaFilterOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaFilterOperator.java
@@ -18,6 +18,12 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Optional;
+import java.util.function.Predicate;
 import org.apache.wayang.basic.operators.FilterOperator;
 import org.apache.wayang.core.api.Configuration;
 import org.apache.wayang.core.function.PredicateDescriptor;
@@ -35,13 +41,6 @@ import org.apache.wayang.java.channels.JavaChannelInstance;
 import org.apache.wayang.java.channels.StreamChannel;
 import org.apache.wayang.java.execution.JavaExecutor;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Optional;
-import java.util.function.Predicate;
-
 /**
  * Java implementation of the {@link FilterOperator}.
  */
diff --git a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaFlatMapOperator.java b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaFlatMapOperator.java
index 3c101ad..1d3590b 100644
--- a/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaFlatMapOperator.java
+++ b/wayang-platforms/wayang-java/src/main/java/org/apache/wayang/java/operators/JavaFlatMapOperator.java
@@ -18,6 +18,15 @@
 
 package org.apache.wayang.java.operators;
 
+import java.util.Arrays;
... 6884 lines suppressed ...

[incubator-wayang] 08/11: [WAYANG-34] Terasort licenses issues

Posted by be...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bertty pushed a commit to branch WAYANG-34
in repository https://gitbox.apache.org/repos/asf/incubator-wayang.git

commit 4de70fbc3cbd52943333a6e34b0e6f0ad0826d10
Author: Bertty Contreras-Rojas <be...@scalytics.io>
AuthorDate: Mon Sep 27 16:52:01 2021 +0200

    [WAYANG-34] Terasort licenses issues
    
    Signed-off-by: bertty <be...@gmail.com>
---
 .../apache/wayang/apps/terasort/Unsigned16.java    |  1 -
 .../org/apache/wayang/apps/terasort/TeraApp.scala  | 28 ++++++++++++++++------
 .../org/apache/wayang/apps/terasort/TeraGen.scala  | 18 ++++++++++++++
 .../org/apache/wayang/apps/terasort/TeraSort.scala | 18 ++++++++++++++
 .../apache/wayang/apps/terasort/TeraValidate.scala | 22 +++++++++++++++--
 5 files changed, 77 insertions(+), 10 deletions(-)

diff --git a/wayang-benchmark/src/main/java/org/apache/wayang/apps/terasort/Unsigned16.java b/wayang-benchmark/src/main/java/org/apache/wayang/apps/terasort/Unsigned16.java
index 57516b1..ce6b662 100644
--- a/wayang-benchmark/src/main/java/org/apache/wayang/apps/terasort/Unsigned16.java
+++ b/wayang-benchmark/src/main/java/org/apache/wayang/apps/terasort/Unsigned16.java
@@ -21,7 +21,6 @@ package org.apache.wayang.apps.terasort;
 import java.io.DataInput;
 import java.io.DataOutput;
 import java.io.IOException;
-
 import java.io.Serializable;
 import org.apache.hadoop.io.Writable;
 
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraApp.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraApp.scala
index 5023ec9..531bb19 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraApp.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraApp.scala
@@ -1,13 +1,27 @@
-package org.apache.wayang.apps.terasort
+/*
+ * 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.
+ */
 
-import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters, ProfileDBHelper}
-import org.apache.wayang.apps.wordcount.WordCountScala
-import org.apache.wayang.core.api.Configuration
-import org.apache.wayang.core.optimizer.ProbabilisticDoubleInterval
-import org.apache.wayang.core.util.fs.FileSystems
+package org.apache.wayang.apps.terasort
 
 import java.util.regex.Pattern
-import scala.util.matching.Regex
+
+import org.apache.wayang.apps.util.{ExperimentDescriptor, Parameters}
+import org.apache.wayang.core.api.Configuration
 
 object TeraApp extends ExperimentDescriptor {
 
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraGen.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraGen.scala
index 89ac49d..4d6cd74 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraGen.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraGen.scala
@@ -1,3 +1,21 @@
+/*
+ * 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.wayang.apps.terasort
 
 import org.apache.wayang.api.PlanBuilder
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraSort.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraSort.scala
index 0169ec6..8b66230 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraSort.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraSort.scala
@@ -1,3 +1,21 @@
+/*
+ * 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.wayang.apps.terasort
 
 import com.google.common.primitives.Longs
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraValidate.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraValidate.scala
index 829a0ba..d4e035c 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraValidate.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraValidate.scala
@@ -1,11 +1,29 @@
+/*
+ * 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.wayang.apps.terasort
 
+import com.google.common.primitives.UnsignedBytes
+import org.apache.hadoop.util.PureJavaCrc32
 import org.apache.wayang.api.PlanBuilder
 import org.apache.wayang.commons.util.profiledb.model.Experiment
 import org.apache.wayang.core.api.{Configuration, WayangContext}
 import org.apache.wayang.core.plugin.Plugin
-import org.apache.hadoop.util.PureJavaCrc32
-import com.google.common.primitives.UnsignedBytes
 
 class TeraValidate(@transient plugins: Plugin*) extends Serializable {
 

[incubator-wayang] 06/11: [WAYANG-34] add Terasort just TeraSort.scala working

Posted by be...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bertty pushed a commit to branch WAYANG-34
in repository https://gitbox.apache.org/repos/asf/incubator-wayang.git

commit 72939e0a7d4142d1fb0709e5388be42dae54e0d4
Author: Bertty Contreras-Rojas <be...@scalytics.io>
AuthorDate: Mon Sep 27 14:13:02 2021 +0200

    [WAYANG-34] add Terasort just TeraSort.scala working
    
    Signed-off-by: bertty <be...@gmail.com>
---
 .../org/apache/wayang/apps/terasort/TeraApp.scala  |  2 +-
 .../org/apache/wayang/apps/terasort/TeraSort.scala | 27 ++++++++++++++++++++++
 2 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraApp.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraApp.scala
index f86a86e..fa8f9d4 100644
--- a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraApp.scala
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraApp.scala
@@ -47,7 +47,7 @@ object TeraApp extends ExperimentDescriptor {
 
     task match {
       case "generate" => new TeraGen(plugins: _*).apply(output_file, fileSize, partitions)
-      case "sort" => null
+      case "sort" => new TeraSort(plugins: _*).apply(input_file, output_file)
       case "validate" => null
     }
 
diff --git a/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraSort.scala b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraSort.scala
new file mode 100644
index 0000000..0169ec6
--- /dev/null
+++ b/wayang-benchmark/src/main/scala/org/apache/wayang/apps/terasort/TeraSort.scala
@@ -0,0 +1,27 @@
+package org.apache.wayang.apps.terasort
+
+import com.google.common.primitives.Longs
+import org.apache.wayang.api.PlanBuilder
+import org.apache.wayang.commons.util.profiledb.model.Experiment
+import org.apache.wayang.core.api.{Configuration, WayangContext}
+import org.apache.wayang.core.plugin.Plugin
+
+class TeraSort(@transient plugins: Plugin*) extends Serializable {
+
+  def apply(input_url: String, output_url: String)
+           (implicit configuration: Configuration, experiment: Experiment) = {
+
+    val wayangCtx = new WayangContext(configuration)
+    plugins.foreach(wayangCtx.register)
+    val planBuilder = new PlanBuilder(wayangCtx)
+
+    planBuilder
+      .readObjectFile[Tuple2[Array[Byte], Array[Byte]]](input_url)
+      .sort(t => {
+        val bytes = t._1;
+        Longs.fromBytes(0, bytes(0), bytes(1), bytes(2), bytes(3), bytes(4), bytes(5), bytes(6))
+      })
+      .writeObjectFile(output_url);
+  }
+
+}

[incubator-wayang] 10/11: [WAYANG-34] add missing license to ObjectFileSink.java

Posted by be...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bertty pushed a commit to branch WAYANG-34
in repository https://gitbox.apache.org/repos/asf/incubator-wayang.git

commit d2055bd7acad0eb11dad0be508541e4953a62670
Author: Bertty Contreras-Rojas <be...@scalytics.io>
AuthorDate: Mon Sep 27 16:57:05 2021 +0200

    [WAYANG-34] add missing license to ObjectFileSink.java
    
    Signed-off-by: bertty <be...@gmail.com>
---
 .../apache/wayang/basic/operators/ObjectFileSink.java  | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ObjectFileSink.java b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ObjectFileSink.java
index 72ffd9c..c648c17 100644
--- a/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ObjectFileSink.java
+++ b/wayang-commons/wayang-basic/src/main/java/org/apache/wayang/basic/operators/ObjectFileSink.java
@@ -1,3 +1,21 @@
+/*
+ * 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.wayang.basic.operators;
 
 import org.apache.wayang.core.plan.wayangplan.UnarySink;