我的最终目标是屏蔽一个特定文件中的数据。我想将文件从一个地方移到另一个地方。在此传输过程中,我必须使用Python脚本屏蔽数据。因此,我设计了以下流程:
Python
我使用pandas
设计了一个NiFi
脚本。我在Google Cloud Platform
创建的虚拟机上运行此Python-2.7
,其中安装了NiFi-1.9.1
和import pandas as pd
readFile = pd.read_csv("/path",sep=" ",header=None)
readFile.columns = ['IP']
readFile['IP'] = readFile['IP'].replace(regex='((?<=[0-9])[0-9]|(?<=\.)[0-9])',value='X')
readFile.to_csv("/path", sep=' ')
。下面是我的熊猫代码:
{{1}}
我有以下疑问:
1)使用getFile处理器,我正在将队列中的文件传递给下一个处理器,即ExecuteStreamCommand处理器。
2)另外,在我的Python代码中,我试图从GetFile处理器中传递的同一输入目录中读取数据,但现在文件已移至getfile> executestreamcommand之间的队列中。那怎么读呢?
3)执行python脚本后,如何使用putFile处理器将其保存回其他位置?
答案 0 :(得分:1)
流文件的内容作为stdin
流传递到命令(在您的情况下为python)
因此,您必须使用以下代码:
readFile = pd.read_json(sys.stdin)
另一方面,如果您需要对流文件应用regexp替换,则可以尝试使用ReplaceText处理器而不是ExecuteStreamCommand
答案 1 :(得分:0)
您可能需要在 nifi 注册的 Volume 中提供 python .py 文件。
例如 opt/nifi/nifi-current/ 如果它是一个 docker 镜像