我一直在尝试在oozie上运行Avro map-reduce。我在workflow.xml中指定了mapper和reducer类,并提供了其他配置。但它给出了一个

java.lang.RunTime Exception - class mr.sales.avro.etl.SalesMapper not org.apache.hadoop.mapred.Mapper

直接在hadoop集群上(而不是通过oozie)运行时,相同的作业将完成并提供所需的输出。所以看来我可能会缺少一些oozie配置。我从异常中猜出的是,oozie要求映射器是org.apache.hadoop.mapred.Mapper的子类,但是Avro映射器具有不同的签名-它们扩展了org.apache.avro.mapred.AvroMapper,这可能是导致错误的原因。

所以我的问题是我如何配置oozie工作流/属性文件以允许其运行Avro map 缩减任务。

最佳答案

使用AVRO,您需要配置一些其他属性:

  • org.apache.avro.mapred.HadoopMapper是您需要设置的实际mapper类(这实现了Mapper接口(interface))
  • avro.mapper属性应将您的SalesMapper类命名为

  • 组合器和 reducer 还有其他属性-检查AvroJob源和实用程序方法。

    执行此操作的另一种方法是从手动提交的作业中检查job.xml,然后将相关的配置属性复制到oozie工作流.xml中。

    08-28 03:42