首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何访问apache_beam.io.fileio.ReadableFile()对象?

如何访问apache_beam.io.fileio.ReadableFile()对象?
EN

Stack Overflow用户
提问于 2020-07-30 05:11:34
回答 1查看 413关注 0票数 0

我尝试使用apache_beam.io.fileio模块来读取文件lines.txt并将其合并到我的流水线中。

lines.txt包含以下内容:

代码语言:javascript
复制
line1
line2
line3

当我运行以下管道代码时:

代码语言:javascript
复制
with beam.Pipeline(options=pipeline_options) as p:

     lines = (
         p
         | beam.io.fileio.MatchFiles(file_pattern="lines.txt")
         | beam.io.fileio.ReadMatches()
     )
     # print file contents to screen
     lines | 'print to screen' >> beam.Map(print)

我得到以下输出:

代码语言:javascript
复制
<apache_beam.io.fileio.ReadableFile object at 0x000001A8C6C55F08>

我期望的是

代码语言:javascript
复制
line1
line2
line3

我如何才能得到我期望的结果?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-30 05:11:34

中生成的PCollection

代码语言:javascript
复制
p
| beam.io.fileio.MatchFiles(file_pattern="lines.txt")
| beam.io.fileio.ReadMatches()

是一个ReadableFile对象。为了访问这个对象,我们可以使用apache beam pydoc中记录的各种函数。

下面我们实现read_utf8()

代码语言:javascript
复制
with beam.Pipeline(options=pipeline_options) as p:

    lines = (
        p
        | beam.io.fileio.MatchFiles(file_pattern="lines.txt")
        | beam.io.fileio.ReadMatches()
        | beam.Map(lambda file: file.read_utf8())
    )
    # print file contents to screen
    lines | 'print to screen' >> beam.Map(print)

我们得到了预期的结果:

代码语言:javascript
复制
line1
line2
line3
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63162487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档