首页 > 解决方案 > 将文件从 Dataflow VM 读取到管道

问题描述

我有一个流式数据流管道,其中将生成一个文件并将其存储在路径 /tmp/filename.txt 中,我已经检查了梁文档,但似乎没有 IO 连接允许我读取此文件并进一步处理它。我能想到的唯一方法是将文件存储回 GCS 并再次读取它以进行下一步。

有没有人有更好的解决方案?感谢你的帮助。

标签: google-cloud-platformgoogle-cloud-dataflowapache-beamapache-beam-io

解决方案


Beam 提供了Filesystemsjavapython)包,它是 Beam 管道可以访问的所有各种文件系统的包装器。您可以使用它来使用您的文件。

对于 Python,您的代码将如下所示:

path = '/tmp/filename.txt'
f = FileSystems.open(path)
contents = f.read()

对于 Java:

String path = "/tmp/filename.txt";
ResourceId rid = FileSystems.matchNewResource(path, false);
ReadableByteChannel ch = FileSystems.open(rid);

您可以将其编写为DoFn, 并根据需要以这种方式输出文件内容。


推荐阅读