我有一个在Amazon EMR上运行的Hadoop map reduce类,并输出到HDFS flatfile。一切都很好,但现在我需要输出到也在AWS上运行的Cassandra DB。我构建并运行了一个本地客户端并将其工作,然后将Cassandra编写代码移到我的Hadoop项目中。看来,问题是亚马逊为{1}提取了Hadoop 1.0.3,但在AWS上运行的Cassandra为1.2.6并使用/home/hadoop/lib/netty-3.2.4.Final.jar
。
我可以做些什么来预防或规避这种冲突?我可以在Amazon EMR引入的新版本的netty中绘制吗?
我在EMR上运行jar时得到的错误如下:
netty-3.5.9.Final.jar
答案 0 :(得分:2)
我的一个内部模块遇到了类似的问题,它使用了缺少功能的netty-3.2.4.jar。
最终我必须对jar文件进行心脏直视手术。
jar
-xvf oldlibrary.jar
cp -prf netty .
jar -cvf ../new_jarfile.jar *
这是一种罕见的情况,但您可以应用此方法来克服库不兼容的问题。确保您的程序仍然运行。如果以这种方式更改基础库,则会发生原始程序无法运行的更改。设计良好的图书馆应该不知道这些变化。