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

2024-04-26 19:02:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用apache_beam.io.fileio模块来读取文件lines.txt,并将其合并到我的管道中

lines.txt包含以下内容:

line1
line2
line3

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

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)

我得到以下输出:

<apache_beam.io.fileio.ReadableFile object at 0x000001A8C6C55F08>

我预料

line1
line2
line3

我怎样才能得到预期的结果


Tags: toiotxt管道apachescreenfileiofile
1条回答
网友
1楼 · 发布于 2024-04-26 19:02:10

p
| beam.io.fileio.MatchFiles(file_pattern="lines.txt")
| beam.io.fileio.ReadMatches()

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

下面我们实现read_utf8()

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)

我们得到了预期的结果:

line1
line2
line3

相关问题 更多 >