python - apache_beam (python SDK) 是否支持 .zip 压缩类型
问题描述
我正在使用 apache Beam 实现一个批处理管道,它可以解压缩 json 文件,对它们进行预处理并将它们存储回文件系统中的给定位置。
可以使用 ZIP 或 GZIP 算法压缩文件。
解压在 GZIP 文件上运行良好,但在 ZIP 文件上失败......经过调查,我发现只有 JAVA SDK 支持 GZIP、BZIP2 和 DEFLATE 压缩类型,但不存在 python 实现。
有没有办法在不修补 apache 梁 Python SDK 的情况下解决这个问题?
解决方案
Beam Python 不支持 ZIP。有两种解决方法:您可以读取 DoFn 中的文件,或者您可以通过Cross-Language Transform使用 Java SDK 的文件 IO 。
read-via-dofn 方法看起来像
filenames
| beam.Map(lambda f: (f, None))
| beam.GroupByKey() # The GroupByKey adds a fusion break so that files can be processed in parallel
| beam.Map(lambda f: f[0])
| beam.FlatMap(lambda f: [line for line in read(f)]
推荐阅读
- javascript - 如何创建一个容器组件以多次使用它?
- android - 使用存储库模式在后台处理蓝牙流的最佳方法是什么?
- python - Django 在两个不同的视图中创建类的实例不起作用
- python - 如何修复来自 Google Analytics 用户删除 API 的 403:insufficient authentication scopes 错误
- git - 在所有存储库中复制 .git/config 文件
- java - 通过rest api插入操作Hibernate
- xml - 两个不同的 POJO 编组到一个 XML
- swift - On Appear 仅适用于第一个实例...我该如何更改
- java - JPA - 初始化的惰性关系不起作用
- excel - 使用 for 循环和范围的自定义 VBA 函数