Google cloud dataflow 如何使用在数据流执行期间计算的模式写入BigQuery?

Google cloud dataflow 如何使用在数据流执行期间计算的模式写入BigQuery?,google-cloud-dataflow,Google Cloud Dataflow,我有以下情况: 管道A在BigQuery中查找表A,进行一些计算并返回列名列表。 此列名称列表用作管道B输出的BigQuery模式。 你能告诉我实现这一目标的最佳选择是什么吗 管道A是否可以使用TextIO将列名列表写入临时或临时位置文件,然后管道执行器读取这些文件以定义管道B的架构。如果这种方法看起来不错,请告诉我是否有数据流实用程序可以从临时或临时位置读取文件,或者是否应该使用GCS API。您需要执行以下操作: 构建管道A以写入某些位置,如GCS(构建管道B时可以引用的任何持久位置)。 使

我有以下情况:

  • 管道A在BigQuery中查找表A,进行一些计算并返回列名列表。
  • 此列名称列表用作管道B输出的BigQuery模式。 你能告诉我实现这一目标的最佳选择是什么吗


    管道A是否可以使用TextIO将列名列表写入临时或临时位置文件,然后管道执行器读取这些文件以定义管道B的架构。如果这种方法看起来不错,请告诉我是否有数据流实用程序可以从临时或临时位置读取文件,或者是否应该使用GCS API。

    您需要执行以下操作:

  • 构建管道A以写入某些位置,如GCS(构建管道B时可以引用的任何持久位置)。
  • 使用BlockingDataflowPipelineRunner运行并等待管道A完成。
  • 通过从步骤1中定义的位置读取模式信息来构造管道B。
  • 运行管道B。 我不会使用临时位置,因为我们可能会在您着手建造管道B之前清理它。可以使用临时位置(如果与临时位置不同)。我还建议使用唯一的文件名,这样,如果管道a运行多次,您就不会使用管道B读取过时的结果

    这将有助于您读取和写入地面军事系统:

    您可以从PipelineOptions对象获取GcsUtil的实例:

    这在最新版本的Apache Beam中是可能的。请参阅我的更一般的问题和自我回答