我正在使用 Apache NiFi 来构建我的数据流,而我目前正在处理的实际数据是由分隔值组成的。我想使用 ExecuteScript,为此我整理了一个简单的 Groovy 脚本,它应该执行以下操作:
1) 用竖线 (|) 替换当前分隔符
2) 将 \r\n 和 \tab 替换为 " "
此脚本的原因是对显示以下问题的数据集进行一些数据清理和争论:
\tab
a) 文本(通常很长)通过或跨行\r\n
。这可能发生在句号之前,但并不一致。
b) 空行(目前脚本还没有涉及到这一点)
1) 很容易完成,但是 2) 的代码似乎没有删除表格和回车,我不知道为什么。这是代码:
import org.apache.nifi.processor.io.StreamCallback
import java.nio.charset.StandardCharsets
def flowFile = session.get()
if(!flowFile) return
flowFile = session.write(flowFile, {inputStream, outputStream ->
inputStream.eachLine { line ->
def a = line.replaceAll('\t', ' ').replaceAll('\r\n', ' ').replaceAll('¦', '|')
outputStream.write("${a}\n".toString().getBytes(StandardCharsets.UTF_8))
}
} as StreamCallback)
session.transfer(flowFile, REL_SUCCESS)
谢谢您的帮助。