2013-06-27 3 views
5

J'utilise KafkaSpout. Veuillez trouver le programme de test ci-dessous. J'utilise Storm 0.8.1. La classe Multischeme est là dans Storm 0.8.2. Je vais l'utiliser. Je veux juste savoir comment les versions précédentes fonctionnaient juste en instanciant la classe StringScheme()? Où puis-je télécharger les versions antérieures de Kafka Spout? Mais je doute que ce serait une alternative correcte que de travailler sur Storm 0.8.2. ??? (Confus)Kafka Storm Intégration utilisant Kafka Spout

Lorsque j'exécute le code (donné ci-dessous) sur storm cluster (ie quand j'appuie sur ma topologie) j'obtiens l'erreur suivante (Cela arrive quand la partie Scheme est commentée bien sûr j'obtiendrai l'erreur du compilateur la classe n'est pas là en 0.8.1):

java.lang.NoClassDefFoundError: backtype/storm/spout/MultiScheme 
     at storm.kafka.TestTopology.main(TestTopology.java:37) 
Caused by: java.lang.ClassNotFoundException: backtype.storm.spout.MultiScheme 

dans le code ci-dessous vous pouvez trouver la spoutConfig.scheme = new StringScheme(); partie commentée. Je recevais une erreur de compilateur si je ne commente pas cette ligne qui est naturelle car il n'y a pas de constructeur là-bas. Aussi quand j'instancie MultiScheme j'obtiens l'erreur car je n'ai pas cette classe dans 0.8.1.

public class TestTopology { 
    public static class PrinterBolt extends BaseBasicBolt { 
     public void declareOutputFields(OutputFieldsDeclarer declarer) { 
     } 

     public void execute(Tuple tuple, BasicOutputCollector collector) { 
      System.out.println(tuple.toString()); 
     } 
    } 

    public static void main(String [] args) throws Exception { 
     List<HostPort> hosts = new ArrayList<HostPort>(); 
     hosts.add(new HostPort("127.0.0.1",9092)); 
     LocalCluster cluster = new LocalCluster(); 
     TopologyBuilder builder = new TopologyBuilder(); 
     SpoutConfig spoutConfig = new SpoutConfig(new KafkaConfig.StaticHosts(hosts, 1), "test", "/zkRootStorm", "STORM-ID"); 
     spoutConfig.zkServers=ImmutableList.of("localhost"); 
     spoutConfig.zkPort=2181; 
     //spoutConfig.scheme=new StringScheme(); 
     spoutConfig.scheme = new SchemeAsMultiScheme(new StringScheme()); 
     builder.setSpout("spout",new KafkaSpout(spoutConfig)); 
     builder.setBolt("printer", new PrinterBolt()) 
       .shuffleGrouping("spout"); 
     Config config = new Config(); 

     cluster.submitTopology("kafka-test", config, builder.createTopology()); 

     Thread.sleep(600000); 
    } 
+0

Je suppose Je ne comprends pas le problème: ça marche juste si vous allez à 0.8.2? Si c'est le cas, pourquoi même essayer de courir dans 0.8.1: 0.8.2 le remplace par quelques corrections de bugs et d'autres améliorations. –

Répondre

8

J'ai eu le même problème. Finalement résolu, et j'ai mis l'exemple de course complet sur github.

Nous vous invitons à vérifier ici> https://github.com/buildlackey/cep

(cliquez sur la tempête + répertoire kafka pour un exemple de programme qui devrait vous lever et courir).

+8

Envisagez d'ajouter une phrase ou deux à votre réponse pour décrire ce que vous avez fait afin que votre réponse soit pertinente sans que le référentiel Git ne soit actif. – neontapir

+0

Bien sûr: le projet contient des tests unitaires et des exemples de programmes qui illustrent comment développer des applications de traitement d'événements complexes (CEP) en plus de Storm, Kafka et Esper. –

+0

sonne bien pour moi –

5

Nous avons eu un problème similaire.

Notre solution:

  1. pom.xml Ouvrir

  2. Modifier l'étendue de fourni à <scope>compile</scope>

Si vous voulez en savoir plus sur les étendues de dépendance vérifier la maven docu: Maven docu - dependency scopes

Questions connexes