我一直在尝试将数据从一个BigQuery项目迁移到另一个BigQuery项目。当我尝试对20个表执行它时,它工作得很好。但是,每当尝试添加更多表时,它就会崩溃:
报告作业状态失败,错误码:INVALID_ARGUMENT
My Code看起来像:
PCollection<TableRow> rows;
List<String> tablesNames = fetchTablesFromSourceBigQuery();
PipelineOptionsFactory.register(MyOptions.class);
MyOptions options = PipelineOptionsFactory.fromArgs(args).withValidation().as(MyOptions.class);
Pipeline p = Pipeline.create(options);
for(String tableName: tableNames){
rows = p.apply("Reading from table", BigQueryIO.readTableRows().from("sourceProject:sourceDataset."+tableName);
rows.apply("Writing to table", BigQueryIO.writeTableRows().to("destProject:destDataset."+tableName);
}
p.run();
作业图太大导致此问题。
这个问题可以通过在代码中包含标志--experiments=upload_graph
来解决。
有关更多信息,请参考此代码和堆栈链接。