我已经手动安装了 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
我的conf/twitter.conf
文件使用记录器作为接收器。conf/flume-env.sh
分配给flume-sources-1.0-SNAPSHOT.jar
包含 twitter 源定义的CLASSPATH 。结果输出是:
(...) [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
是由在水槽库中其他地方定义的并且不包含该setIncludeEntities
方法的类引起的。对我来说,包含此类的文件是twitter4j-stream-3.0.3.jar
,我无法按照此处的建议从类路径中排除该文件。