[
https://issues.apache.org/jira/browse/FLINK-2105?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14628033#comment-14628033
]
ASF GitHub Bot commented on FLINK-2105:
---------------------------------------
Github user fhueske commented on a diff in the pull request:
https://github.com/apache/flink/pull/907#discussion_r34676111
--- Diff:
flink-runtime/src/main/java/org/apache/flink/runtime/operators/sort/NonReusingMergeMatchIterator.java
---
@@ -18,60 +18,19 @@
package org.apache.flink.runtime.operators.sort;
-import org.apache.flink.api.common.functions.FlatJoinFunction;
import org.apache.flink.api.common.typeutils.TypeComparator;
import org.apache.flink.api.common.typeutils.TypePairComparator;
import org.apache.flink.api.common.typeutils.TypeSerializer;
-import org.apache.flink.core.memory.MemorySegment;
import org.apache.flink.runtime.io.disk.iomanager.IOManager;
import org.apache.flink.runtime.jobgraph.tasks.AbstractInvokable;
import org.apache.flink.runtime.memorymanager.MemoryAllocationException;
import org.apache.flink.runtime.memorymanager.MemoryManager;
-import
org.apache.flink.runtime.operators.resettable.NonReusingBlockResettableIterator;
-import
org.apache.flink.runtime.operators.resettable.SpillingResettableIterator;
-import org.apache.flink.runtime.operators.util.JoinTaskIterator;
+import org.apache.flink.runtime.util.KeyGroupedIterator;
import org.apache.flink.runtime.util.NonReusingKeyGroupedIterator;
-import org.apache.flink.util.Collector;
import org.apache.flink.util.MutableObjectIterator;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import java.io.IOException;
-import java.util.Iterator;
-import java.util.List;
-/**
- * An implementation of the {@link
org.apache.flink.runtime.operators.util.JoinTaskIterator} that realizes the
- * matching through a sort-merge join strategy.
- */
-public class NonReusingMergeMatchIterator<T1, T2, O> implements
JoinTaskIterator<T1, T2, O> {
-
- /**
- * The log used by this iterator to log messages.
- */
- private static final Logger LOG =
LoggerFactory.getLogger(NonReusingMergeMatchIterator.class);
-
- //
--------------------------------------------------------------------------------------------
-
- private TypePairComparator<T1, T2> comp;
-
- private NonReusingKeyGroupedIterator<T1> iterator1;
-
- private NonReusingKeyGroupedIterator<T2> iterator2;
-
- private final TypeSerializer<T1> serializer1;
-
- private final TypeSerializer<T2> serializer2;
-
- private final NonReusingBlockResettableIterator<T2> blockIt; // for
N:M cross products with same key
-
- private final List<MemorySegment> memoryForSpillingIterator;
-
- private final MemoryManager memoryManager;
-
- private final IOManager ioManager;
-
- //
--------------------------------------------------------------------------------------------
+public class NonReusingMergeMatchIterator<T1, T2, O> extends
AbstractMergeMatchIterator<T1, T2, O> {
--- End diff --
Rename to NonReusingMerge**InnerJoin**Iterator.
> Implement Sort-Merge Outer Join algorithm
> -----------------------------------------
>
> Key: FLINK-2105
> URL: https://issues.apache.org/jira/browse/FLINK-2105
> Project: Flink
> Issue Type: Sub-task
> Components: Local Runtime
> Reporter: Fabian Hueske
> Assignee: Ricky Pogalz
> Priority: Minor
> Fix For: pre-apache
>
>
> Flink does not natively support outer joins at the moment.
> This issue proposes to implement a sort-merge outer join algorithm that can
> cover left, right, and full outer joins.
> The implementation can be based on the regular sort-merge join iterator
> ({{ReusingMergeMatchIterator}} and {{NonReusingMergeMatchIterator}}, see also
> {{MatchDriver}} class)
> The Reusing and NonReusing variants differ in whether object instances are
> reused or new objects are created. I would start with the NonReusing variant
> which is safer from a user's point of view and should also be easier to
> implement.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)