【问题标题】:Staging files on google dataflow worker在谷歌数据流工作者上暂存文件
【发布时间】:2015-08-11 13:48:49
【问题描述】:

Dataflow SDK 中是否有任何东西可以让我在工作人员上暂存资源文件?我需要在文件系统上为执行 NLP 的自定义 DoFn 提供特定的静态文件资源。我的目标是从类加载器中获取一个 zip 文件资源,并在 worker 初始化时仅在 worker 文件系统上解压一次,而不是尝试在自定义 DoFn 中执行此操作。

【问题讨论】:

    标签: google-cloud-platform google-cloud-dataflow


    【解决方案1】:

    您可以指定--filesToStage 来指定应暂存的文件。有几个问题需要注意:

    1. 默认情况下,Dataflow SDK 将--filesToStage 设置为类路径中的所有文件,以确保工作人员可以使用运行管道所需的代码。如果您覆盖此选项,您需要确保它包含您的代码。
    2. worker 上的文件(将在类路径中)将附加一个 MD5 哈希。因此,如果您指定--filesToStage=foo.zip,则文件名将是foo-<someHash>.zip。您需要遍历类路径中的所有文件才能找到合适的文件。

    https://cloud.google.com/dataflow/pipelines/executing-your-pipeline 中查看--filesToStage 的文档 了解更多信息。

    【讨论】:

    • 我的问题与“钩子”或 API 更相关,我可以在工作节点开始执行工作之前从“暂存资源”中一次提取文件。我能够暂存我需要的文件,但在节点上执行任何工作之前,我找不到可以在本地检索和扩展资源的位置。我已经在 DonFn 的“startBundle”方法中完成了这项工作,但我认为这不是最好的方法,因为这些方法对任何工作人员都很常见。由于正在使用 NLP 库,这是需要在本地文件系统上的静态文件。
    • 我有一个类似的用例。我有多个模型文件用于预测。这些文件接近 1 GB。我不想在执行时加载文件,因为它会增加执行时间。我应该将这些文件加载​​到暂存位置吗?
    猜你喜欢
    • 2020-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 2019-10-19
    • 1970-01-01
    相关资源
    最近更新 更多