Изменить атрибуты файла потока в NiFi с помощью Python sys.stdout? - PullRequest
0 голосов
/ 03 февраля 2020

В моем конвейере у меня есть файл потока, который содержит некоторые данные, которые я хотел бы добавить в качестве атрибутов в файл потока. Я знаю, что в Groovy я могу добавить атрибуты в потоковые файлы, но я менее знаком с Groovy и гораздо удобнее использовать Python для разбора строк (что мне нужно сделать, чтобы извлечь значения эти атрибуты). Вопрос в том, могу ли я достичь этого в Python, когда я использую ExecuteStreamCommand для чтения файла с sys.stdin.read() и записи моего файла с sys.stdout.write()?

Так, например, я использую приведенный ниже код для извлечения метки времени из моего потокового файла. Как мне добавить ts в качестве атрибута при записи ff?

import sys

ff = sys.stdin.read()
t_split = ff.split('\t')
ts = t_split[0]

sys.stdout.write(ff)

1 Ответ

0 голосов
/ 03 февраля 2020

Если вы не импортируете какие-либо собственные (CPython) модули, вы можете попробовать ExecuteScript с Jython, а не ExecuteStreamCommand. У меня есть пример в Jython в поваренной книге ExecuteScript . Обратите внимание, что вы не используете stdin / stdout с ExecuteScript, вместо этого вы должны получить файл потока из сеанса и либо передать его как есть (после того, как вы закончили чтение), либо перезаписать его (есть примеры во второй части поваренной книги 1006 *.

...