gpt4 book ai didi

java - 覆盖数据流中的 AvroIO 默认编码器

转载 作者:行者123 更新时间:2023-11-30 10:34:07 25 4
gpt4 key购买 nike

我正在尝试使用自定义 Coder 来处理 Dataflow 中的数据。我所做的是:

  • 将数据从 BigQuery 导出到 avro 文件
  • 使用 avro-tools-1.7.7.jar 从这些文件中的模式自动生成一个类
  • 使用 Kryo 为类(class)编写自定义编码器
  • @DefaultCoder(MyCustomCoder.class) 注释了类
  • 使用 p.getCoderRegistry().registerCoder(MyCustomClass.class, MyCustomCoder.class); 注册了我的编码器
  • 使用 PCollection<MyCustomClass> pc = p.apply(AvroIO.Read.named("Name").from("gs://bucket/path/to/*.avro").withSchema(MyCustomClass.class)); 从 avro 文件中读取数据

问题是,如果我的 Coder 中有错误,我的工作只会在洗牌步骤中失败。看起来 Dataflow 没有使用我的自定义 Coder 从 avro 文件加载数据。真的是这样吗?如果是这样,有没有办法覆盖用于加载数据的编码器?

最佳答案

AvroIO 目前总是使用内置的 AvroCoder 来读取输入文件。您可以稍后在管道中像您描述的那样更改编码器。如果你的数据实际上没有以 AvroIO 可以读取的方式编码,你应该使用不同的来源,例如,FileBasedSource 的新子类。 .

关于java - 覆盖数据流中的 AvroIO 默认编码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41834120/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com