java - 使用 hadoop Map Reduce 的自定义输出格式时未找到类异常

标签 java hadoop mapreduce executable-jar outputformat

我正在尝试运行 map 缩减作业。我使用 eclipse 创建了一个可运行的 jar,我的输入格式类和输出格式类与启 Action 业的类位于同一包中。所有这些都包含在 jar 中。我设置输入和输出格式类如下:

job.setInputFormatClass(fully_qualified_name_of_my_input_class.class);
job.setOutputFormatClass(fully_qualified_name_of_my_output_class.class);

但是当我使用 hadoop jar myJar.jar 执行 jar 时,我得到输出格式类的类未找到异常,但我的输入格式类没有得到它。如何纠正这个问题?这里是堆栈跟踪

java.lang.RuntimeException: java.lang.ClassNotFoundException: my-class-name
    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:867)
    at org.apache.hadoop.mapreduce.JobContext.getOutputFormatClass(JobContext.java:235)
    at org.apache.hadoop.mapred.Task.initialize(Task.java:513)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:353)
    at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:416)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)
    at org.apache.hadoop.mapred.Child.main(Child.java:249)
Caused by: java.lang.ClassNotFoundException: my-class-name
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:266)
    at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:820)
    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:865)
    ... 8 more

最佳答案

在设置作业时尝试添加以下内容。

job.setJarByClass(fully_qualified_name_of_my_input_class.class)

参见Hadoop query regarding setJarByClass method of Job class了解更多信息。

关于java - 使用 hadoop Map Reduce 的自定义输出格式时未找到类异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19592497/

相关文章:

Java发送邮件避开smtp中继服务器直接发送到MX服务器

hadoop - `hive.exec.max.dynamic.partitions`和 `hive.exec.max.dynamic.partitions.pernode`的区别

apache - 我的 Yarn Map-Reduce 作业花费了大量时间

java - Hadoop:应该映射什么,应该减少什么?

java - 为 secure spring petclinic 的每个用户单独的 mysql 登录

java - 如何在 Spring Batch 中从 3 个表中读取关系数据

hadoop - 使用 jar 命令执行 WordCount 程序时 hadoop 中出现 "No such file or directory"

hadoop - mapreduce如何共享全局const变量

java - 为链表中的数组对象创建 'sort' 方法

hadoop - Mapreduce连接:如何获取(item1,item2)的集合,其中item1 =不在数据A中,而item2 =在数据A中?