当前,我在生产中使用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错误工具提示也无济于事(消息太长,可以详细看到)。
是否有示例代码与我的代码相同?
谢谢。
答案 0 :(得分:0)
您可以在数据流文档中找到guide for migrating from SDK 1.x。
我要指出的一件事是使用.named()
方法,该方法已被删除,现在必须改为使用PCollection.apply(“name”, PTransform)
。
既然您的代码更多,我建议查看指南和Apache Beam SDK 2.0 docs,以了解需要进行哪些更改以及如何进行更改。