Как запустить WordCountTopology от штормового стартера в Intellij

Я уже давно работаю со Storm, но хочу начать с разработки. Как я уже сказал, я использую Intellij (до сих пор я использовал Eclipse и писал только топологии против Java API).

Я также смотрел https://github.com/apache/storm/tree/master/examples/storm-starter#intellij-idea

Эта документация не завершена. Сначала я не смог ничего запустить в Intellij. Я мог бы понять, что мне нужно удалить масштаб зависимости от штормовых ядер (в штормовом старте pom.xml). (найденный здесь: штурмовик с идеей intellij, проект maven не смог найти класс )

После этого я смог построить проект. Я также могу запустить ExclamationTopology без проблем в Intellij. Однако WordCountTopology терпит неудачу.

Сначала я получил следующую ошибку:

java.lang.RuntimeException: backtype.storm.multilang.NoOutputException: Pipe to subprocess кажется сломанным! Нет выхода. Сериализатор Исключение: Traceback (последний последний вызов): Файл «splitsentence.py», строка 16, в буфере импорта ImportError: нет модуля с именем storm

Обновление: установка pyhton-storm не требуется, чтобы он работал

Я смог решить это через: apt-get install python-storm (из StackOverflow)

Тем не менее, я не говорю на Python и задаюсь вопросом, в чем проблема, и почему я могу разрешить это так. Просто хочу углубиться в это. Может быть, кто-то может объяснить.

К сожалению, сейчас у меня другая ошибка:

java.lang.RuntimeException: backtype.storm.multilang.NoOutputException: Pipe to subprocess кажется сломанным! Нет выхода. Сериализатор Исключение: Traceback (последний последний вызов): Файл «splitsentence.py», строка 18, в классе SplitSentenceBolt (storm.BasicBolt): AttributeError: объект 'module' не имеет атрибута 'BasicBolt'

Я не нашел решения в Интернете. dev@storm.apache.org на dev@storm.apache.org тоже не помогло. Я предлагаю следующее предложение:

Я думаю, что всегда предполагалось, что топология всегда будет вызываться через штурмовую линию. Таким образом, рабочий каталог будет $ {STORM-INSTALLATION} / bin / storm. Поскольку storm.py находится в этом каталоге, splitSentence.py сможет найти модули шторма. Можете ли вы установить рабочий каталог на путь, где присутствует storm.py, а затем попробуйте. Если он работает, мы можем добавить его позже в документацию

Однако, проверка рабочего каталога не решила Problme.

И поскольку я не знаком с Python, и поскольку я новичок в Intellij, я застрял сейчас. Поскольку ExclamationTopology работает, я думаю, что моя базовая настройка правильная.

Что я делаю неправильно? Можно вообще запустить WordcountTopology в LocalCluster в Intellij?

2 Solutions collect form web for “Как запустить WordCountTopology от штормового стартера в Intellij”

К сожалению, AFAIK вы не можете запускать многоканальную функцию с помощью LocalCluster без пакета.

ShellProcess опирается на codeDir TopologyContext, который используется супервизором. Рабочие сериализуются в файле stormcode.ser, но многоязычные файлы должны извлекаться вне сериализованного файла, чтобы python / ruby ​​/ node / etc мог его загрузить.

Выполнение этого с распределенным режимом легко, потому что всегда есть пользовательский баннер, и супервизор может знать, что это то, что пользователь представил.

Но выполнение этого с помощью локального режима нелегко, потому что супервайзер не может знать, что пользователь представил банку, и пользователи могут запускать топологию в локальном режиме без упаковки.

Таким образом, Supervisor в локальном режиме находит каталог ресурсов («ресурсы») из каждой банки (которая заканчивается «jar») в pathpath и копирует первое вхождение в codeDir.

storm jar помещает пользовательскую топологию jar в первый путь класса, поэтому ее можно запускать без проблем.

Как правило, для ShellProcess естественно не найти «splitsentence.py». Возможно, ваш рабочий каталог или PYTHONPATH сделали трюк.

Я боролся с подобной проблемой, а не с типовой топологией, но с моим собственным использованием болта Python.

Также было отмечено, что объект «AttributeError: 'module» не имеет исключения «BasicBolt» в локальном режиме и при отправке в кластер.

На это очень мало ресурсов, я нашел ваш вопрос и еще немного обсудил этот вопрос.

В случае, если кто-то другой имеет ту же проблему: убедитесь, что вы включили правильную зависимость Maven «multilang-python» в ваш файл pom. Это позволит установить правильные зависимости времени выполнения в файл JAR, необходимый для запуска вашей топологии.

  • Плагин IntelliJ Python & Run classpath
  • Запуск кода pyspark в Intellij
  • Как заставить IntelliJ / PyCharm распознавать активное ядро ​​IPython?
  • pycharm / intellij - уклонение jupyter не рендеринг
  • Python - лучший язык программирования в мире.