Hadoop 通过Amazon';上的MapReduce程序访问时无法加载Hive JDBC驱动程序;s弹性映射还原
我编写了一个MapReduce程序,在该程序中,我将部分输出数据存储到Hadoop 通过Amazon';上的MapReduce程序访问时无法加载Hive JDBC驱动程序;s弹性映射还原,hadoop,jdbc,mapreduce,hive,elastic-map-reduce,Hadoop,Jdbc,Mapreduce,Hive,Elastic Map Reduce,我编写了一个MapReduce程序,在该程序中,我将部分输出数据存储到Hive表中 我使用了hivejdbc驱动程序通过MapReduce代码访问Hive表 此程序已在本地计算机上成功编译 之后,我创建了一个JAR文件,并将其上传到S3。然后我创建了一个elasticmapreduce集群,并启动了它 但是,这会导致以下提到的错误: java.lang.Throwable:位于的子错误 org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java
Hive
表中
我使用了hivejdbc驱动程序
通过MapReduce
代码访问Hive
表
此程序已在本地计算机上成功编译
之后,我创建了一个JAR文件,并将其上传到S3
。然后我创建了一个elasticmapreduce集群
,并启动了它
但是,这会导致以下提到的错误:
java.lang.Throwable:位于的子错误
org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:271)导致
by:java.io.IOException:任务进程退出,非零状态为1。
位于org.apache.hadoop.mapred.TaskRunner.run(TaskRunner.java:258)
尝试\u 201407161054\u 0001\u m\u000001\u 0:java.lang.ClassNotFoundException:
org.apache.hadoop.hive.jdbc.HiveDriver
尝试\u 201407161054\u 0001\u m\u000001\u 0:at
java.net.URLClassLoader$1.run(URLClassLoader.java:366)
尝试\u 201407161054\u 0001\u m\u000001\u 0:at
java.net.URLClassLoader$1.run(URLClassLoader.java:355)
尝试\u 201407161054\u 0001\u m\u000001\u 0:at
java.security.AccessController.doPrivileged(本机方法)
尝试\u 201407161054\u 0001\u m\u000001\u 0:at
java.net.URLClassLoader.findClass(URLClassLoader.java:354)
尝试\u 201407161054\u 0001\u m\u000001\u 0:at
loadClass(ClassLoader.java:424)
尝试\u 201407161054\u 0001\u m\u000001\u 0:at
sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
尝试\u 201407161054\u 0001\u m\u000001\u 0:at
loadClass(ClassLoader.java:357)
尝试\u 201407161054\u 0001\u m\u000001\u 0:at
java.lang.Class.forName0(本机方法)
尝试\u 201407161054\u 0001\u m\u000001\u 0:at
java.lang.Class.forName(Class.java:190)
尝试\u 201407161054\u 0001\u m\u000001\u 0:at
配置(InputHubMapper.java:38)
尝试\u 201407161054\u 0001\u m\u000001\u 0:at
sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)
尝试\u 201407161054\u 0001\u m\u000001\u 0:at
invoke(NativeMethodAccessorImpl.java:57)
尝试\u 201407161054\u 0001\u m\u000001\u 0:at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
尝试\u 201407161054\u 0001\u m\u000001\u 0:at
java.lang.reflect.Method.invoke(Method.java:606)
这似乎是缺少hivejdbc驱动程序的问题,应该通过在classpath
中添加hivejdbc驱动程序来解决。然而,我不知道在亚马逊的EMR上做这件事的确切步骤
你能让我知道我这边缺少什么,以及如何解决它吗
感谢和问候,
Prafulla我不太确定,但你应该试试这个:
“注意
如果希望自定义类路径覆盖原始类路径,则应将环境变量HADOOP_USER_classpath_FIRST设置为true,以便HADOOP-USER-env.sh中指定的HADOOP_classpath值位于第一位。”
问候,,
里维特