1

我写了一份使用在本地模式下运行良好的烫伤的作业。但是当我尝试以 hdfs 模式(在同一个文件上)执行它时,它什么也没做。更准确地说,第一步没有任务(映射器或减速器),之后的步骤显然什么都不做。

我尝试 grepping 日志中的异常并将我的代码包装在 try-catch 中(在烫伤作业定义在构造函数中,我还包装了 run 方法)。

也许由于某种原因级联决定忽略输入文件?这是一个 Avro 放气文件。

更新:挖掘更多,我可以看到这一行:

2014-04-28 04:49:23,954 INFO org.apache.hadoop.mapred.JobInProgress: Input size for job job_201404280448_0001 = 0. Number of splits = 0

在作业 xml 中,mapred.input.dir 属性设置为我的文件的路径。

看起来 JobInProgress 正在从作业 xml 文件中不存在的 mapred.job.split.file 获取其信息

4

1 回答 1

2

事实证明,我的 avro 文件名为 sample.avro.deflate。Avro 1.7.4 会默默地忽略任何不以“.avro”结尾的输入文件。在 1.7.6 中,他们添加了一个属性avro.mapred.ignore.inputs.without.extension

于 2014-04-28T08:07:39.440 回答