我正在尝试使用flume提取twitter数据。但我得到以下错误
15/04/08 23:16:36 ERROR node.PollingPropertiesFileConfigurationProvider: Unhandled error
java.lang.NoSuchMethodError: twitter4j.conf.Configuration.isStallWarningsEnabled()Z
at twitter4j.TwitterStreamImpl.<init>(TwitterStreamImpl.java:60)
at twitter4j.TwitterStreamFactory.<clinit>(TwitterStreamFactory.java:40)
at com.cloudera.flume.source.TwitterSource.<init>(TwitterSource.java:64)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
at java.lang.Class.newInstance(Class.java:433)
at org.apache.flume.source.DefaultSourceFactory.create(DefaultSourceFactory.java:42)
at org.apache.flume.node.AbstractConfigurationProvider.loadSources(AbstractConfigurationProvider.java:327)
at org.apache.flume.node.AbstractConfigurationProvider.getConfiguration(AbstractConfigurationProvider.java:102)
at org.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable.run(PollingPropertiesFileConfigurationProvider.java:140)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
我使用了cloudera中的flume-sources-1.0-snapshot.jar。有什么办法吗?
提前谢谢。
2条答案
按热度按时间xriantvc1#
这显然是一个依赖性错误。flume源代码库需要一个不存在的twitter4j版本,因此出现nosuchmethod错误。我建议你选择正确的版本
twitter源代码为1.6.0-snapshot,twitter 4j为3.0.3。您应该参考flume的pom.xml,它包含您需要的所有版本信息。
应该注意的是,您应该尽可能使用最新的版本,因为旧的实现将不起作用。与此同时,twitter打破了它们的旧api。
希望这有帮助。
vcirk6k62#
这是agent.conf文件中类的完全限定名的问题。在旧版本中,类名为:com.cloudera.flume.source.twittersource在最新版本的flume中twittersource已经发布,不需要单独下载。类名更改为org.apache.flume.source.twitter.twittersource
请小心更改类名,尽管它对你有用