NiFi: есть ли способ выполнить построчный код Python, прежде чем мы добавим в executeescript? - PullRequest
0 голосов
/ 03 июня 2019

Я планирую написать код Python в процессоре исполняемого сценария.Поскольку это мой первый раз, мне трудно начинать.

В принципе, я хочу прочитать потоковый файл (csv), сделать некоторые манипуляции и записать его в потоковый файл.

есть ли способгде мы можем написать код заранее, скажем, предположим, что jupyter, а затем повторить то же самое в процессоре?

также, есть ли документация по синтаксису для написания кода?

EXECUTESTREAMCOMMAND :

import org.apache.commons.io.IOUtils
import java.io
import csv 

# Get flowFile Session
flowFile = session.get()

# Open data.json file and parse json values
readFile = csv.reader(sys.stdin)
for row in readFile:
    new_value = row[0]
if (flowFile != None):
    flowFile = session.putAttribute(flowFile, "from_python_string", "python string example")
    flowFile = session.putAttribute(flowFile, "from_python_number", str(new_value))

session.transfer(flowFile, REL_SUCCESS)
session.commit()

Command Arguments: C:\Users\Desktop\samp1.py
Command Path: C:\Users\AppData\Local\Programs\Python\Python37-32\python

, когда я его выполняю, в операторе импорта выдается сообщение о том, что модуль не найден.

tia

1 Ответ

1 голос
/ 03 июня 2019

Мэтт Берджесс (Matt Burgess) написал инструмент для проверки сценариев , который может принять сценарий Jython и протестировать его. Не совсем интерактивная среда, которую вы ищете, но, вероятно, настолько близкая, насколько это возможно, из коробки.

Код, который вы пишете при использовании ExecuteScript и ExecuteStreamCommand, будет сильно отличаться; основная логика может быть такой же, но способ, которым ваш код получает доступ и генерирует атрибуты и содержимое потокового файла, будет отличаться, потому что при запуске вне среды выполнения NiFi Python не знает о специфических особенностях NiFi. См. этот ответ для получения дополнительной информации о том, как писать для ExecuteStreamCommand и этот ответ для ExecuteScript.

...