4

我已经手动安装了 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,我无法按照此处的建议从类路径中排除该文件。

4

5 回答 5

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 文件中解决。

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

于 2014-01-17T00:06:24.900 回答
1

您需要从 git 重新编译 flume-sources-1.0-SNAPSHOT.jar:https ://github.com/cloudera/cdh-twitter-example

安装 Maven,然后下载 cdh-twitter-example 的存储库。

解压缩,然后在里面执行(如前所述):

$ cd 水槽源

$ mvn 包

$ 光盘 ..

twitter4j 版本从 2.2.6 更新到 3.X 时出现了这个问题,他们删除了 setIncludeEntities 方法,并且 JAR 不是最新的。

PS:不要下载预建版本,还是老版本。

于 2014-07-03T09:28:15.240 回答
1

正如帖子中所建议的,有问题的文件也可以是 search-contrib-1.0.0-jar-with-dependencies.jar。

于 2014-01-14T09:30:55.520 回答
0

只需重命名所有 twitter4j-stream* jar 文件并重新运行您的水槽。它将具有魅力。:)

于 2014-10-05T22:23:27.333 回答
0

我遇到了同样的问题,最后我按照以下步骤解决了:

  • 首先,我重命名了 jarx 中的所有 jar 文件:从 twitter4j-stream-3.0.3.jar -> twitter4j-stream-3.0.3.jarx,...

这解决了错误,但是当它尝试建立连接时,我收到错误 404:

(Twitter Stream consumer-1[Establishing connection]) 
[INFO - Twitter4j.internal.logging.SLF4JLogger.info(SLF4JLogger.java:83)] 404:
The URI requested is invalid or the resource requested, such as a user, does not exist.)
于 2016-12-04T15:15:17.487 回答