我想问你的帮助在下面的情况。Flume - Twitter源语言筛选器
我目前使用的Cloudera CDH 5.1.2,我试图,因为它是在以下描述porsts收集使用水槽微数据(Cloudera的):
- http://blog.cloudera.com/blog/2012/10/analyzing-twitter-data-with-hadoop-part-2-gathering-data-with-flume/
- github.com/cloudera/CDH-Twitter的例子
我下载源和在pom.xml中更新版本之后重建水槽来源:
<flume.version>1.5.0-cdh5.1.2</flume.version>
<hadoop.version>2.3.0-cdh5.1.2</hadoop.version>
它工作完美。
之后,我想添加一个“语言”过滤器,只捕获特定语言的推文。对于这一点,我修改了TwitterSource.java以某种方式调用FilterQuery.language方法是这样的:
FilterQuery query = new FilterQuery();
...
if (languages.length != 0) {
query.language(languages);
}
我试图使用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 package)。
当我开始我的经纪人,我得到下面的异常(的NoSuchMethodError):
Unable to start EventDrivenSourceRunner: { source:com.cloudera.flume.source.TwitterSource{name:Twitter,state:IDLE} } - Exception follows. java.lang.NoSuchMethodError: twitter4j.FilterQuery.language([Ljava/lang/String;)Ltwitter4j/FilterQuery; at com.cloudera.flume.source.TwitterSource.start(TwitterSource.java:165) at org.apache.flume.source.EventDrivenSourceRunner.start(EventDrivenSourceRunner.java:44) at org.apache.flume.lifecycle.LifecycleSupervisor$MonitorRunnable.run(LifecycleSupervisor.java:251) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745)
我查了一下,这个版本twitter4j流包含的语言方法:
- github.com /yusuke/twitter4j/blob/3.0.6/twitter4j-stream/src/main/java/twitter4j/FilterQuery.java
我在做什么错?
由于提前,
彼得