使 Beam 中的运算符独立于 Google 数据流
Make operator in Beam independent on Google Dataflow
我目前 运行在 Apache Beam 中为 Google Dataflow 使用 Nexmark 基准测试套件,我想根据需要对其进行一些自定义。
更具体地说,我正在根据我的自定义工作负载测试 Dataflow 的自动缩放功能,并且我希望工作负载生成器是独立的,以免它屈服于背压并减慢速度。
事件生成的当前代码如下所示:
/** Return source of events from Pubsub. */
private PCollection<Event> sourceEventsFromPubsub(Pipeline p) {
NexmarkUtils.console("Reading events from Pubsub %s", pubsubSubscription);
PubsubIO.Read<PubsubMessage> io =
PubsubIO.readMessagesWithAttributes()
.fromSubscription(pubsubSubscription)
.withIdAttribute(NexmarkUtils.PUBSUB_ID);
if (!configuration.usePubsubPublishTime) {
io = io.withTimestampAttribute(NexmarkUtils.PUBSUB_TIMESTAMP);
}
return p.apply(queryName + ".ReadPubsubEvents", io)
.apply(queryName + ".PubsubMessageToEvent", ParDo.of(new PubsubMessageEventDoFn()));
}
是否有关于如何在其独占工作器上将其修改为 运行 的文档?有点像 Flink 的 slotSharingGroup
能力。
您可以将管道分成 2 个管道:一个读取 Pub/Sub -> 生成事件 -> 写入中间 Pub/Sub 主题,另一个通过中间 Pub/Sub 消耗事件主题。
除此之外,无法明确控制 Dataflow 如何为管道的不同阶段配置资源。
我目前 运行在 Apache Beam 中为 Google Dataflow 使用 Nexmark 基准测试套件,我想根据需要对其进行一些自定义。
更具体地说,我正在根据我的自定义工作负载测试 Dataflow 的自动缩放功能,并且我希望工作负载生成器是独立的,以免它屈服于背压并减慢速度。
事件生成的当前代码如下所示:
/** Return source of events from Pubsub. */
private PCollection<Event> sourceEventsFromPubsub(Pipeline p) {
NexmarkUtils.console("Reading events from Pubsub %s", pubsubSubscription);
PubsubIO.Read<PubsubMessage> io =
PubsubIO.readMessagesWithAttributes()
.fromSubscription(pubsubSubscription)
.withIdAttribute(NexmarkUtils.PUBSUB_ID);
if (!configuration.usePubsubPublishTime) {
io = io.withTimestampAttribute(NexmarkUtils.PUBSUB_TIMESTAMP);
}
return p.apply(queryName + ".ReadPubsubEvents", io)
.apply(queryName + ".PubsubMessageToEvent", ParDo.of(new PubsubMessageEventDoFn()));
}
是否有关于如何在其独占工作器上将其修改为 运行 的文档?有点像 Flink 的 slotSharingGroup
能力。
您可以将管道分成 2 个管道:一个读取 Pub/Sub -> 生成事件 -> 写入中间 Pub/Sub 主题,另一个通过中间 Pub/Sub 消耗事件主题。
除此之外,无法明确控制 Dataflow 如何为管道的不同阶段配置资源。