Flink does not natively support outer joins at the moment.
This issue proposes to implement a hash outer join algorithm that can cover left and right outer joins.
The implementation can be based on the regular hash join iterators (for example `ReusingBuildFirstHashMatchIterator` and `NonReusingBuildFirstHashMatchIterator`, 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.