public class CountingInput extends Object
PTransform that produces longs. When used to produce a
bounded PCollection, CountingInput starts at 0
and counts up to a specified maximum. When used to produce an
unbounded PCollection, it counts up to Long.MAX_VALUE
and then never produces more output. (In practice, this limit should never be reached.)
The bounded CountingInput is implemented based on OffsetBasedSource and
OffsetBasedSource.OffsetBasedReader, so it performs efficient initial splitting and it
supports dynamic work rebalancing.
To produce a bounded PCollection<Long>, use upTo(long):
Pipeline p = ...
PTransform<PBegin, PCollection<Long>> producer = CountingInput.upTo(1000);
PCollection<Long> bounded = p.apply(producer);
To produce an unbounded PCollection<Long>, use unbounded(),
calling CountingInput.UnboundedCountingInput.withTimestampFn(SerializableFunction) to provide values
with timestamps other than Instant.now().
Pipeline p = ...
// To create an unbounded producer that uses processing time as the element timestamp.
PCollection<Long> unbounded = p.apply(CountingInput.unbounded());
// Or, to create an unbounded source that uses a provided function to set the element timestamp.
PCollection<Long> unboundedWithTimestamps =
p.apply(CountingInput.unbounded().withTimestampFn(someFn));
| Modifier and Type | Class and Description |
|---|---|
static class |
CountingInput.BoundedCountingInput
A
PTransform that will produce a specified number of Longs starting from
0. |
static class |
CountingInput.UnboundedCountingInput
|
| Constructor and Description |
|---|
CountingInput() |
| Modifier and Type | Method and Description |
|---|---|
static CountingInput.UnboundedCountingInput |
unbounded()
Creates an
CountingInput.UnboundedCountingInput that will produce numbers starting from 0 up
to Long.MAX_VALUE. |
static CountingInput.BoundedCountingInput |
upTo(long numElements)
Creates a
CountingInput.BoundedCountingInput that will produce the specified number of elements,
from 0 to numElements - 1. |
public static CountingInput.BoundedCountingInput upTo(long numElements)
CountingInput.BoundedCountingInput that will produce the specified number of elements,
from 0 to numElements - 1.public static CountingInput.UnboundedCountingInput unbounded()
CountingInput.UnboundedCountingInput that will produce numbers starting from 0 up
to Long.MAX_VALUE.
After Long.MAX_VALUE, the transform never produces more output. (In practice, this
limit should never be reached.)
Elements in the resulting PCollection<Long> will by default have
timestamps corresponding to processing time at element generation, provided by
Instant.now(). Use the transform returned by
CountingInput.UnboundedCountingInput.withTimestampFn(SerializableFunction) to control the output
timestamps.