我想知道在 MapReduce 应用程序中读取 Java 属性文件的标准做法是什么,以及如何在提交(开始)作业时将位置传递给它。 在常规 Java 应用程序中,您可以将位置作为 JVM 系统属性 (-D) 或参数传递给属性文件,或传递给 main 方法。 对于 MapReduce 作业,最佳替代方案(标准做法)是什么?一些很好的例子会很有帮助。
最佳答案
最好的替代方法是使用 DistributedCache
,但它可能不是标准方法。可以有其他方式。但到目前为止,我还没有看到任何代码使用其他任何东西。
想法是将文件添加到缓存中,并在 map/reduce 的 setup
方法中读取它,并将值加载到 Properties
或 Map 中
。如果您需要片段,我可以添加。
哦,我记得,我的 friend JtheRocker使用了另一种方法。他根据 Configuration
对象中的键设置文件的全部内容,在 setup
上获取它的值,然后解析并将这些对加载到 Map
中.在这种情况下,文件读取是在驱动程序上完成的,而驱动程序以前是在任务端。虽然它适用于小文件并且看起来更干净,但正统的人可能根本不喜欢污染 conf
。
我想看看其他帖子带来了什么。
关于java - 在 Hadoop MapReduce 应用程序中读取 Java 属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26747113/