【问题标题】:Google Cloud Platform Dataflow integration谷歌云平台数据流集成
【发布时间】:2018-10-04 18:13:34
【问题描述】:

是否可以在 GCP Dataflow 中利用命令行工具?

基本上,我有一些文件,我目前将这些文件作为参数传递给命令行工具,并且该工具会根据输入输出不同的文件。我不确定该工具做了什么,因此在 Dataflow 中重新创建逻辑是毫无疑问的。有什么方法可以使用 os 或 subprocess 模块调用此工具,同时仍能利用 Dataflow 的优势?

【问题讨论】:

    标签: python google-cloud-platform google-cloud-dataflow apache-beam


    【解决方案1】:

    是的,您可以调用图表内的子流程。但是,这样做有一些影响。示例:在 DoFn() 内部,您可能会执行以下操作:shell(调用旧版 exe 以生成平面文件)。此时,您将不得不手动阻止该调用或创建编排时间来处理输出。 Apache Beam 中没有回调或调度机制。这种情况的主要副作用是您现在阻止 DoFn 进行更多工作 - 因此燃烧循环只是阻塞。如果这个子流程调用很轻,可能不是问题 - 如果它们是资源密集型的,例如对这个基因组进行测序——你会遇到一些问题。

    执行此类工作的一种更灵活、更有效的方法是将 Cloud Composer 与 Cloud Dataflow 混合使用。将 Dataflow 用于需要聚合的工作,然后将长时间运行的(子流程)工作分派给 Cloud Composer。例如:分析 1B 人的人口,找到具有 X 特征的前 Y 人。然后调度长时间运行的进程对 Y 进行子进程分析。

    这有帮助吗?

    【讨论】:

    • 另外,worker 是无状态的,因此用户不能指望在同一台机器上或使用相同的本地存储或任何东西上运行的两次 DoFn 调用。为每条记录创建一个全新的流程将使他们的工作负载达到顶峰。他们需要更多的硬件。毕竟,DoFns 只是 java 代码。用户几乎可以在其中做任何他们想做的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-26
    • 2020-06-02
    • 2018-01-10
    • 2019-07-18
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    相关资源
    最近更新 更多