【发布时间】:2020-01-22 10:16:37
【问题描述】:
我需要使用 Python 中的 Apache Beam 将大量 json 文件加载到 BQ 中。 jsons 有一个非常复杂的模式(具有多个层次结构),更重要的是 - 它并不一致。 有些字段非常罕见,以至于它们只出现在 0.01% 的 json 中。我不能让 BQ 使用 AUTO_DETECT 推断 WriteToBigQuery 方法中的模式,因为它只检查 100 行 - 还远远不够。我尝试使用 python generate-schema 实用程序针对 0.1% 的数据构建模式 - 但同样,有些字段非常罕见,以至于它仍然失败。
没有这样的字段:FIELD_NAME。
我尝试找到一种方法来上传文件而不考虑任何错误,并将错误保存到错误表中,我可以单独处理。但是,我无论如何都没有在 WriteToBigQuery 模块中找到这样做。 我还尝试在将每个 json 发送到管道之前对其进行验证,但速度非常慢。我还尝试根据指定的模式“过滤”json,但这需要遍历所有 json - 速度也很慢,因为每个 json 大小约为 13 KB。
有没有人遇到任何可以提供帮助的东西?奇怪的是,使用 Apache Beam 写入 BQ 时没有使用任何 max_rejected 属性。 任何有关如何处理此问题的想法将不胜感激。
【问题讨论】:
标签: json google-bigquery google-cloud-dataflow apache-beam