使用的是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)
可以在 /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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。