google-cloud-platform - 将文件从 Dataflow VM 读取到管道
问题描述
我有一个流式数据流管道,其中将生成一个文件并将其存储在路径 /tmp/filename.txt 中,我已经检查了梁文档,但似乎没有 IO 连接允许我读取此文件并进一步处理它。我能想到的唯一方法是将文件存储回 GCS 并再次读取它以进行下一步。
有没有人有更好的解决方案?感谢你的帮助。
解决方案
Beam 提供了Filesystems
(java、python)包,它是 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
, 并根据需要以这种方式输出文件内容。
推荐阅读
- sql - Oracle 更新多个表中的同一列
- go - 尽管在 init() 中定义了标志,但 Go 测试中出现“提供标志但未定义”错误?
- java - 尝试确定要使用哪种类型的 Java 集合时的一般注意事项?
- javascript - 使用javascript读取json返回值并使用count平均一个字段值
- machine-learning - 有没有办法将自定义强化学习模型导入 Unity?
- airflow - Apache-Airflow - 运行 DAG 时任务处于无状态
- python - AttributeError: 'tuple' object has no attribute 'split' 任何建议都会很有帮助
- python - 使用 multiIndex 在 pandas 数据框中获取未排序的列级别
- apache-kafka - 消费者应用程序在从多个分区读取记录时导致重复
- ios - 将 ScrollView 与 StackView 一起用作子视图,并将 UIViews 用作 StackView 的子视图