@Experimental public class Wait extends java.lang.Object
PCollection
until signaled.
Given a main PCollection
and a signal PCollection
, produces output identical
to its main input, but all elements for a window are produced only once that window is closed
in the signal PCollection
.
To express the pattern "apply T to X after Y is ready", use X.apply(Wait.on(Y)).apply(T)
.
In particular: returns a PCollection
with contents identical to the input, but delays
producing elements of the output in window W until the signal's window W closes (i.e. signal's
watermark passes W.end + signal.allowedLateness).
In other words, an element of the output at timestamp "t" will be produced only after no more elements of the signal can appear with a timestamp below "t".
Example usage: write a PCollection
to one database and then to another database,
making sure that writing a window of data to the second database starts only after the respective
window has been fully written to the first database.
PCollection<Void> firstWriteResults = data.apply(ParDo.of(...write to first database...));
data.apply(Wait.on(firstWriteResults))
// Windows of this intermediate PCollection will be processed no earlier than when
// the respective window of firstWriteResults closes.
.apply(ParDo.of(...write to second database...));
Notes:
Modifier and Type | Class and Description |
---|---|
static class |
Wait.OnSignal<T>
Implementation of
on(org.apache.beam.sdk.values.PCollection<?>...) . |
Constructor and Description |
---|
Wait() |
Modifier and Type | Method and Description |
---|---|
static <T> Wait.OnSignal<T> |
on(java.util.List<PCollection<?>> signals)
Waits on the given signal collections.
|
static <T> Wait.OnSignal<T> |
on(PCollection<?>... signals)
Waits on the given signal collections.
|
public static <T> Wait.OnSignal<T> on(PCollection<?>... signals)
public static <T> Wait.OnSignal<T> on(java.util.List<PCollection<?>> signals)