输入数据行作为python中的参数

时间:2019-05-07 09:33:34

标签: python linux database apache-nifi dataflow

我想使用NI-FI将数据从源传输到目标。在NI-FI中,我还想使用python脚本来屏蔽我的Data。所以有人建议我将输入的一行一行地传递给数据作为python中的参数。

所以我想知道我需要在我的python脚本中手动传递文件或每一行和每一列进行屏蔽。最好的方法是什么,如何获得它。

在NI-FI中,我也想使用python脚本屏蔽我的数据,但是Getfile Processor和python脚本指出了位于NI-FI的Input文件夹中的相同文件,所以可能是由于这个原因在执行流命令时出错。

用户@GMc要求的脚本下方:-

   class ModJSON(StreamCallback):
    def __init__(self):
        pass

    def process(self, inputStream, outputStream):
        flowFile = session.get()
        obj = {
            "Source": "NiFi",
            "IP": obj['IP'].replace(regex='((?<=[0-9])[0-9]|(?<=\.)[0-9])', value='X'),
            "Name": obj['user']['screen_name']
        }

在此脚本中,我要屏蔽来自GetFile处理器但文件在队列中的数据。

我想从源头获取数据并对其进行转换。

1 个答案:

答案 0 :(得分:0)

已经有一段时间了,但是如果我没记错的话,NiFi的python界面为您提供了一个名为session的全局变量。

您使用会话对象获取流文件,并将输出向下传输到正确的下游路径(例如,成功)。

也许本教程会帮助您https://community.hortonworks.com/articles/35568/python-script-in-nifi.html

对于您对GetInputFile的引用(您是指GetFile处理器?)和python脚本,我有些困惑。通常,GetFile从文件系统获取文件。然后将其转换为NiFi中的内部机制,称为FlowFile。下游处理器(例如python脚本)从会话对象获取流文件,并对其进行处理,并可以选择通过session.transfer方法传输修改后的版本。