ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – 由于JAR冲突无法运行Flume

2019-06-12 18:50:09  阅读:180  来源: 互联网

标签:java hadoop twitter4j flume


我手动安装了Flume和Hadoop(我的意思是,不是CDH),我正试图从Cloudera运行twitter example.

在apache-flume-1.5.0-SNAPSHOT-bin目录中,我使用以下命令启动代理:

bin/flume-ng agent -c conf -f conf/twitter.conf -Dflume.root.logger=DEBUG,console -n TwitterAgent

我的conf / twitter.conf文件使用记录器作为接收器. conf / flume-env.sh为CLASSPATH分配包含twitter源定义的flume-sources-1.0-SNAPSHOT.jar.结果输出是:

(...) [ERROR org.apache.flume.lifecycle.LifecycleSupervisor$MonitorRunnable.run(LifecycleSupervisor.java:253)] Unable to start EventDrivenSourceRunner: { source:com.cloudera.flume.source.TwitterSource{name:Twitter,state:IDLE} } - Exception follows. java.lang.NoSuchMethodError:
twitter4j.FilterQuery.setIncludeEntities(Z)Ltwitter4j/FilterQuery;
at com.cloudera.flume.source.TwitterSource.start(TwitterSource.java:139)

冲突是由一个FilterQuery类产生的,该类在flume lib中的其他地方定义,并且不包含setIncludeEntities方法.对我来说,包含此类的文件是twitter4j-stream-3.0.3.jar,我不能按照建议here从类路径中排除该文件.

解决方法:

我相信这种经历对你来说非常令人沮丧,对我而言肯定是这样.主要问题是,文件flume-sources-1.0-SNAPSHOT.jar和twitter4j-stream-3.0.3.jar都包含相同的FilterQuery.class.这就是在日志文件中生成冲突消息的原因.

我不是Java或大数据专家,但我可以为您提供此问题的替代方案.从here下载Twitter4j-stream-2.6.6.jar或更低版本并替换twitter4j-stream-3.0.3.jar.所有3.X.X都使用此类.更换后,一切都应该正常工作.但是在下载大量推文后你可能会遇到一些堆错误.请谷歌解决方案,因为它已在3.X.X文件中解决.

-编辑
另外,请不要忘记下载并替换/usr/lib / flume-ng文件夹中的所有twitter4j文件.即,twitter4j-media-support-2.2.6.jar,twitter4j-stream-2.2.6.jar和twitter4j-core-2.2.6.jar.与这些文件中的版本相关的任何不匹配也会产生问题.

标签:java,hadoop,twitter4j,flume
来源: https://codeday.me/bug/20190612/1227612.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有