Pat*_*ick 4 java hadoop twitter4j flume
我手动安装了Flume和Hadoop(我的意思是,不是CDH),我正在尝试从Cloudera 运行twitter 示例.
在apache-flume-1.5.0-SNAPSHOT-bin目录中,我使用以下命令启动代理:
bin/flume-ng agent -c conf -f conf/twitter.conf -Dflume.root.logger=DEBUG,console -n TwitterAgent
Run Code Online (Sandbox Code Playgroud)
我的conf/twitter.conf文件使用记录器作为接收器.该conf/flume-env.sh受让人类路径中flume-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)
Run Code Online (Sandbox Code Playgroud)
冲突源于FilterQuery在水槽lib中的其他地方定义的类,并且不包含该setIncludeEntities方法.对我来说,包含此类的文件是twitter4j-stream-3.0.3.jar,我不能按照此处的建议从类路径中排除该文件.
小智 5
我相信这种经历对你来说非常令人沮丧,对我而言肯定是这样.主要问题是,文件flume-sources-1.0-SNAPSHOT.jar和twitter4j-stream-3.0.3.jar都包含相同的FilterQuery.class.这就是在日志文件中生成冲突消息的原因.
我不是Java或大数据专家,但我可以为您提供此问题的替代方案.从这里下载Twitter4j-stream-2.6.6.jar或更低版本并替换twitter4j-stream-3.0.3.jar.所有3.XX都使用这个类.更换后,一切都应该正常工作.但是在下载大量推文后你可能会遇到一些堆错误.请谷歌解决方案,因为它已在3.XX文件中解决.
-Edit另外,请不要忘记下载并替换/ usr/lib/flume-ng文件夹中的所有twitter4j文件.即,twitter4j-media-support-2.2.6.jar,twitter4j-stream-2.2.6.jar和twitter4j-core-2.2.6.jar.与这些文件中的版本相关的任何不匹配也会产生问题.
| 归档时间: |
|
| 查看次数: |
5167 次 |
| 最近记录: |