2017-08-29 66 views
0

我知道当我们实现一个ParDo变换时,我们从数据中获取单个元素(基本上由“\ n”分隔)。但是如果我有一个在我的文件中占据两行的元素呢?我可以运用自己的条件来挑选元素吗?或者是否总是需要在一行中包含元素?processElement()中的拾取元素 - Apache Beam

回答

1

读取文本文件由TextIO控制,而不是由ParDo控制 - 我想这就是你的意思。实际上,现在TextIO将文件分成每行1个元素,但是正在进行更改。您可以按照https://issues.apache.org/jira/browse/BEAM-2802的工作。

如果您更多地了解了您的文件格式,以确保它在范围内,那么对于该工作将是有用的。

+0

嗨@jkff ...我完全忘了这个...是的,所以我们有一个.sql文件,自然有查询占用多行。当我试图在我的数据流程序中读取它们时,生成的PCollection中的查询不是按照您的答复中所述的顺序排列 - https://stackoverflow.com/questions/45920895/read-a-file-从-GCS合apache的光束。所以基本上我们试图使用数据流顺序执行该文件中的所有查询。 – rish0097

+0

如果您按顺序执行查询,即不是并行执行查询,为什么需要Dataflow? :) – jkff

+0

你是对的顺序执行不需要数据流,但是我们有一个批量作业,它涉及很多步骤,按顺序执行查询是该作业中的一个步骤。所以也必须包括这一点。 – rish0097

相关问题