我已经手动安装了 Flume 和 Hadoop(我的意思是,不是 CDH)并且我正在尝试运行 twitterexample https://github.com/cloudera/cdh-twitter-example来自Cloudera。
In the apache-flume-1.5.0-SNAPSHOT-bin
目录中,我使用以下命令启动代理:
bin/flume-ng agent -c conf -f conf/twitter.conf -Dflume.root.logger=DEBUG,console -n TwitterAgent
My conf/twitter.conf
文件使用记录器作为接收器。这conf/flume-env.sh
分配给 CLASSPATHflume-sources-1.0-SNAPSHOT.jar
其中包含 Twitter 源的定义。结果输出是:
(...) [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 http://www.thecloudavenue.com/2013/03/analyse-tweets-using-flume-hadoop-and.html?showComment=1376946804967#c966035830427525262.
我相信这次经历对你来说是相当令人沮丧的,对我来说也是如此。主要问题是,flume-sources-1.0-SNAPSHOT.jar 和 twitter4j-stream-3.0.3.jar 文件都包含相同的 FilterQuery.class。这就是日志文件中生成冲突消息的原因。
我不是 Java 或大数据专家,但我可以为您提供解决此问题的替代方法。从以下位置下载 Twitter4j-stream-2.6.6.jar 或更低版本here http://mvnrepository.com/artifact/org.twitter4j/twitter4j-stream并替换 twitter4j-stream-3.0.3.jar。所有 3.X.X 都使用这个类。更换后,一切都应该正常工作。但下载大量推文后,您可能会遇到一些堆错误。请 google 解决方案,因为它已在 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。这些文件之间任何与版本相关的不匹配也会产生问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)