当前位置: 首页 > 知识库问答 >
问题:

使用apache beam读取自定义格式文件

吕奇
2023-03-14

我是阿帕奇光束的新手。我有一个要求读一个文本文件的格式如下所示

a=1
b=3
c=2

a=2
b=6
c=5

在这里,直到一个空行的所有行都是一条记录的一部分,需要一起处理(例如,作为列插入到表中)。上面的示例对应于一个只有2条记录的文件。我正在使用ReadFromText读取文件并对其进行处理。它将每一行作为一个元素读取。然后我尝试循环和处理,直到得到空行。

共有1个答案

丁学
2023-03-14

不,您的记录不能保证顺序相同。PCollections本质上是无序的,PCollection中的元素应该是并行化的,这是不同的,不依赖于PCollection中的其他元素。

在您的示例中,您使用的是TextIO,它将文本文件的每一行视为单独的元素,但您需要将记录的每组数据收集为一个元素。有许多潜在的方法来解决这个问题。

>

  • 如果可以修改文本文件,可以将所有数据放在每条记录的一行上,然后在编写的转换中解析该行。这是通常采用的方法,例如使用CSV文件。

    如果文件比较复杂,并且您需要一个更健壮的解决方案,您可以实现自己的源代码来读取文件并以您所需的格式输出记录。这很可能涉及到使用可拆分的DOFN,并且需要了解FileBasedSource是如何工作的。

  •  类似资料: