嘿~ 今天天气不错嘛

在通过flume1.9从kafka往es6.3.2写数据的时候遇到了以下报错,有大佬能帮忙看一下吗

Elasticsearch | 作者 LovelyTZ | 发布于2019年09月18日 | 阅读数:3435

2019-09-17 20:16:04,502 (conf-file-poller-0) [ERROR - org.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable.run(PollingPropertiesFileConfigurationProvider.java:150)] Failed to start agent because dependencies were not found in classpath. Error follows.
java.lang.NoClassDefFoundError: org/elasticsearch/common/io/BytesStream
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:264)
        at org.apache.flume.sink.elasticsearch.ElasticSearchSink.configure(ElasticSearchSink.java:294)
        at org.apache.flume.conf.Configurables.configure(Configurables.java:41)
        at org.apache.flume.node.AbstractConfigurationProvider.loadSinks(AbstractConfigurationProvider.java:453)
        at org.apache.flume.node.AbstractConfigurationProvider.getConfiguration(AbstractConfigurationProvider.java:106)
        at org.apache.flume.node.PollingPropertiesFileConfigurationProvider$FileWatcherRunnable.run(PollingPropertiesFileConfigurationProvider.java:145)
        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:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: org.elasticsearch.common.io.BytesStream
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 14 more
已邀请:

stone_xy

赞同来自: LovelyTZ

仔细看了下代码。
flume支持的es版本太老了。


Then select an elasticsearch client library which matches the major version. A 0.19.x client can talk to a 0.19.x cluster; 0.20.x can talk to 0.20.x and 0.90.x can talk to 0.90.x. Once the elasticsearch version has been determined then read the pom.xml file to determine the correct lucene-core JAR version to use. 


 
 
在es0.20中 BytesStream类是在org.elasticsearch.common.io中
代码:
https://github.com/elastic/ela ... .java
 
而到了6.3.2中该类挪到了org.elasticsearch.common.io.stream中,多了一层
代码:
https://github.com/elastic/ela ... .java
 
 
所以会报类不存在的错误,所以~ 建议用Logstash吧,flume支持的es版本太老。~
 
 
 

stone_xy

赞同来自:

把这个包放到flume的classpath下:
<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>6.3.2</version>
</dependency>
 

LovelyTZ

赞同来自:

我的包放的是这个
<dependency> 
  <groupId>org.elasticsearch</groupId> 
  <artifactId>elasticsearch</artifactId> 
  <version>6.3.2</version> 
</dependency>
还是报以上的错
 

要回复问题请先登录注册