开发者社区> 问答> 正文

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

使用的是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)

展开
收起
封神 2016-04-12 10:39:23 6655 0
2 条回答
写回答
取消 提交回答
  • 也可以添加 FileInputFormat.setInputDirRecursive(job, true);
    这样也会遍历子目录

    2019-07-17 18:41:10
    赞同 2 展开评论 打赏
  • 专注在大数据分布式计算、数据库及存储领域,拥有13+年大数据引擎、数据仓库、宽表引擎、平台研发经验,6年云智能大数据产品技术一号位经验,10年技术团队管理经验;云智能技术架构/云布道师; 研发阿里历代的大数据技术产品包括ODPS、DLA、ADB,最近五年主导宽表引擎研发、DLA、ADB湖仓研发;

    可以在 /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
    
    2019-07-17 18:41:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
《构建Hadoop生态批流一体的实时数仓》 立即下载
零基础实现hadoop 迁移 MaxCompute 之 数据 立即下载
CIO 指南:如何在SAP软件架构中使用Hadoop 立即下载

相关实验场景

更多