flume-twitter源语言过滤器

yduiuuwa  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(332)

在下列情况下,我想请你帮忙。
我目前正在使用cloudera cdh 5.1.2,并尝试使用flume收集twitter数据,如以下porst(cloudera)中所述:
http://blog.cloudera.com/blog/2012/10/analyzing-twitter-data-with-hadoop-part-2-gathering-data-with-flume/
github.com/cloudera/cdh-twitter-example
在更新pom.xml中的版本后,我下载了源代码并重建了flume源代码:

<flume.version>1.5.0-cdh5.1.2</flume.version>
<hadoop.version>2.3.0-cdh5.1.2</hadoop.version>

它工作得很好。
之后我想添加一个“语言”过滤器,只捕获特定语言的tweet。为此,我修改了twittersource.java以调用filterquery.language方法,如下所示:
filterquery=新建filterquery();
...
if(languages.length!=0) {
查询语言;
}
我正在尝试使用twitter4j流版本3.0.6。我在pom.xml中更新了它:

<!-- For the Twitter API -->
<dependency>
<groupId>org.twitter4j</groupId>
<artifactId>twitter4j-stream</artifactId>
<version>3.0.6</version>
</dependency>

通过这些设置,我重建了jar(mvn包)。
启动代理时,出现以下异常(nosuchmethoderror):
无法启动eventdrivensourcerunner:{source:com.cloudera.flume.source.twittersource{name:twitter,state:idle}}-异常如下。java.lang.nosuchmethoderror:twitter4j.filterquery.language([ljava/lang/string;)ltwitter4j/filterquery;在com.cloudera.flume.source.twittersource.start(twittersource。java:165)在org.apache.flume.source.eventdrivensourcerunner.start(eventdrivensourcerunner。java:44)在org.apache.flume.lifecyclesupervisor.lifecyclesupervisor$monitorUnnable.run(lifecyclesupervisor。java:251)在java.util.concurrent.executors$runnableadapter.call(executors。java:471)在java.util.concurrent.futuretask.runandreset(futuretask。java:304)在java.util.concurrent.scheduledthreadpoolexecutor$scheduledfuturetask.access$301(scheduledthreadpoolexecutor。java:178)在java.util.concurrent.scheduledthreadpoolexecutor$scheduledfuturetask.run(scheduledthreadpoolexecutor。java:293)在java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor。java:1145)在java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor。java:615)在java.lang.thread.run(线程。java:745)
我查过了,这个版本的twitter4j流包含了语言方法:
github.com/yusuke/twitter4j/blob/3.0.6/twitter4j-stream/src/main/java/twitter4j/filterquery.java
我做错什么了?
提前谢谢,
彼得

4urapxun

4urapxun1#

最后我设法解决了这个问题。所以这里有一个解决方案,任何人都面临着同样的问题。
首先(在上面的文章中),我将生成的jar放到 /var/lib/flume-ng/plugins.d/twitter-streaming/lib/ ,并在cloudera管理器配置中设置它以使用此位置。
在这种情况下,cm将此目录放置到运行程序文件中类路径的和(在包目录之后)。因此类路径中的目录顺序如下所示:
/opt/cloudera/parcels/CDH-5.1.2-1.cdh5.1.2.p0.3/lib/flume-ng/lib/* /var/lib/flume-ng/plugins.d/twitter-streaming/lib/* 不幸的是,在packet目录中有一个twitter4j-stream-3.0.3.jar和twitter4j-core-3.0.3.jar,flume尝试使用它而不是3.0.6,在那个版本中 FilterQuery.language 显然不存在。
所以我刚从包目录中删除了那些jar,现在可以正常工作了。

hmtdttj4

hmtdttj42#

我试过了 cdh3 对我来说效果不错。我注意到系统时间应该设置为当前时间。就你而言,我认为它看起来 Language 中的方法 FilterQuery 班级。

相关问题