在HDFS中编写文件 - 使用TextIO API与Jav​​a - BufferedWriter(new FileWriter())

时间:2017-11-16 21:47:36

标签: apache-beam

我们要求我们需要为每个员工ID创建文件。我们使用groupbyKey功能并能够创建数据结构。 < ID,Iterable<员工对象> >在哪里我们转换了Iterable<员工>列表。 然后我们为Employee ID创建了一个文件夹和一个文件。 所以在< EmployeeID,List<员工> >对象,对于我们循环的每一行,使用BufferedWriter,我们将数据写入文件。它是否足够好,或者我们需要使用TextIO框架来做同样的事情。问题是,与BufferedWriter相比,我们是否会使用TextIO获得显着的性能提升,以便在每行的文件中写入数据。

由于

1 个答案:

答案 0 :(得分:0)

以一种产生定义明确的结果并且在发生故障时没有数据丢失或重复的方式编写文件是非常困难的。您可以通过查看引擎WriteFiles使用的TextIO转换的实现来了解这种复杂性。所以TextIO会为您处理这种复杂性,如果可以的话,我强烈建议您使用它 - 而不是使用手工制作的代码。您可能需要write().to(DynamicDestinations)版本。

如果您正在执行TextIO绝对无法做的事情,我仍然建议您查看WriteFiles的实施情况,以了解还需要做些什么来确保您的代码可以抵御失败。