如何调试python数据流beam.io.WriteToBigQuery
我目前有一个python数据流作业,其末端接收器是一个PCollection写入BigQuery。它失败,出现以下错误:如何调试python数据流beam.io.WriteToBigQuery,python,google-cloud-platform,google-bigquery,google-cloud-dataflow,Python,Google Cloud Platform,Google Bigquery,Google Cloud Dataflow,我目前有一个python数据流作业,其末端接收器是一个PCollection写入BigQuery。它失败,出现以下错误: Workflow failed. Causes: S01:XXXX+XXX+Write/WriteToBigQuery/NativeWrite failed., BigQuery import job "dataflow_job_XXXXXX" failed., BigQuery job "dataflow_job_XXXXXX" in project "XXXXXX" fi
Workflow failed. Causes: S01:XXXX+XXX+Write/WriteToBigQuery/NativeWrite failed., BigQuery import job "dataflow_job_XXXXXX" failed., BigQuery job "dataflow_job_XXXXXX" in project "XXXXXX" finished with error(s): errorResult: Error while reading data, error message: JSON table encountered too many errors, giving up. Rows: 19; errors: 1
要获得更详细的错误报告,我正在运行:
bq --format=prettyjson show -j dataflow_job_XXXXXX
这显示了类似(有一系列错误,这只是其中之一):
然后,我查找特定的碎片,查看哪个PCollection行出错,以及我需要做什么来过滤这些行或修复我的错误:
gsutil ls gs://XXXXX/XXXXXX/tmp/XXXXX/10002237702794672370/dax-tmp-2019-02-05_20_14_50-18341731408970037725-S01-0-5144bb700f6a9f0b/-shard--try-00d3c2c24d5b0371-endshard.json
但该命令返回:
CommandException: One or more URLs matched no objects.
调试作业的最佳实践是什么(顺便说一句,这需要几个小时)?我现在的想法是以JSON格式将PCollection以非临时位置写入GCS,并尝试自己接收它 对于您的错误类型,我执行以下操作:
使用较小的数据集大小,并在您自己的机器上使用Direct/Local Runner进行调试,这可能吗?是的,所以我意外地完成了1)。在我执行“将PCollection以JSON格式写入非临时位置的GCS并尝试自己接收”的过程中,以下python代码在我的PCollection行中没有暴露任何类型:JSON_formatted=extracted|text |“convertToJSON”>>beam.Map(JSON.dumps)。2) 这是不可能的,因为在1000个CPU上处理5小时的大规模数据集中只有少数边缘案例。谢谢你的意见
CommandException: One or more URLs matched no objects.