Python 谷歌云平台数据流集成

Python 谷歌云平台数据流集成,python,google-cloud-platform,google-cloud-dataflow,apache-beam,Python,Google Cloud Platform,Google Cloud Dataflow,Apache Beam,是否可以利用GCP数据流中的命令行工具 从本质上说,我有一些文件,当前我将它们作为参数传递到命令行工具中,该工具根据输入输出不同的文件。我不太确定这个工具做了什么,所以在数据流中重新创建逻辑是不可能的。是否有任何方法可以使用操作系统或子流程模块调用此工具,同时仍然利用数据流的优点?是的,您可以调用图形中的子流程。然而,这样做有一些含义。示例:在DoFn()中,您可以执行如下操作:shell(调用legacy exe生成平面文件)。此时,您必须手动阻止该调用,或者创建一段编排来处理输出。Apach

是否可以利用GCP数据流中的命令行工具


从本质上说,我有一些文件,当前我将它们作为参数传递到命令行工具中,该工具根据输入输出不同的文件。我不太确定这个工具做了什么,所以在数据流中重新创建逻辑是不可能的。是否有任何方法可以使用操作系统或子流程模块调用此工具,同时仍然利用数据流的优点?

是的,您可以调用图形中的子流程。然而,这样做有一些含义。示例:在DoFn()中,您可以执行如下操作:shell(调用legacy exe生成平面文件)。此时,您必须手动阻止该调用,或者创建一段编排来处理输出。Apache Beam中没有回调或调度机制。这个场景的主要副作用是,您现在正在阻止DoFn做更多的工作,因此燃烧循环只是阻塞。如果这个子过程调用很轻,可能不是问题-如果它们是资源密集型的,例如,对这个基因组进行排序-您将遇到一些问题

完成这类工作的一种更灵活、更有效的方法是将CloudComposer与云数据流混合使用。对需要聚合的工作使用数据流,然后将长时间运行(子进程)的工作分派给CloudComposer。例如:分析1B人的人口,找到具有X特征的前Y人,然后分派长时间运行的流程在Y上进行子流程分析


这有帮助吗?

此外,工作进程是无状态的,因此用户不能指望在同一台机器上或使用同一本地存储或任何东西运行两次DoFn调用。为每一条记录创建一个全新的流程将使他们的工作量达到顶点。他们需要更多的硬件。毕竟,dofn只是java代码。用户可以在那里做任何他们想做的事情。