Java 是否将文件位置作为值传递给hadoop映射器?
是否可以将HDFS中文件的位置作为值传递给我的映射器,以便我可以在其上运行可执行文件来处理它们?是的,您可以在HDFS中创建具有文件名的文件,并将其用作映射/减少作业的输入。您需要创建自定义拆分器,以便为每个映射器提供多个文件名。默认情况下,您输入的文件将按块分割,可能整个文件列表将传递给一个映射器Java 是否将文件位置作为值传递给hadoop映射器?,java,hadoop,hdfs,Java,Hadoop,Hdfs,是否可以将HDFS中文件的位置作为值传递给我的映射器,以便我可以在其上运行可执行文件来处理它们?是的,您可以在HDFS中创建具有文件名的文件,并将其用作映射/减少作业的输入。您需要创建自定义拆分器,以便为每个映射器提供多个文件名。默认情况下,您输入的文件将按块分割,可能整个文件列表将传递给一个映射器 另一个解决方案是将输入定义为不可拆分。在这种情况下,每个文件都将传递给映射器,您可以自由创建自己的InputFormat,它将在需要处理文件时使用逻辑,例如调用外部可执行文件。如果您这样做,Hado
另一个解决方案是将输入定义为不可拆分。在这种情况下,每个文件都将传递给映射器,您可以自由创建自己的InputFormat,它将在需要处理文件时使用逻辑,例如调用外部可执行文件。如果您这样做,Hadoop框架将关注数据的局部性
另一种方法是通过FileSplit获取文件名,这可以通过使用以下代码完成:
FileSplit fileSplit = (FileSplit) context.getInputSplit();
String filename = fileSplit.getPath().getName();
希望这有帮助