是否可以将 HDFS 中文件的位置作为值传递给我的映射器,以便我可以在它们上运行可执行文件来处理它们?
问问题
758 次
2 回答
0
另一种方法是通过 FileSplit 获取文件名,可以使用以下代码完成:
FileSplit fileSplit = (FileSplit) context.getInputSplit();
String filename = fileSplit.getPath().getName();
希望这可以帮助
于 2011-08-01T02:15:29.907 回答
0
是的,您可以在 HDFS 中创建具有文件名的文件,并将其用作 map/reduce 作业的输入。您需要创建自定义拆分器,以便为每个映射器提供多个文件名。默认情况下,您输入的文件将被块分割,并且可能整个文件列表将传递给一个映射器。
另一种解决方案是将您的输入定义为不可拆分。在这种情况下,每个文件都将被传递给映射器,您可以自由创建自己的 InputFormat,只要您需要处理文件的逻辑 - 例如调用外部可执行文件,就会使用它。如果您采用这种方式,Hadoop 框架将负责数据局部性。
于 2011-02-26T12:53:16.687 回答