Lavoro con Storm già da un po ', ma voglio iniziare con lo sviluppo. Come suggerito, sto usando IntelliJ (fino ad ora, stavo usando Eclipse e scrivevo solo topologie contro l'API Java).Come eseguire WordCountTopology da storm-starter in Intellij
stavo anche guardando https://github.com/apache/storm/tree/master/examples/storm-starter#intellij-idea
Questa documentazione non è completa. Non ero in grado di eseguire nulla in Intellij prima. Potrei capire che ho bisogno di rimuovere la portata della dipendenza da storm-core (in pom.xml di avvio tempesta). (trovato qui: storm-starter with intellij idea,maven project could not find class)
Dopo che sono stato in grado di costruire il progetto. Posso anche eseguire ExclamationTopology
senza problemi all'interno di IntelliJ. Tuttavia, WordCountTopology
non riesce.
Per prima cosa ho ottenuto il seguente errore:
java.lang.RuntimeException: backtype.storm.multilang.NoOutputException: Pipe to subprocess seems to be broken! No output read. Serializer Exception: Traceback (most recent call last): File "splitsentence.py", line 16, in import storm ImportError: No module named storm
Aggiornamento: installazione python-storm
non è tenuto a farlo funzionare
sono stato in grado di risolvere tramite: apt-get install Pitone storm (da StackOverflow)
Tuttavia, non parlo Python e mi chiedevo quale fosse il problema e perché potessi risolverlo in questo modo. Voglio solo approfondirmi. Forse qualcuno può spiegare.
Purtroppo, sto ottenendo un errore diverso ora:
java.lang.RuntimeException: backtype.storm.multilang.NoOutputException: Pipe to subprocess seems to be broken! No output read. Serializer Exception: Traceback (most recent call last): File "splitsentence.py", line 18, in class SplitSentenceBolt(storm.BasicBolt): AttributeError: 'module' object has no attribute 'BasicBolt'
non ho trovato alcuna soluzione su Internet. Anche chiedere a [email protected]
non è stato d'aiuto. Vedo il seguente suggerimento:
I think that it was always assumed that topology would always be invoked through storm-command line. Thus working directory would be ${STORM-INSTALLATION}/bin/storm Since storm.py is in the this directory, splitSentence.py would be able to find storm modules. Can you set the working directory to a path, where storm.py is present and then try. If it works, we can add it later to the documentation
Tuttavia, il caricamento della directory di lavoro non ha risolto il problema.
E come non ho familiarità con Python e come sono nuovo in IntelliJ, sono bloccato ora. Perché ExclamationTopology
viene eseguito, suppongo che la mia configurazione di base sia corretta.
Cosa faccio di sbagliato? È possibile eseguire WordcountTopology
in LocalCluster
in IntelliJ?
Impostazione PYTHONPATH fa il trucco! 'SplitSentence pythonSplit = new SplitSentence(); Mappa env = new HashMap(); env.put ("PYTHONPATH", "/ home/mjsax/workspace_storm/storm/storm-storm-multilang/python/src/main/resources/resources /"); pythonSplit.setEnv (env); builder.setBolt ("split", pythonSplit, 8) .shuffleGrouping ("spout"); ' –
Sì, in caso di non trovare implementazioni multilang di storm-starter, è possibile aggiungerle anche a PYTHONPATH. –
Non è contenuto in starter tempesta. E non tutte le versioni di 'storm.py' funzionano. Il codice contiene 5 file con 3 versioni differenti. Non riuscivo a capire perché ci sono diverse versioni però. Lo sai? –