gpt4 book ai didi

google-cloud-dataflow - Google Cloud Dataflow 中的临时文件

转载 作者:行者123 更新时间:2023-12-01 15:24:15 25 4
gpt4 key购买 nike

我正在尝试在执行 Dataflow 作业的工作人员上写入临时文件,但在作业仍在运行时,这些文件似乎已被删除。如果我通过 SSH 连接到正在运行的虚拟机,我可以执行完全相同的文件生成命令,并且文件不会被破坏——也许这只是数据流运行器用户的清理工作。 是否可以使用临时文件或者这是平台限制?

具体来说,我正在尝试写入 Files.createTempDir() 返回的位置,即 /tmp/someidentifier

编辑:不确定我发布时发生了什么,但 Files.createTempDirectory() 有效...

最佳答案

我们不明确保证您写入本地磁盘的文件的生命周期。

也就是说,写入 ProcessElement 中的临时文件是可行的。您可以在同一个 ProcessElement 中对其进行写入和读取。同样,在 DoFn.startBundle 中创建的任何文件都将在 processElement 和 finishBundle 中可见。

您应该避免写入 /dataflow/logs/taskrunner/harness。在那里写入文件可能与 Dataflow 的日志记录冲突。我们鼓励您改用标准 Java API File.createTempFile()File.createTempDirectory()

如果您想保留finishBundle 之外的数据,您应该将数据写入持久存储,例如GCS。您可以通过将数据作为 sideOutput 发出,然后使用 TextIO 或其他编写器之一来实现。或者,您可以直接从 DoFn 内部写入 GCS。

由于 Dataflow 在容器内运行,您将无法通过 ssh 连接到虚拟机来查看文件。容器挂载了宿主 VM 的一些目录,但 /tmp 不是其中之一。您需要附加到适当的容器,例如通过运行

docker exec -t -i <CONTAINER ID> /bin/bash

该命令将在正在运行的容器中启动一个 shell。

关于google-cloud-dataflow - Google Cloud Dataflow 中的临时文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33052578/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com