使用 Google Cloud Dataflow 在 BigQuery 中解析和写入一个巨大的 json 文件时出现问题

Problem parsing and writing in BigQuery a huge json file with Google Cloud Dataflow

我正在尝试创建一个数据流(批处理),每小时从 Google 云存储读取一个文件,解析它并在 BigQuery table 中写入一个条目。该文件是一个.json in 每行有一个复杂的json.

我创建了一个简单的管道:

(p 
| "Read file" >> beam.io.ReadFromText(cusom_options.file_name)
| "Parse line json" >> beam.Map(parse)
| "Write in BigQuery" >> beam.io.gcp.bigquery.WriteToBigQuery(
        table=cusom_options.table))

解析函数是这样的:

def parse(input_elem):
   log = json.loads(input_elem)
   result = {}

   ... # Get some fields from input and add to "result"

   return result

管道工作正常,文件大小为 100 Mb 和 70K 行(每个作业大约 5 分钟)。但是当文件增加时,数据流需要更多的时间(15 分钟,200-300 Mb)或者没有完成并以失败结束(超过 1.5 Gb 和 350K 行)。

我做了一些测试,当我在函数 parse 中创建了一个 json 示例但没有使用 input_elem 数据流工作正常,并在 7-8 分钟内为每个条目创建一行。

不知道管道哪里出了问题,有没有人遇到过类似的问题?

更多信息

我们终于解决了这个问题。在使用数据流的同时,在应用程序中创建了一些 VPC 网络,并且防火墙规则配置不正确。

这种情况类似于文档中描述的情况 (The VPC network used for your job might be missing)。规则存在但未正确配置

谢谢!