【问题标题】:Does apache_beam (python SDK) support .zip compression typeapache_beam (python SDK) 是否支持 .zip 压缩类型
【发布时间】:2020-12-24 07:58:37
【问题描述】:

我正在使用 apache Beam 实现一个批处理管道,它可以解压缩 json 文件,对其进行预处理并将它们存储回文件系统中的给定位置。

文件可以使用 ZIP 或 GZIP 算法压缩..

GZIP 文件解压效果很好,但 ZIP 文件解压失败...经过调查,我发现只有 JAVA SDK 支持 GZIP、BZIP2 和 DEFLATE 压缩类型,但不存在 python 实现。

有没有办法在不修补 apache beam Python SDK 的情况下解决这个问题?

【问题讨论】:

  • 您可以使用 pcollection 创建一个只有文件名的管道,并可以在自定义 DoFn 中解压缩文件。

标签: python apache-beam


【解决方案1】:

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)]  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 2012-08-04
    • 2023-03-19
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 2017-10-24
    相关资源
    最近更新 更多