具有通用功能的Google Cloud Dataflow自定义键

达伦·西比斯

我们正在使用Dataflow Java SDK,并且越来越多的自定义键类几乎相同。

我想让他们扩展一个通用的抽象类,但是Dataflow SDK似乎试图实例化导致InstantiationException的抽象类。

Caused by: java.lang.RuntimeException: java.lang.InstantiationException
    at org.apache.avro.specific.SpecificData.newInstance(SpecificData.java:316)
    at org.apache.avro.specific.SpecificData.newRecord(SpecificData.java:332)
    at org.apache.avro.generic.GenericDatumReader.readRecord(GenericDatumReader.java:173)
    at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:151)
    at org.apache.avro.generic.GenericDatumReader.read(GenericDatumReader.java:142)
    at com.google.cloud.dataflow.sdk.coders.AvroCoder.decode(AvroCoder.java:242)
    at com.google.cloud.dataflow.sdk.coders.KvCoder.decode(KvCoder.java:97)
    at com.google.cloud.dataflow.sdk.coders.KvCoder.decode(KvCoder.java:42)
    at com.google.cloud.dataflow.sdk.util.CoderUtils.decodeFromSafeStream(CoderUtils.java:156)
    at com.google.cloud.dataflow.sdk.util.CoderUtils.decodeFromByteArray(CoderUtils.java:139)
    at com.google.cloud.dataflow.sdk.util.CoderUtils.decodeFromByteArray(CoderUtils.java:133)
    at com.google.cloud.dataflow.sdk.util.MutationDetectors$CodedValueMutationDetector.<init>(MutationDetectors.java:108)
    at com.google.cloud.dataflow.sdk.util.MutationDetectors.forValueWithCoder(MutationDetectors.java:45)
    at com.google.cloud.dataflow.sdk.transforms.ParDo$ImmutabilityCheckingOutputManager.output(ParDo.java:1218)
    at com.google.cloud.dataflow.sdk.util.DoFnRunner$DoFnContext.outputWindowedValue(DoFnRunner.java:329)
    at com.google.cloud.dataflow.sdk.util.DoFnRunner$DoFnProcessContext.output(DoFnRunner.java:483)
    at com.telstra.cdf.rmr.model.pardos.ParDoAbstractCampaignUAKeyExtractor.processElement(ParDoAbstractCampaignUAKeyExtractor.java:5

这是我们的抽象类,

@DefaultCoder(AvroCoder.class)
public abstract class SuperClassKey  {
    public SuperClassKey(){}
    public abstract double getSomeValue();
}

这是子类

@DefaultCoder(AvroCoder.class)
public class SubClassKey extends SuperClassKey {
    public String foo;

    public SubClassKey() {
    }

    public SubClassKey(String foo){
        this.foo = foo;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        SubClassKey that = (SubClassKey) o;

        if (!foo.equals(that.foo)) return false;

        return true;
    }

    @Override
    public int hashCode() {
        return foo.hashCode();
    }

    @Override
    public double getSomeValue() {
        return foo;
    }
}

我也曾尝试使用界面,但没有成功。

键之间是否可以有一个公共的抽象类或接口?

山姆·麦克维蒂

问题可能是使用PCollection<SuperClassKey>而不是引起的PCollection<SubClassKey>PCollection需要使用具体的类来键入。.setCoder(AvroCoder.of(SubClassKey.class))如果类型推断不够充分可以明确指定编码器

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

自定义无限制源在Google Cloud DataFlow中如何工作?

来自分类Dev

如何使用自定义Docker映像运行Python Google Cloud Dataflow作业?

来自分类Dev

具有HTTP触发器的自定义Domain-Google Cloud功能

来自分类Dev

自定义Google Cloud Messaging令牌

来自分类Dev

Google Cloud Platform Bucket:通过 https 提供具有自定义域的内容

来自分类Dev

Google Cloud Logging /指标中的自定义值

来自分类Dev

Google Cloud Logging /指标中的自定义值

来自分类Dev

Google Cloud ML随附的TPU自定义芯片

来自分类Dev

具有自定义应用功能的节点JavaScript数组解构

来自分类Dev

如何使用自定义容器映像部署Google Cloud功能

来自分类Dev

Google表格:具有动态更改的自定义功能

来自分类Dev

定义通用功能类型

来自分类Dev

飞镖定义通用功能

来自分类Dev

具有自定义名称和外键的引用

来自分类Dev

具有自定义键的C ++映射

来自分类Dev

具有自定义类类型的键的哈希图

来自分类Dev

Google Cloud DLP常规自定义词典错误“词典没有“ cloudStoragePath”字段”

来自分类Dev

自定义组合禁用键的本机功能

来自分类Dev

Jsonschema,使用自定义功能验证对象键

来自分类Dev

Python3中的自定义键功能

来自分类Dev

curses中的自定义键绑定功能

来自分类Dev

根据自定义功能通过键合并字典的值

来自分类Dev

自定义组合禁用键的本机功能

来自分类Dev

检测按下“输入键”以执行自定义功能

来自分类Dev

wordpress高级自定义字段google map api键

来自分类Dev

wordpress高级自定义字段google map api键

来自分类Dev

使用Google Cloud Monitoring v3 API写入自定义时间序列

来自分类Dev

将自定义版本的Datalab部署到Google Cloud平台

来自分类Dev

将自定义参数/查询/标题添加到Google Cloud函数

Related 相关文章

  1. 1

    自定义无限制源在Google Cloud DataFlow中如何工作?

  2. 2

    如何使用自定义Docker映像运行Python Google Cloud Dataflow作业?

  3. 3

    具有HTTP触发器的自定义Domain-Google Cloud功能

  4. 4

    自定义Google Cloud Messaging令牌

  5. 5

    Google Cloud Platform Bucket:通过 https 提供具有自定义域的内容

  6. 6

    Google Cloud Logging /指标中的自定义值

  7. 7

    Google Cloud Logging /指标中的自定义值

  8. 8

    Google Cloud ML随附的TPU自定义芯片

  9. 9

    具有自定义应用功能的节点JavaScript数组解构

  10. 10

    如何使用自定义容器映像部署Google Cloud功能

  11. 11

    Google表格:具有动态更改的自定义功能

  12. 12

    定义通用功能类型

  13. 13

    飞镖定义通用功能

  14. 14

    具有自定义名称和外键的引用

  15. 15

    具有自定义键的C ++映射

  16. 16

    具有自定义类类型的键的哈希图

  17. 17

    Google Cloud DLP常规自定义词典错误“词典没有“ cloudStoragePath”字段”

  18. 18

    自定义组合禁用键的本机功能

  19. 19

    Jsonschema,使用自定义功能验证对象键

  20. 20

    Python3中的自定义键功能

  21. 21

    curses中的自定义键绑定功能

  22. 22

    根据自定义功能通过键合并字典的值

  23. 23

    自定义组合禁用键的本机功能

  24. 24

    检测按下“输入键”以执行自定义功能

  25. 25

    wordpress高级自定义字段google map api键

  26. 26

    wordpress高级自定义字段google map api键

  27. 27

    使用Google Cloud Monitoring v3 API写入自定义时间序列

  28. 28

    将自定义版本的Datalab部署到Google Cloud平台

  29. 29

    将自定义参数/查询/标题添加到Google Cloud函数

热门标签

归档