@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())); }); } }
return Iterators.transform( collector.getOutputIterator(), e -> new SparkElement<>(window, maxTimestamp, Pair.of(t._1.key(), e))); }, new LazyAccumulatorProvider(
@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()))); } }
if (currentHashCode != kw.key().hashCode()) { flushStates(); currentHashCode = kw.key().hashCode(); GroupReducer reducer = activeReducers.get(kw.key()); if (reducer == null) { reducer = new GroupReducer( accumulators); activeReducers.put(kw.key(), reducer); new SparkElement(kw.window(), kw.timestamp(), Pair.of(kw.key(), value)));
public KeyedWindow<W, K> toKeyedWindow() { return new KeyedWindow<>(window(), timestamp(), key()); } }
@SuppressWarnings("unchecked") final OUT el = (OUT) t._2(); return new SparkElement<>(kw.window(), kw.timestamp(), Pair.of(kw.key(), el)); }) .setName(operator.getName() + "::wrap-in-spark-element"); final KeyedWindow<W, KEY> kw = t._1(); final OUT el = t._2(); return new SparkElement<>(kw.window(), kw.timestamp(), Pair.of(kw.key(), el)); }) .setName(operator.getName() + "::wrap-in-spark-element");
@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()))); }