在Amazon的Elastic MapReduce上通过MapReduce程序访问时无法加载Hive-JDBC驱动程序

时间:2014-07-16 11:33:12

标签: hadoop jdbc mapreduce hive elastic-map-reduce

我编写了一个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

1 个答案:

答案 0 :(得分:0)

我不太确定,但你应该试试这个:

“注 如果希望自定义类路径覆盖原始类路径,则应将环境变量HADOOP_USER_CLASSPATH_FIRST设置为true,以便首先在hadoop-user-env.sh中指定HADOOP_CLASSPATH值。“

  1. http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-hadoop-config.html
  2. http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-hadoop-config_hadoop-user-env.sh.html
  3. 此致 护墙