NiFi:从文件中删除固定数量的 header 行
NiFi: Remove fixed number of header lines from file
我正在处理一个文件,我想删除 (trim) 前 X header 行以仅保留数据,可能避免使用正则表达式。
谢谢
您可以使用 Nifi 中的 ExecuteScript 处理器删除前 X header 行。
下面是我自己写的Jython脚本示例:
import json
import java.io
from org.apache.commons.io import IOUtils
from java.nio.charset import StandardCharsets
from org.apache.nifi.processor.io import StreamCallback
class PyStreamCallback(StreamCallback):
def __init__(self):
pass
def process(self, inputStream, outputStream):
text = IOUtils.readLines(inputStream, StandardCharsets.UTF_8)
for line in text[3:]:
outputStream.write(line + "\n")
flowFile = session.get()
if (flowFile != None):
flowFile = session.write(flowFile,PyStreamCallback())
flowFile = session.putAttribute(flowFile, "filename", flowFile.getAttribute('filename').split('.')[0]+'_translated.json')
session.transfer(flowFile, REL_SUCCESS)
这显然会删除前 3 行,但您可以轻松修改它以删除更多或更少的行。
希望对您有所帮助。
我正在处理一个文件,我想删除 (trim) 前 X header 行以仅保留数据,可能避免使用正则表达式。
谢谢
您可以使用 Nifi 中的 ExecuteScript 处理器删除前 X header 行。
下面是我自己写的Jython脚本示例:
import json
import java.io
from org.apache.commons.io import IOUtils
from java.nio.charset import StandardCharsets
from org.apache.nifi.processor.io import StreamCallback
class PyStreamCallback(StreamCallback):
def __init__(self):
pass
def process(self, inputStream, outputStream):
text = IOUtils.readLines(inputStream, StandardCharsets.UTF_8)
for line in text[3:]:
outputStream.write(line + "\n")
flowFile = session.get()
if (flowFile != None):
flowFile = session.write(flowFile,PyStreamCallback())
flowFile = session.putAttribute(flowFile, "filename", flowFile.getAttribute('filename').split('.')[0]+'_translated.json')
session.transfer(flowFile, REL_SUCCESS)
这显然会删除前 3 行,但您可以轻松修改它以删除更多或更少的行。
希望对您有所帮助。