【发布时间】:2020-11-30 15:51:01
【问题描述】:
我尝试编写一个封装在 PTransform 中的自定义 Beam 源。
尝试在本地进行单元测试时,我在运行时收到以下错误:
java.lang.IllegalStateException: No translator known for my.new.PTransform
at org.apache.beam.repackaged.direct_java.runners.core.construction.PTransformTranslation.urnForTransform(PTransformTranslation.java:191)
at org.apache.beam.runners.direct.RootProviderRegistry.getInitialInputs(RootProviderRegistry.java:69)
我在 guide 或 PTransform Style Guide 中没有看到任何关于 TransformTranslators 的提及。
我看到这个异常的几个答案表明 maven 着色存在问题。但是我不使用或不希望构建 uber/fat jar,我可以在构建 Dataflow 模板时获取依赖项。
有人知道问题可能是什么 - 测试管道真的需要阴影或新的东西而不在指南中提及吗?
(出于兴趣:在这种情况下,URN 是什么?)
如果失败,有人知道源代码可能在哪里,所以我可以调试它(注意类路径中的重新打包位;似乎与 Beam 可下载的 SDK 源不匹配)?
谢谢。
【问题讨论】:
-
实际上我认为它确实需要一个 TransformTranslator.. 或者我可以使用烤箱就绪方法 Read.of(..) 将我的 Source 包装在 PTransform 中。从指南来看,这似乎不是很清楚,所以让我在评论/关闭之前再尝试一下。
-
你能分享你的代码吗?
-
能否分享完整的堆栈跟踪
标签: java google-cloud-dataflow apache-beam