2

beam.io.ReadFromText用来处理来自文本文件的数据。

解析文件比逐行读取更复杂(有一些状态需要携带并逐行更改)。

我可以让 Beam 只用一个处理器读取我的文件吗?(未并行化)这些情况下的任何其他最佳实践?

4

1 回答 1

4

是的,您可以使用FileSystems API自由地自己对文件进行任意处理。这就是ReadFromText所有其他基于文件的内置转换在幕后所做的。

def ParseFile(name):
  with FileSystems.open(name) as f:
    ... Parse the file and yield elements ...

p | beam.Create(['/path/to/file'])
  | beam.FlatMapElements(ParseFile)
于 2018-02-20T03:26:35.797 回答