gpt4 book ai didi

google-cloud-dataflow - 带有行号的 Apache Beam TextIO.Read

转载 作者:行者123 更新时间:2023-12-03 19:20:19 27 4
gpt4 key购买 nike

是否可以通过从 TextIO.Read 读入 PCollection 的行访问行号?对于这里的上下文,我正在处理一个 CSV 文件并且需要访问给定行的行号。

如果无法通过 TextIO.Read 使用某种自定义 Read 或转换似乎应该是可能的,但我无法弄清楚从哪里开始。

最佳答案

您可以使用 FileIO 手动读取文件,从 ReadableFile 读取时可以确定行号.

一个简单的解决方案如下所示:

p
.apply(FileIO.match().filepattern("/file.csv"))
.apply(FileIO.readMatches())
.apply(FlatMapElements
.into(strings())
.via((FileIO.ReadableFile f) -> {
List<String> result = new ArrayList<>();
try (BufferedReader br = new BufferedReader(Channels.newReader(f.open(), "UTF-8"))) {
int lineNr = 1;
String line = br.readLine();
while (line != null) {
result.add(lineNr + "," + line);
line = br.readLine();
lineNr++;
}
} catch (IOException e) {
throw new RuntimeException("Error while reading", e);
}
return result;
}));

上面的解决方案只是将行号添加到每个输入行。

关于google-cloud-dataflow - 带有行号的 Apache Beam TextIO.Read,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50727888/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com