Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 使用Dataflow[apache beam]从第二次大查询中提取数据时的问题_Google Cloud Platform_Google Bigquery_Google Cloud Dataflow_Apache Beam - Fatal编程技术网

Google cloud platform 使用Dataflow[apache beam]从第二次大查询中提取数据时的问题

Google cloud platform 使用Dataflow[apache beam]从第二次大查询中提取数据时的问题,google-cloud-platform,google-bigquery,google-cloud-dataflow,apache-beam,Google Cloud Platform,Google Bigquery,Google Cloud Dataflow,Apache Beam,我需要使用数据流从BigQuery表中提取数据并写入GCS bucket。 数据流是使用ApacheBeam(Java)构建的。数据流从BigQuery中提取并首次完美地写入GCS 但是,当第二个数据流在第一个管道成功执行后从同一个表中提取数据时,它不会从大查询中提取任何数据。我在stackdriver日志中看到的唯一错误是 Blockquote“请求失败,代码为409,由于IOExceptions执行了0次重试,由于状态代码不成功执行了0次重试,HTTP框架表示请求可以重试,(负责重试的调用方


我需要使用数据流从BigQuery表中提取数据并写入GCS bucket。
数据流是使用ApacheBeam(Java)构建的。数据流从BigQuery中提取并首次完美地写入GCS

但是,当第二个数据流在第一个管道成功执行后从同一个表中提取数据时,它不会从大查询中提取任何数据。我在stackdriver日志中看到的唯一错误是

Blockquote“请求失败,代码为409,由于IOExceptions执行了0次重试,由于状态代码不成功执行了0次重试,HTTP框架表示请求可以重试,(负责重试的调用方):”

我用于提取的示例代码是

 pipeline.apply("Extract from BQ", BigQueryIO.readTableRows().fromQuery("SELECT * from bq_test.employee"))

非常感谢您的帮助

我以前在使用模板时看到过这种情况。根据文档,在使用模板部分:

在模板中使用read()或readTableRows()时,需要 指定BigQueryIO.Read.withTemplateCompatibility()。指定此 在非模板管道中,不建议使用管道,因为它在某种程度上 性能较低

在该节中:

使用与新模板兼容的源实现。此实现 与重复的模板调用兼容

如果是,您应该使用:

pipeline.apply(“从BQ中提取”,BigQueryIO
.readTableRows()
.withTemplateCompatibility()
.fromQuery(“从bq_test.employee中选择*))

我以前在使用模板时见过这种情况。根据文档,在使用模板部分:

在模板中使用read()或readTableRows()时,需要 指定BigQueryIO.Read.withTemplateCompatibility()。指定此 在非模板管道中,不建议使用管道,因为它在某种程度上 性能较低

在该节中:

使用与新模板兼容的源实现。此实现 与重复的模板调用兼容

如果是,您应该使用:

pipeline.apply(“从BQ中提取”,BigQueryIO
.readTableRows()
.withTemplateCompatibility()
.fromQuery(“从bq_test.employee中选择*))

您是否正在数据流中进行任何特殊转换或业务逻辑?我问这个问题的原因是因为您不必使用数据流。您可以使用SQL访问它,然后调用BigQuery的导出API将表直接转储到GCS。不使用数据流也可以为您节省资金。另外,您是否知道,在管道中使用SQL查询从BigQuery读取数据会产生费用?不要使用
选择*
。相反,使用
from(TableReference)
而不是
fromQuery(SQL)
。您在数据流中进行任何特殊转换或业务逻辑吗?我问这个问题的原因是因为您不必使用数据流。您可以使用SQL访问它,然后调用BigQuery的导出API将表直接转储到GCS。不使用数据流也可以为您节省资金。另外,您是否知道,在管道中使用SQL查询从BigQuery读取数据会产生费用?不要使用
选择*
。请改用
from(TableReference)
而不是
fromQuery(SQL)