我的工作是将每条记录写入hadoopMap中的dynamodb。
我不能让它用hadoop2.6运行,它有httpclient-4.2.5.jar和httpcore-4.2.5.jar。
我使用的aws是使用httpclient-4.5.2.jar和httpcore-4.4.4.jar构建的。
当我使用classpath包含新的jar文件时,它给出了以下异常。
java.lang.Exception: java.lang.NoSuchFieldError: INSTANCE
at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:462)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:522)
Caused by: java.lang.NoSuchFieldError: INSTANCE
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:144)
at com.amazonaws.http.apache.client.impl.ApacheConnectionManagerFactory.getPreferredSocketFactory(ApacheConnectionManagerFactory.java:87)
at com.amazonaws.http.apache.client.impl.ApacheConnectionManagerFactory.create(ApacheConnectionManagerFactory.java:65)
at com.amazonaws.http.apache.client.impl.ApacheConnectionManagerFactory.create(ApacheConnectionManagerFactory.java:58)
at com.amazonaws.http.apache.client.impl.ApacheHttpClientFactory.create(ApacheHttpClientFactory.java:49)
在我看来,hadoop似乎是使用旧的库构建的,语法也发生了一些变化。
有什么比重新编译旧的aws源更合理的解决方案呢?
1条答案
按热度按时间pes8fvy91#
作为一个更新,我不得不切换到maven并对版本进行一些修改。
最后,它成功了