Мой поток NiFi вызывает функции pg. Для отладки в функции pg встроено несколько операторов raise-notice. При обработке огромных наборов данных они генерируют обильный текстовый вывод для программиста. Однако этот текстовый вывод может блокировать процессор NiFi. В некоторых случаях это даже приводит к переполнению кучи. Поэтому, если я хочу оставить операторы raise-notice на какое-то время во время разработки, было бы неплохо увидеть какой-либо переключатель или конфигурацию для процессоров выполнения SQL NiFi, чтобы отключить или отбросить уведомления от pg.
Ответ
В Apache NiFi нет прямой настройки для отключения или игнорирования сообщений RAISE NOTICE
из PostgreSQL в процессе выполнения SQL-запросов. Однако вы можете рассмотреть несколько обходных путей для решения вашей проблемы с избыточными сообщениями, которые могут блокировать процессоры NiFi и привести к переполнению кучи.
Вот несколько возможных решений:
-
Использование временных функций: Если вы хотите временно отключить вывод сообщений в
RAISE NOTICE
, вы можете создать временные функции без вызововRAISE NOTICE
(по сути, дублировать функциональность, но без отладочной информации), которые будут использоваться в вашем NiFi потоке во время разработки. -
Уровень логирования: Можно попробовать настроить уровень логирования PostgreSQL. Это не полностью отключит вывод
RAISE NOTICE
, но может помочь уменьшить количество сообщений. Проверьте конфигурациюpostgresql.conf
и отрегулируйте параметры логирования. -
Перенаправление вывода на файл: Если вам необходимо сохранять
RAISE NOTICE
для отладки, вы можете перенаправить вывод ошибок и предупреждений в отдельный файл, а затем настраивать NiFi на работу с этим файлом. Это позволит избежать блокировок в NiFi, но потребует дополнительной обработки для анализа сообщений. -
Использование NiFi Processors: Если вы используете
ExecuteSQL
или подобные компоненты, вы можете рассмотреть использование процессоров, таких какExecuteSQL
с использованием параметраReturn Type
для контроля выходных данных. Обратите внимание, что это зависит от того, что вы именно хотите извлечь из ваших SQL-запросов. - Анализ производительности: Если количество сообщений приводит к возникновению проблем с производительностью, рекомендуем проверить другие аспекты вашего NiFi потока. Возможно, есть возможность оптимизировать выполнение SQL-запросов или уменьшить объем обрабатываемых данных.
В общем, на данный момент нет прямого переключателя для игнорирования RAISE NOTICE
в NiFi, но вышеприведенные рекомендации должны помочь вам управлять выводом сообщений и избежать блокировок в процессе. Если проблема с производительностью сохраняется, вам может потребоваться более детально проанализировать вашу архитектуру потока данных в NiFi.