Dataflow BigQueryBatchFileLoads找不到DirectRunner的项目ID



我试图在本地调试一个数据流作业,该作业批量上传到BigQuery,但当使用DirectRunning在本地运行时,BatchFileLoads会弹出

"code": 400,
"message": "Project id is missing",
"errors": [
{
"message": "Project id is missing",
"domain": "global",
"reason": "invalid"
}
],

我已经尝试过对项目idoptions.view_as(beam.options.pipeline_options.GoogleCloudOptions).project = PROJECT_ID进行编码
并使用cli标志python mycode.py --dataset mydataset --project myprojectid但没有运气。

据我所知,BigQueryBatchFileLoads正在从运行时值提供程序获取项目ID,我曾尝试在DoFn中调试值提供程序中的值,但无法解析任何值。

我是Dataflow/ApacheBeam的新手,所以我希望答案是良性的,因为这一定是一个非常常见的用例。

如有任何建议,我们将不胜感激。

假设您使用的是WriteToBigQuery,您是否尝试过传递包含项目名称的表名?

此外,您使用的Beam版本是什么?

我最近在使用DirectRunner时也遇到了这个问题。花了很多时间进行故障排除并找到了一些解决方法!

在WriteToBigQuery步骤中,

  • Workaround 1(将使用模板(

    使用project=[PROJECT]参数或table=[PROJECT]:[DATASET].[TABLE]参数直接指示项目。

  • 变通办法2(模板时不起作用(

    如果在CLI中运行代码时指示了不带项目的表参数,即table=[DATASET].[TABLE]和已解析的--project [PROJECT]参数,请使用以下语法table="{}".format("[DATASET].[TABLE]")。我不知道为什么会这样,但我猜这是Apache Beam的一个错误。

2.30.0测试。

希望它能有所帮助!

相关内容

  • 没有找到相关文章

最新更新