Google cloud dataflow 将多个文件名从云函数传递到数据流

Google cloud dataflow 将多个文件名从云函数传递到数据流,google-cloud-dataflow,google-cloud-functions,Google Cloud Dataflow,Google Cloud Functions,正如我之前的中所述,我试图将单个文件的名称从云函数传递到数据流。如果我在一个GCS存储桶中一次上载多个文件会怎么样?是否可以使用事件数据捕获并发送所有文件名?如果没有其他方法,我可以在我的数据流程序中获取这些文件名 谢谢要在单个管道中运行此功能,您需要创建一个自定义源,该源包含一个文件名列表(或一个作为具体文件名的字符串,等等),然后将该源与适当的运行时管道选项一起使用。此方法的挑战在于只有客户端(大概是这样的)知道有多少文件以及它们何时完成上传。发送到云函数的事件将至少发生一次(这意味着您可能

正如我之前的中所述,我试图将单个文件的名称从云函数传递到数据流。如果我在一个GCS存储桶中一次上载多个文件会怎么样?是否可以使用事件数据捕获并发送所有文件名?如果没有其他方法,我可以在我的数据流程序中获取这些文件名


谢谢

要在单个管道中运行此功能,您需要创建一个自定义源,该源包含一个文件名列表(或一个作为具体文件名的字符串,等等),然后将该源与适当的运行时管道选项一起使用。

此方法的挑战在于只有客户端(大概是这样的)知道有多少文件以及它们何时完成上传。发送到云函数的事件将至少发生一次(这意味着您可能偶尔会收到多个事件),并且可能会导致事件无序。即使云函数不知何故知道它需要多少文件,您可能会发现,由于竞争条件检查云存储,很难保证只有一个云函数触发数据流(例如,多个函数可能“认为”它们是最后一个)。云存储(AFAIK)中没有会导致单个函数调用的“批处理”语义(有一个批处理API,但事件是从单个“对象”更改中发出的,因此即使批量写入N个文件也会导致至少N个事件)

上传完所有文件后,最好让客户端手动触发云函数或直接触发数据流。您可以直接通过HTTP触发云函数,也可以只向云存储写入sentinel值来触发函数

另一种方法是将文件打包成一个来自客户端的上传文件(例如tar文件),但我相信这对于您的用例来说是没有意义的