Не удается импортировать StreamCallback, ioUtils в процессоре ExecuteStreamCommand в NiFi - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь выполнить код Python в процессоре executetestreamcommand и пытаюсь читать / записывать потоковые файлы в коде, для этого мне нужно использовать определенные библиотеки, например

  • из org.apache.commons.io import IOUtils
  • из java.nio.charset import StandardCharsets
  • из org.apache.nifi.processor.io import StreamCallback

в библиотеках например Но я получаю ошибку в executeStreamCommand, который не найден ни одним модулем. кто-нибудь знает причину?

1 Ответ

2 голосов
/ 25 апреля 2019

ExecuteStreamCommand используется для выполнения команд оболочки (скриптов, утилит и т. Д.) В командной строке (он же терминал).Внутренние библиотеки NiFi недоступны для сценариев, работающих в этом контексте, если вы явно не объедините и не импортируете их в эти сценарии.Взаимодействие с NiFi ограничивается потоковым содержимым, передаваемым через STDIN и STDOUT в этом случае.См. этот ответ для более подробной информации.

Если вы хотите использовать скрипт Python для чтения непосредственно из атрибутов и содержимого потокового файла NiFi и реализовать пользовательский StreamCallback, вам следует использовать ExecuteScript или InvokeScriptedProcessor.Это обеспечивает более тесную интеграцию с концепциями NiFi, но, в частности, для Python, означает, что модули, изначально скомпилированные (модули Python, написанные на C), недоступны, поскольку NiFi использует Jython (совместимый с JSR-223).

...