在 HDFS 中写入文件 - 使用 TextIO API 与 Java - BufferedWriter(new FileWriter())
Writing Files in HDFS- Using TextIO API vs Java - BufferedWriter(new FileWriter())
我们有一个要求,我们需要为每个员工 ID 创建文件。我们使用了 groupbyKey 功能并能够创建数据结构。
< ID, Iterable < Employee Objects >> 这里我们将Iterable < Employee > 转换为List。
然后我们为员工 ID 创建了一个文件夹和一个文件。
所以在 > 对象中,对于我们循环的每一行,我们使用 BufferedWriter 将数据写入文件。它是否足够好,或者我们需要使用 TextIO 框架来做同样的事情。问题是,与 BufferedWriter 相比,我们是否会使用 TextIO 获得显着的性能改进,以便将数据写入文件的每一行。
谢谢
以产生定义明确的结果并且在发生故障时不丢失数据或重复的方式编写文件是非常困难的。您可以通过查看 TextIO
在幕后使用的 WriteFiles
转换的实现来了解这种复杂性。所以 TextIO
为您处理了这种复杂性,如果可以的话,我强烈建议您使用它——而不是使用手工编写的代码。您可能需要 write().to(DynamicDestinations)
版本。
如果您正在做 TextIO
绝对做不到的事情,我仍然建议您查看 WriteFiles
的实现,以了解还需要做些什么来确保您的代码对故障具有弹性。
我们有一个要求,我们需要为每个员工 ID 创建文件。我们使用了 groupbyKey 功能并能够创建数据结构。
< ID, Iterable < Employee Objects >> 这里我们将Iterable < Employee > 转换为List。
然后我们为员工 ID 创建了一个文件夹和一个文件。
所以在
谢谢
以产生定义明确的结果并且在发生故障时不丢失数据或重复的方式编写文件是非常困难的。您可以通过查看 TextIO
在幕后使用的 WriteFiles
转换的实现来了解这种复杂性。所以 TextIO
为您处理了这种复杂性,如果可以的话,我强烈建议您使用它——而不是使用手工编写的代码。您可能需要 write().to(DynamicDestinations)
版本。
如果您正在做 TextIO
绝对做不到的事情,我仍然建议您查看 WriteFiles
的实现,以了解还需要做些什么来确保您的代码对故障具有弹性。