Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否将文件位置作为值传递给hadoop映射器?_Java_Hadoop_Hdfs - Fatal编程技术网

Java 是否将文件位置作为值传递给hadoop映射器?

Java 是否将文件位置作为值传递给hadoop映射器?,java,hadoop,hdfs,Java,Hadoop,Hdfs,是否可以将HDFS中文件的位置作为值传递给我的映射器,以便我可以在其上运行可执行文件来处理它们?是的,您可以在HDFS中创建具有文件名的文件,并将其用作映射/减少作业的输入。您需要创建自定义拆分器,以便为每个映射器提供多个文件名。默认情况下,您输入的文件将按块分割,可能整个文件列表将传递给一个映射器 另一个解决方案是将输入定义为不可拆分。在这种情况下,每个文件都将传递给映射器,您可以自由创建自己的InputFormat,它将在需要处理文件时使用逻辑,例如调用外部可执行文件。如果您这样做,Hado

是否可以将HDFS中文件的位置作为值传递给我的映射器,以便我可以在其上运行可执行文件来处理它们?

是的,您可以在HDFS中创建具有文件名的文件,并将其用作映射/减少作业的输入。您需要创建自定义拆分器,以便为每个映射器提供多个文件名。默认情况下,您输入的文件将按块分割,可能整个文件列表将传递给一个映射器

另一个解决方案是将输入定义为不可拆分。在这种情况下,每个文件都将传递给映射器,您可以自由创建自己的InputFormat,它将在需要处理文件时使用逻辑,例如调用外部可执行文件。如果您这样做,Hadoop框架将关注数据的局部性

另一种方法是通过FileSplit获取文件名,这可以通过使用以下代码完成:

     FileSplit fileSplit = (FileSplit) context.getInputSplit();
 String filename = fileSplit.getPath().getName(); 
希望这有帮助