Apache Beam中的Dataflow(1.9.x)管道代码等效于什么?

时间:2018-07-10 03:47:31

标签: google-cloud-dataflow apache-beam dataflow

当前,我在生产中使用Dataflow SDK 1.9.x运行旧版代码库。自8月15日以来,我们将无法使用旧的SDK提交作业,我们必须使用Apache Beam将其升级到最新版本。

我正在重构代码库,发现所做的工作并不像更改程序包名称那么简单。其中之一是,我们的逻辑非常复杂,使用了Accumulator,CombinFn,CoCombine等。

这是我们的代码库的样子(而且我们还有很多这样的代码)

  PCollection<KV<String, TrackingData>> keyValueTracking = ...
   Combine.KeyedCombineFn<String, TrackingData, UserEventActivityCountSummaryPerParameter, UserEventActivityCountSummaryPerParameter> perProductActivitySummaryCombined = ...;


PCollection<KV<String, CombineFns.CoCombineResult>> combinedResult = keyValueTracking.apply(
        Combine.perKey(
            CombineFns.composeKeyed()
                .with(identityFn, perProductActivitySummaryCombined, perProductSummaryTag)
                .with(identityFn, generalUserSummaryCombined, generalSummarytag)
                .with(identityFn, firstLastEventCombined, firstLastEventTag)
        ).named("coCombinedPerKey_"+keyValueTracking.getName())

我的观点是如何轻松地将这段代码转换为Apache Beam。目前,由于正在进行重构,我无法编译我的代码库,而我的IDEA错误工具提示也无济于事(消息太长,可以详细看到)。

是否有示例代码与我的代码相同?

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以在数据流文档中找到guide for migrating from SDK 1.x

我要指出的一件事是使用.named()方法,该方法已被删除,现在必须改为使用PCollection.apply(“name”, PTransform)

既然您的代码更多,我建议查看指南和Apache Beam SDK 2.0 docs,以了解需要进行哪些更改以及如何进行更改。