【问题标题】:Does a new PTransform require implementing or specifying a TransformTranslator?新的 PTransform 是否需要实现或指定 TransformTranslator?
【发布时间】: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)

我在 guidePTransform Style Guide 中没有看到任何关于 TransformTranslators 的提及。

我看到这个异常的几个答案表明 maven 着色存在问题。但是我不使用或不希望构建 uber/fat jar,我可以在构建 Dataflow 模板时获取依赖项。

有人知道问题可能是什么 - 测试管道真的需要阴影或新的东西而不在指南中提及吗?

(出于兴趣:在这种情况下,URN 是什么?)

如果失败,有人知道源代码可能在哪里,所以我可以调试它(注意类路径中的重新打包位;似乎与 Beam 可下载的 SDK 源不匹配)?

谢谢。

【问题讨论】:

  • 实际上我认为它确实需要一个 TransformTranslator.. 或者我可以使用烤箱就绪方法 Read.of(..) 将我的 Source 包装在 PTransform 中。从指南来看,这似乎不是很清楚,所以让我在评论/关闭之前再尝试一下。
  • 你能分享你的代码吗?
  • 能否分享完整的堆栈跟踪

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


【解决方案1】:

我误解了guide - 它说“一个或多个包装读取操作的面向用户的包装复合转换 (PTransform)”,以下内容就足够了:

org.apache.beam.sdk.io.Read.from(new MyNewSource())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-07
    • 2019-01-06
    • 1970-01-01
    • 2019-07-24
    • 2017-06-20
    • 2011-06-11
    • 2019-01-30
    相关资源
    最近更新 更多