Ошибка Python в Apache NiFi: ошибка импорта: нет модуля с именем Pandas - PullRequest
2 голосов
/ 11 апреля 2019

Я новичок в NiFi. Я пытаюсь выполнить скрипт Python, используя ExecuteScript процессор. Когда я попробовал простой скрипт, который не имеет команд импорта, он работал нормально и показал вывод в nifi.StdOut. Когда я попытался запустить скрипт, который включает команды импорта, такие как import pandas. Это показывает ниже ошибку:

Ошибка импорта: ни один модуль с именем Pandas

Я попытался указать путь к файлам pkgs в каталоге Module в свойствах. Но это не тренировка. Любая помощь будет оценена!

1 Ответ

4 голосов
/ 11 апреля 2019

Я считаю, что проблема в том, что pandas - это скомпилированный модуль (написанный на C), а не чистый Python. Причина этого заключается в том, что благодаря движку JSR-223 процессор Apache NiFi ExecuteScript использует Jython , а не фактический Python . Таким образом, код Python прекрасно работает, но он не может зависеть от модулей, которые не являются чистым Python.

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

...