/ / Importar módulos no Nifi ExecuteScript - apache-nifi

Importar módulos no Nifi ExecuteScript - apache-nifi

Eu sou novo no Nifi e python

Eu quero executar meu script python. Então, usei o ExecuteScript e tentei importar certos módulos. Eu importei assim:

import json, sftp, paramiko

Embora eu tenha o sftp instalado, quando o importo no Executescript, ele diz "Falha ao processar a sessão. Nenhum módulo chamado sftp na linha número 1"

which -a sftp
/usr/bin/sftp

Ao importar o paramiko também, obtive o mesmo erro.

Respostas:

11 para resposta № 1

O mecanismo "python" usado pelo ExecuteScript e InvokeScriptedProcessor é realmente Jython, não Python puro. Isso significa que ele não pode carregar módulos nativos (arquivos .so, arquivos C compilados etc.). De acordo com este post de SO, o paramiko usa Crypto, que tem bibliotecas nativas, portanto não pode ser usado no Jython (veja a parte inferior de esta postagem pelo meu comentário sobre isso). Meu palpite é que a biblioteca sftp faz o mesmo.

O Jython pode fazer uso de módulos Python puros, existe uma discussão na lista de discussão NiFi sobre como apontar para (e incluir) esses tipos de módulos.


0 para resposta № 2

O processador ExecuteScript usa seu próprio mecanismo Jython para executar seus scripts python. Como as bibliotecas que você está importando não estão disponíveis no NIFI inbuild Jython Engine, seu erro de lançamento.

SOLUÇÃO:

Se o python já estiver instalado em nossa máquinacom todas essas bibliotecas (a mesma máquina em que seu NIFI está instalado), você pode usar esse mecanismo python para executar seu script. você pode executar seu código python usando o processador ExecuteProcess. consulte a configuração do ExecuteProcess.