我想问一下你的帮助,在下面的情况。
我目前使用Cloudera的CDH 5.1.2,我试图收集,因为它是在以下porsts(Cloudera的)描述了使用Twitter的水槽数据:
- 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.version>1.5.0-cdh5.1.2</flume.version>
<hadoop.version>2.3.0-cdh5.1.2</hadoop.version>
它完美地工作。
从那以后,我想补充一个“语言”过滤器,只捕获特定语言的鸣叫。 对于这一点,我修改了TwitterSource.java以某种方式调用FilterQuery.language方法是这样的:
FilterQuery查询=新FilterQuery();
...
如果(languages.length!= 0){
query.language(语言);
}
我试图用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:{来源:com.cloudera.flume.source.TwitterSource {名称:推特,状态:IDLE}} - 异常如下。 java.lang.NoSuchMethodError:twitter4j.FilterQuery.language([Ljava /郎/字符串;)Ltwitter4j / FilterQuery; 在com.cloudera.flume.source.TwitterSource.start(TwitterSource.java:165)在org.apache.flume.source.EventDrivenSourceRunner.start(EventDrivenSourceRunner.java:44)在org.apache.flume.lifecycle.LifecycleSupervisor $ MonitorRunnable .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(Thread.java:745)
我查了一下,这个版本twitter4j流的包含语言的方法:
- github.com/yusuke/twitter4j/blob/3.0.6/twitter4j-stream/src/main/java/twitter4j/FilterQuery.java
我究竟做错了什么?
提前致谢,
彼得