如何在 java 中使用 google 云数据流从云存储读取时跳过 csv 文件中的回车符 returns

How to skip carriage returns in csv file while reading from cloud storage using google cloud dataflow in java

我有一个 CSV 文件,其中每一行都包含新的回车符 returns (\n)。 使用 Apache Beam 的 TextIO.read 函数从云存储读取 CSV 文件时,它正在将 \n 视为新记录。我该如何解决这个问题。

我尝试过扩展 filebasedsource,但是当我们应用 pTransorms 时它只读取 CSV 文件的第一行。

我们将不胜感激

提前致谢

TextIO 无法做到这一点 - 它总是根据回车 returns 拆分输入,并且不知道其中一些回车 returns.[=13 的 CSV 特定引用=]

但是,Beam 2.2 包含一个转换,使您可以非常轻松地自己编写特定于 CSV(或任何其他文件格式特定阅读)的代码:FileIO。做这样的事情:

p.apply(FileIO.match().filepattern("gs://..."))
 .apply(FileIO.readMatches())
 .apply(ParDo.of(new DoFn<ReadableFile, TableRow>() {
   @ProcessElement
   public void process(ProcessContext c) throws IOException {
     try (InputStream is = Channels.newInputStream(c.element().open())) {
       // ... Use your favorite Java CSV library ...
       ... c.output(next csv record) ...
     }
   }
 }))