Apache storm storm的字数拓扑与kafka的集成

Apache storm storm的字数拓扑与kafka的集成,apache-storm,apache-kafka,kafka-consumer-api,Apache Storm,Apache Kafka,Kafka Consumer Api,我正在尝试将storm的字数计算程序与kafka集成,因为我的制作人工作得很好,即它正在读取文本文件并将每一行作为消息发送,我可以在简单的消费者控制台中看到这些消息。 现在,为了将其与storm集成,即将这些消息/行发送到consumer spout,我刚刚用storm spout集成依赖项中的kafka spout替换了之前的storm spout of word count程序,该程序的其余部分是相同的,我正在尝试在eclipse中运行它,但它没有得到执行,我不知道问题出在哪里,甚至不知道我

我正在尝试将storm的字数计算程序与kafka集成,因为我的制作人工作得很好,即它正在读取文本文件并将每一行作为消息发送,我可以在简单的消费者控制台中看到这些消息。 现在,为了将其与storm集成,即将这些消息/行发送到consumer spout,我刚刚用storm spout集成依赖项中的kafka spout替换了之前的storm spout of word count程序,该程序的其余部分是相同的,我正在尝试在eclipse中运行它,但它没有得到执行,我不知道问题出在哪里,甚至不知道我做的是否正确,这是我的主要课程-

package com.spnotes.storm;
import storm.kafka.BrokerHosts;
import storm.kafka.KafkaSpout;
import storm.kafka.SpoutConfig;
import storm.kafka.StringScheme;
import storm.kafka.ZkHosts;
import backtype.storm.Config;
import backtype.storm.LocalCluster;
import backtype.storm.spout.SchemeAsMultiScheme;
import backtype.storm.topology.TopologyBuilder;

import com.spnotes.storm.bolts.WordCounterBolt;
import com.spnotes.storm.bolts.WordSpitterBolt;

public class WordCount {

public static void main(String[] args) throws Exception{
    Config config = new Config();
    config.setDebug(true);
    config.put(Config.TOPOLOGY_MAX_SPOUT_PENDING, 1);
    BrokerHosts hosts = new ZkHosts("localhost:9092");
    SpoutConfig spoutConfig = new SpoutConfig(hosts, "test", "localhost:2181", "id1");
    spoutConfig.scheme = new SchemeAsMultiScheme(new StringScheme());
    KafkaSpout kafkaSpout = new KafkaSpout(spoutConfig);

    TopologyBuilder builder = new TopologyBuilder();

    builder.setSpout("line-reader-spout", kafkaSpout);

    builder.setBolt("word-spitter", new WordSpitterBolt()).shuffleGrouping("line-reader-spout");

    builder.setBolt("word-counter", new WordCounterBolt()).shuffleGrouping("word-spitter");


    LocalCluster cluster = new LocalCluster();
    System.out.println("submit topology");
    Thread.sleep(10000);
    //StormSubmitter.submitTopology("HelloStorm5", config, builder.createTopology());
    cluster.submitTopology("HelloStorm5", config, builder.createTopology());
    cluster.shutdown();
}

}
有两个螺栓WordSplitterBolt()和WordCounterBolt(),WordSplitterBolt将每行/消息拆分为标记/单词,WordCounterBolt将计算每个单词的数量。有人能告诉我我做错了什么吗?我是否需要创建自己的喷口而不是使用预定义的KafkaSpout?我的主类正确吗?

更改代码:

        BrokerHosts hosts = new ZkHosts(zkConnect);
zkConnect是zookeeper主机名和端口,不适用于卡夫卡。将其更改为localhost:2181

正如在与代码相关的rest聊天问题上所讨论的


问题是Maven依赖项。需要将所有依赖项包含到POM.xml中。

BrokerHosts hosts=new ZkHosts(zkConnect);zkConnect是zookeeper主机名和端口,不适用于kafka。将其更改为localhost:2181将其更改为SpoutConfig-SpoutConfig=new-SpoutConfig(主机,“test”,“UUID.randomUUID().toString());在eclipse中,它仍然没有运行,当我在storm集群上运行它时,它正在部署,但当我看到日志时,它给出了java.lang.RuntimeException:java.lang.ClassNotFoundException:storm.kafka.KafkaSpoutand,我已经将jars-scala-library-2.10.1.jar-kafka_2.9.2-0.8.1.1.jar和storm-kafka-0.9.2-incubating.jar复制粘贴到stormlib folder在maven pom.xml中添加这些JAR依赖项。