Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.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
Python 在一个数据流作业中写入和读取BigQuery_Python_Google Bigquery_Google Cloud Dataflow - Fatal编程技术网

Python 在一个数据流作业中写入和读取BigQuery

Python 在一个数据流作业中写入和读取BigQuery,python,google-bigquery,google-cloud-dataflow,Python,Google Bigquery,Google Cloud Dataflow,在为数据流构建管道时,我遇到了一个看似简单的问题。我有多个管道从外部源获取数据,转换数据并将其写入几个BigQuery表。完成此过程后,我希望运行查询刚刚生成的表的查询。理想情况下,我希望这发生在同一份工作 这是使用数据流的方式,还是应该在作业之间拆分加载到BigQuery和查询表 如果这在同一个作业中是可能的,那么如何解决这个问题,因为BigQueryLink不生成PCollection?如果这在同一个作业中不可能,是否有某种方法可以在完成另一个作业(即编写作业和查询作业)时触发作业?您提到了

在为数据流构建管道时,我遇到了一个看似简单的问题。我有多个管道从外部源获取数据,转换数据并将其写入几个BigQuery表。完成此过程后,我希望运行查询刚刚生成的表的查询。理想情况下,我希望这发生在同一份工作

这是使用数据流的方式,还是应该在作业之间拆分加载到BigQuery和查询表


如果这在同一个作业中是可能的,那么如何解决这个问题,因为BigQueryLink不生成PCollection?如果这在同一个作业中不可能,是否有某种方法可以在完成另一个作业(即编写作业和查询作业)时触发作业?

您提到了在单个作业中执行此操作所需的操作--
BigQuerySink
需要生成一个
PCollection
。即使它是空的,您也可以使用它作为从
BigQuery
读取的步骤的输入,使该步骤等待第一个接收器完成

要做到这一点,您需要创建自己版本的BigQueryLink

如果可能的话,一个更简单的选择可能是从编写到BigQuery的集合中读取第二步,而不是读取刚刚放入BigQuery的表。例如:

PCollection<TableRow> rows = ...;
rows.apply(BigQuery.Write.to(...));
rows.apply(/* rest of the pipeline */);
PCollection行=。。。;
rows.apply(BigQuery.Write.to(…);
行。应用(/*管道的其余部分*/);

如果要继续处理写入BigQuery的元素而不是表行,甚至可以更早地执行此操作。

您提到了在单个作业中执行此操作所需的操作--
BigQueryLink
将需要生成一个
PCollection
。即使它是空的,您也可以使用它作为从
BigQuery
读取的步骤的输入,使该步骤等待第一个接收器完成

要做到这一点,您需要创建自己版本的BigQueryLink

如果可能的话,一个更简单的选择可能是从编写到BigQuery的集合中读取第二步,而不是读取刚刚放入BigQuery的表。例如:

PCollection<TableRow> rows = ...;
rows.apply(BigQuery.Write.to(...));
rows.apply(/* rest of the pipeline */);
PCollection行=。。。;
rows.apply(BigQuery.Write.to(…);
行。应用(/*管道的其余部分*/);

如果您想继续处理写入BigQuery的元素而不是表行,您甚至可以更早地执行此操作。

谢谢您的回答!创建一个BiQueSink的实现是我将要做的,因为第二个答案并不完全符合我的特定情况。Hi @ SuasHealSt,如果一个答案帮助你解决了这个问题,也可以考虑投票:这对那些帮助你的人来说是非常有用的:)嗨,本,我想让你看看一个与数据流和bigquery相关的问题。请看一看。谢谢你的回答!创建一个BiQueSink的实现是我将要做的,因为第二个答案并不完全符合我的特定情况。Hi @ SuasHealSt,如果一个答案帮助你解决了这个问题,也可以考虑投票:这对那些帮助你的人来说是非常有用的:)嗨,本,我想让你看看一个与数据流和bigquery相关的问题。请看一看。