2016-11-14 67 views
1

WordCount的输出存储在多个文件中。 但是,开发人员无法控制文件在群集中的位置(ip,路径)。 在MapReduce API中,开发人员可以编写reduce程序来解决此问题。如何使用DirectRunner或任何其他跑步者在ApacheBeam中处理此问题?Wordcount的输出存储在不同的文件中

回答

0

事实上 - Apache Beam中的WordCount示例管道使用TextIO.Write写入其输出,该输出不会(默认情况下)指定输出碎片的数量。

默认情况下,每个运行器独立决定生成多少个碎片,通常基于其内部优化。然而,用户可以通过.withNumShards() API来控制这个API,这将强制特定数量的分片。当然,强制特定数字可能需要跑步者做更多的工作,这可能会或可能不会导致较慢的执行。

关于“文件在群集中的位置” - Apache Beam的理念是,这种复杂性应该从用户身上抽象出来。事实上,Apache Beam提高了抽象的级别,用户不需要担心这一点。跑步者和/或存储系统有责任有效地进行管理。也许要澄清 - 我们可以与低级编程(例如,直接组装),非托管编程(例如C或C++),还是托管(例如C#或Java)轻松并行)。随着抽象程度越来越高,您不再可以控制数据位置(例如处理器缓存),而是获得功能,易用性和可移植性。

相关问题