在我的工作,我需要解析许多历史logsets。 个人客户(有成千上万)可能有几百按日期爆发日志子目录。 例如:
- 日志/ Customer_One / 2011-01-02-001
- 日志/ Customer_One / 2012-02-03-001
- 日志/ Customer_One / 2012-02-03-002
- 日志/ Customer_Two / 2009-03-03-001
- 日志/ Customer_Two / 2009-03-03-002
每个单独的日志集本身可能是五六级深,包含成千上万的文件。
所以,其实我是想在单独的地图作业处理走子目录:简单枚举个别文件是我的分布式计算问题的一部分!
不幸的是,当我尝试通过仅包含子目录登录到Hadoop的目录,它抱怨说,我无法通过这些子目录到我的映射。 (同样,我已经写了接受子目录作为输入):
$ hadoop jar "${HADOOP_HOME}/contrib/streaming/hadoop-streaming-${HADOOP_VERSION}.jar" -input file:///mnt/logs/Customer_Name/ -file mapper.sh -mapper "mapper.sh" -file reducer.sh -reducer "reducer.sh" -output .
[ 。 。 ]
12/04/10 12时48分35秒ERROR security.UserGroupInformation:PriviledgedActionException为:Cloudera的(AUTH:SIMPLE)原因:java.io.IOException的:不是一个文件:文件:/ MNT /日志/ CUSTOMER_NAME / 2011-05-20 -003 12/04/10 12时48分35秒ERROR streaming.StreamJob:错误启动工作:不是一个文件:文件:到/ mnt /日志/ CUSTOMER_NAME / 2011-05-20-003流命令失败! [Cloudera的@本地〜] $
有没有说服Hadoop的数据流允许我指定的目录作为工作项目一个简单的方法?