MapReduce支持递归子目录作为输入

MapReduce

执行MapReduce程序时,input path中包含子目录:

1
Error: java.io.FileNotFoundException: Path is not a file: /data/hive/mulit_file/sub_dir

解决办法:mr中或者在mapred-site.xml中设置:mapreduce.input.fileinputformat.input.dir.recursive=true

  • mr中设置configuration:conf.set("mapreduce.input.fileinputformat.input.dir.recursive",true)

  • etc/hadoop/mapred-site.xml添加属性:

    1
    2
    3
    4
    <property>
    <name>mapreduce.input.fileinputformat.input.dir.recursive</name>
    <value>true</value>
    </property>

Hive

在hive-cli中设置参数:

1
2
set hive.mapred.supports.subdirectories=true;
set mapred.input.dir.recursive=true;