Как использовать python print в Apache nifi? - PullRequest
0 голосов
/ 04 августа 2020

Я новичок в Apache Nifi, и мне было бы интересно использовать отпечатки в процессоре ExecuteScript с Python в качестве механизма сценария.

Чтобы отлаживать сценарий шаг за шагом, я хотел бы быть возможность использовать встроенные функции печати Python. Единственный метод, который я нашел до сих пор, - использовать outputStream.write(), но этот метод ограничен, потому что вы можете выводить только строки.

Кто-нибудь знает лучшее решение для отладки Python скриптов в Apache Nifi?

Спасибо

1 Ответ

1 голос
/ 05 августа 2020

Функция print(), встроенная в Python, выводит на стандартный вывод (т. Е. Обычно на консоль). В NiFi у вас это не сработает. Вы должны использовать объект log, который внедряется фреймворком в ваш скрипт. Этот объект log имеет несколько функций, которые позволяют выводить данные с разным уровнем серьезности (debug, info, warn, error, и c.). По умолчанию процессор ExecuteScript записывает сообщения только с номером warn или выше, поэтому вы можете использовать log.warn("my message") или изменить уровень журнала по умолчанию для процессора в conf/logback.xml. Вывод будет отображаться в файле logs/nifi-app.log.

Пример сценария (с existing_attr, установленным на текущее время от предыдущего процессора):

flowFile = session.get()
if (flowFile != None):
    log.warn("Running inside the python script: " + flowFile.getAttribute("existing_attr"))
    flowFile = session.putAttribute(flowFile, "modified_from_script", "true")
    session.transfer(flowFile, REL_SUCCESS)

Вывод в logs/nifi-app.log (последняя строка из внутренней части скрипта):

2020-08-04 19:39:51,762 INFO [NiFi Web Server-119] o.a.n.controller.StandardProcessorNode Starting GenerateFlowFile[id=ba947905-0173-1000-d104-9e557d7a6e94]
2020-08-04 19:39:51,762 INFO [Timer-Driven Process Thread-7] o.a.n.c.s.TimerDrivenSchedulingAgent Scheduled LogAttribute[id=ba94af15-0173-1000-3f99-5d91aebbeee9] to run with 1 threads
2020-08-04 19:39:51,763 INFO [Timer-Driven Process Thread-4] o.a.n.c.s.TimerDrivenSchedulingAgent Scheduled GenerateFlowFile[id=ba947905-0173-1000-d104-9e557d7a6e94] to run with 1 threads
2020-08-04 19:39:52,135 INFO [Timer-Driven Process Thread-2] o.a.n.c.s.TimerDrivenSchedulingAgent Scheduled ExecuteScript[id=bc72b93f-0173-1000-0716-e5b91a545dc5] to run with 1 threads
2020-08-04 19:39:52,139 WARN [Timer-Driven Process Thread-3] o.a.nifi.processors.script.ExecuteScript ExecuteScript[id=bc72b93f-0173-1000-0716-e5b91a545dc5] Running inside the python script: 2020-08-04 19:39:51.763 -0700

Дополнительная информация о начале работы со скриптами в NiFi

...