我编写了一个MapReduce程序,我将部分输出数据存储到Hive
表中。
我已使用Hive-JDBC driver
通过Hive
代码访问MapReduce
表。
该程序已在本地计算机上成功编译。
在此之后,我创建了一个JAR文件并将其上传到S3
。然后我创建了一个elasticmapreduce cluster
并启动了它。
但是,它导致了下面提到的错误:
java.lang.Throwable:Child Error at org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:271)导致 by:java.io.IOException:非零状态为1的任务进程退出。 在org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:258)
attempt_201407161054_0001_m_000001_0:java.lang.ClassNotFoundException: org.apache.hadoop.hive.jdbc.HiveDriver attempt_201407161054_0001_m_000001_0:at java.net.URLClassLoader的$ 1.run(URLClassLoader.java:366) attempt_201407161054_0001_m_000001_0:at java.net.URLClassLoader的$ 1.run(URLClassLoader.java:355) attempt_201407161054_0001_m_000001_0:at java.security.AccessController.doPrivileged(本机方法) attempt_201407161054_0001_m_000001_0:at java.net.URLClassLoader.findClass(URLClassLoader.java:354) attempt_201407161054_0001_m_000001_0:at java.lang.ClassLoader.loadClass(ClassLoader.java:424) attempt_201407161054_0001_m_000001_0:at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308) attempt_201407161054_0001_m_000001_0:at java.lang.ClassLoader.loadClass(ClassLoader.java:357) attempt_201407161054_0001_m_000001_0:at java.lang.Class.forName0(本机方法) attempt_201407161054_0001_m_000001_0:at java.lang.Class.forName(Class.java:190) attempt_201407161054_0001_m_000001_0:at HubAndAuthority.InputHubMapper.configure(InputHubMapper.java:38) attempt_201407161054_0001_m_000001_0:at sun.reflect.NativeMethodAccessorImpl.invoke0(原生方法) attempt_201407161054_0001_m_000001_0:at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) attempt_201407161054_0001_m_000001_0:at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) attempt_201407161054_0001_m_000001_0:at java.lang.reflect.Method.invoke(Method.java:606)
这似乎是一个缺少Hive-JDBC driver
的问题,应该通过在Hive-JDBC driver
中添加classpath
来解决。但是,我不知道在Amazon's EMR
上执行此操作的确切步骤。
请您告诉我我的结果中缺少什么以及如何解决?
谢谢和问候, Prafulla
答案 0 :(得分:0)
我不太确定,但你应该试试这个:
“注 如果希望自定义类路径覆盖原始类路径,则应将环境变量HADOOP_USER_CLASSPATH_FIRST设置为true,以便首先在hadoop-user-env.sh中指定HADOOP_CLASSPATH值。“