在从 Apache Beam 2.29.0 升级到 2.32.0 时,可能会遇到 UnsupportedOperationException 异常。这是因为 Apache Beam 增加了一些新的特性和更改了一些 API,其中一个影响最大的是有关 Transform API 的更改。
如果你的代码中有自定义的 Transform,可能需要重新实现它们以适应这些更改。具体来说,在 2.32.0 中,为了支持更复杂的 Transform 布局,Transform API 的签名发生了变化,现在需要声明它们的输入和输出类型。
以下是一个示例代码片段,说明如何重新实现一个自定义的 PTransform,以适应 Apache Beam 2.32.0 中的更改:
import org.apache.beam.sdk.transforms.PTransform;
import org.apache.beam.sdk.values.PBegin;
import org.apache.beam.sdk.values.PCollection;
public class CustomTransform extends PTransform> {
private final String input;
public CustomTransform(String input) {
this.input = input;
}
@Override
public PCollection expand(PBegin begin) throws Exception {
// Your implementation here
return null;
}
}
这个示例中,CustomTransform 是一个接收 String 类型的输入并将其转换为一个 PCollection 的自定义 Transform。在 Apache Beam 2.32.0 中,改写后应该在类名后面添加输入和输出类型,以及使用新的方法签名:
import org.apache.beam.sdk.transforms.PTransform;
import org.apache.beam.sdk.values.PBegin;
import org.apache.beam.sdk.values.PCollection;
public class CustomTransform extends PTransform> {
private final String input;
public CustomTransform(String input) {
this.input = input;
}
@Override
public PCollection expand(PBegin begin) throws Exception {
// Your implementation here
return null