开发者社区> 问答> 正文

hadoop mapreduce遍历的目录含有子目录报错

封神 2016-04-12 10:39:23 4135

使用的是e-mapreduce服务,使用的oss当中的文件作为数据源,但是e-mapreduce似乎没有办法读取文件底下的子目录当中的内容,总是会报错,所以想请问一下有什么办法能够让mapreduce能够读取oss当中的数据目录底下的子目录?
16/04/12 11:09:21 INFO mapreduce.Job: Task Id : attempt_1460374656242_0003_m_000001_0, Status : FAILED
Error: java.io.IOException: 'oss://id:key@emr-logs2.oss-cn-hangzhou-internal.aliyuncs.com/wordcount/sub' is a directory

at com.aliyun.fs.oss.nat.NativeOssFileSystem.open(NativeOssFileSystem.java:436)
at org.apache.hadoop.fs.FileSystem.open(FileSystem.java:766)
at org.apache.hadoop.mapreduce.lib.input.LineRecordReader.initialize(LineRecordReader.java:85)
at org.apache.hadoop.mapred.MapTask$NewTrackingRecordReader.initialize(MapTask.java:545)
at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:783)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)
at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)
分布式计算 Hadoop 对象存储
分享到
取消 提交回答
全部回答(2)
  • 老谈
    2019-07-17 18:41:10

    也可以添加 FileInputFormat.setInputDirRecursive(job, true);
    这样也会遍历子目录

    2 0
  • 封神
    2019-07-17 18:41:10

    可以在 /etc/emr/hadoop-conf/mapred-site.xml 设置

      <property>
        <name>mapreduce.input.fileinputformat.input.dir.recursive</name>
        <value>true</value>
      </property>

    就会遍历子目录了


    如果是hive的话,你可以,在SQL脚本中写上

     hive> SET mapreduce.input.fileinputformat.input.dir.recursive=true
    
    0 0
添加回答
+ 订阅

大数据计算实践乐园,近距离学习前沿技术

推荐文章
相似问题