我正在使用Stormcrawler 1.16,storm 1.2.3,elasticsearch 7.2.0。和此命令来提交拓扑。
storm jar target/newscrawler-1.0-SNAPSHOT.jar org.apache.storm.flux.Flux --local es-crawler.flux
我遇到的错误是-
Version: 1.2.3
Parsing file: /home/ubuntu/newscrawler/es-crawler.flux
790 [main] INFO o.a.s.f.p.FluxParser - loading YAML from input stream...
796 [main] INFO o.a.s.f.p.FluxParser - Not performing property substitution.
796 [main] INFO o.a.s.f.p.FluxParser - Not performing environment variable
substitution.
881 [main] INFO o.a.s.f.p.FluxParser - Loading includes from resource: /crawler-
default.yaml
882 [main] INFO o.a.s.f.p.FluxParser - loading YAML from input stream...
885 [main] INFO o.a.s.f.p.FluxParser - Not performing property substitution.
886 [main] INFO o.a.s.f.p.FluxParser - Not performing environment variable
substitution.
Configuration (interpreted):
!!org.apache.storm.flux.model.TopologyDef
bolts: []
components: []
config:
955 [main] INFO o.a.s.f.FluxBuilder - Detected DSL topology...
Exception in thread "main" java.lang.ClassNotFoundException:
com.digitalpebble.stormcrawler.elasticsearch.persistence.AggregationSpout
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at
java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:315)
at org.apache.storm.flux.FluxBuilder.buildObject(FluxBuilder.java:342)
at org.apache.storm.flux.FluxBuilder.buildSpout(FluxBuilder.java:458)
at org.apache.storm.flux.FluxBuilder.buildSpouts(FluxBuilder.java:431)
at org.apache.storm.flux.FluxBuilder.buildTopology(FluxBuilder.java:110)
at org.apache.storm.flux.Flux.runCli(Flux.java:158)
at org.apache.storm.flux.Flux.main(Flux.java:103)
有人请向我解释这是什么以及如何解决此问题。
您的POM文件可能缺少storm-crawler-elasticsearch依赖项。
您可以将您的代码与storm-crawler-elasticsearch-archetype生成的代码进行比较,这将为您提供有效的配置。
将Elasticsearch原型用于:
MVN原型:生成 -DarchetypeGroupId = com.digitalpebble.stormcrawler -DarchetypeArtifactId = storm-crawler-elasticsearch-archetype -DarchetypeVersion = LATEST
系统会要求您输入一个groupId(例如com.mycompany.crawler), artefactId(例如,stormcrawler),版本和程序包名称。
这不仅会创建一个包含以下内容的POM的完整项目: 上面的依赖关系,还有一组资源,配置文件 和拓扑类。输入您刚创建的目录(应为 与您之前指定的artefactId相同),然后按照 README文件上的说明。