@Override protected long getTimestamp(SparkElement<WID, IN> elem) { return evtTimeFn.extractTimestamp(elem.getElement()); } }
@Override public Iterator<Tuple2<KeyedWindow<W, KEY>, VALUE>> call(SparkElement<?, IN> wel) { final Iterable<W> windows = windowing.assignWindowsToElement(wel); return Iterators.transform( windows.iterator(), wid -> { final long stamp = Objects.requireNonNull(wid).maxTimestamp() - 1; return new Tuple2<>( new KeyedWindow<>(wid, stamp, keyExtractor.apply(wel.getElement())), valueExtractor.apply(wel.getElement())); }); } }
@Override @SuppressWarnings("unchecked") public Iterator<Tuple2<KeyedWindow, Object>> call(SparkElement wel) throws Exception { Iterable<Window> windows = windowing.assignWindowsToElement(wel); return Iterators.transform(windows.iterator(), w -> new Tuple2<>( new KeyedWindow<>(w, wel.getTimestamp(), keyExtractor.apply(wel.getElement())), valueExtractor.apply(wel.getElement()))); } }
@Override @SuppressWarnings("unchecked") public Iterator<Tuple2<KeyedWindow, SparkElement>> call(SparkElement se) throws Exception { final Iterable<Window> windows = windowing.assignWindowsToElement(new SparkElement( se.getWindow(), se.getTimestamp(), left ? Either.left(se.getElement()) : Either.right(se.getElement()))); return Iterators.transform(windows.iterator(), w -> new Tuple2<>( new KeyedWindow<>(w, se.getTimestamp(), keyExtractor.apply(se.getElement())), new SparkElement(w, se.getTimestamp(), se.getElement()))); }
new Tuple2<>(NullWritable.get(), el.getElement()));
@Override public Iterator<SparkElement<WID, OUT>> call(SparkElement<WID, IN> elem) { final WID window = elem.getWindow(); final long timestamp = getTimestamp(elem); FunctionCollectorMem<OUT> collector = getContext(); // setup user collector collector.clear(); collector.setWindow(window); functor.apply(elem.getElement(), collector); // wrap output in WindowedElement return Iterators.transform(collector.getOutputIterator(), e -> new SparkElement<>(window, timestamp, e)); }
.getJoiner() .apply( first == null ? null : first.getElement(), second == null ? null : second.getElement(), collector); return Iterators.transform(
left.mapToPair( se -> { final Object key = operator.getLeftKeyExtractor().apply(se.getElement()); return new Tuple2<>( new BatchJoinKey<>(key, BatchJoinKey.Side.LEFT), right.mapToPair( se -> { final Object key = operator.getRightKeyExtractor().apply(se.getElement()); return new Tuple2<>( new BatchJoinKey<>(key, BatchJoinKey.Side.RIGHT), .getJoiner() .apply( first == null ? null : first.getElement(), second == null ? null : second.getElement(), collector); return Iterators.transform(