Java BQ加载具有不同模式的Avro文件,仅添加字段

Java BQ加载具有不同模式的Avro文件,仅添加字段,java,google-bigquery,google-cloud-dataflow,avro,apache-beam,Java,Google Bigquery,Google Cloud Dataflow,Avro,Apache Beam,上下文: 我们有一个数据流作业,该作业使用每周更改的模式(仅限字段添加)将Avro文件写入GCS。这意味着,在一个GCS前缀下,我们有一堆具有不同模式的Avro文件,在任何给定时间最有可能有两个模式。有关更多详细信息,请参阅文章中的上下文部分 问题: 根据,当将具有多个模式的Avro文件加载到BigQuery中时,BigQuery将选择字典顺序最大的文件。然而,这不是我观察到的行为。我观察到不一致的行为 在我的第一次尝试中,我选择了新的模式,新的字段就在那里。然而,BQ负载本身花费的时间比它应该

上下文: 我们有一个数据流作业,该作业使用每周更改的模式(仅限字段添加)将Avro文件写入GCS。这意味着,在一个GCS前缀下,我们有一堆具有不同模式的Avro文件,在任何给定时间最有可能有两个模式。有关更多详细信息,请参阅文章中的上下文部分

问题: 根据,当将具有多个模式的Avro文件加载到BigQuery中时,BigQuery将选择字典顺序最大的文件。然而,这不是我观察到的行为。我观察到不一致的行为

在我的第一次尝试中,我选择了新的模式,新的字段就在那里。然而,BQ负载本身花费的时间比它应该花费的时间要长得多。加载368594条记录花了7分钟

在我的第二次尝试中,字典顺序较大的文件正在使用新的模式,我能够打开Avro文件并在标题中看到新字段。但是当我将这些文件加载到表中时,添加的字段丢失了。但是,如果我单独加载顺序最大的文件,表将有新字段

我们有一个自定义文件命名策略,即: “shardNum UUID.avro的chunk-$windowStart-$windowEnd shardIndex”

问题:

  • 由于BQ对所有Avro文件进行自动模式检测,那么关于旧/新模式的规则是什么?特别是当只发生字段添加时
  • 为什么BQ负载在我的第一次尝试中花费了这么长时间?它是否加载了旧模式,然后中途发现了新模式,然后重新完成了所有工作
  • 关于如何调试这个有什么建议吗

  • 谷歌云支持这里

  • 模式自动检测是BigQuery基于小样本行执行的推理过程。这意味着推断的模式可能因分析的样本而异。这可以解释为什么你会有不一致的行为。有关更多信息,请查看此

  • 为了回答这个问题,我需要更多的信息,因此我鼓励您使用谷歌云支持打开一张罚单,以便我们能够更好地帮助您

  • 见答复2
  • 我希望这有帮助