Apache Beam - 如何从无界 PCollection 中创建有界 PCollection?

her*_*ick 5 apache-beam

出于调试目的,我希望能够将无界 PCollection 转换为有界 PCollection。有直接的方法吗?在我看来,这样做可以强制管道完成,除其他外,将是有用的。

我认为 Sample.any() (这里的Javadoc:https ://beam.apache.org/documentation/sdks/javadoc/2.5.0/org/apache/beam/sdk/transforms/Sample.html#any-long- ) ,将是我所需要的,但 PTransform 似乎并没有改变管道的边界。

编辑:我尝试了the-hbar-tender的建议,但无法使其工作。我是这样尝试的:

BoundedReadFromUnboundedSource brfus = unbounded.withMaxNumRecords(10);
Run Code Online (Sandbox Code Playgroud)

...无界会像这样创建:

Read.Unbounded unbounded = new Read.Unbounded("some name", pubsubUnboundedSource);
Run Code Online (Sandbox Code Playgroud)

... pubsubUnboundedSource 的创建方式如下:

PubsubUnboundedSource pubsubUnboundedSource = PubsubUnboundedSource(pubsubClientFactory, projectValueProvider, topicValueProvider, subscriptionValueProvider, "some timestamp attribute", "some id attribute", true)
Run Code Online (Sandbox Code Playgroud)

...但是 pubsubClientFactory 无法实例化,因为 PubsubClient 不是公共的。我在那里放弃了。也许还有另一种方法可以解决这个问题。