我想创建一个自定义NiFi
处理器,它可以读取ESRi ASCII grid files
并返回CSV
表示,每个文件包含一些元数据,WKT格式包含地理参考用户数据。
不幸的是,解析后的结果不会被写回更新的流文件。
不幸的是,只返回原始文件。转换后的输出不会保留。
尝试对其进行修改以手动序列化某些CSV字符串,例如:
val lineSep = System.getProperty("line.separator")
val csvResult = result.map(p => p.productIterator.map{
case Some(value) => value
case None => ""
case rest => rest
}.mkString(";")).mkString(lineSep)
var output = session.write(flowFile, new OutputStreamCallback() {
@throws[IOException]
def process(outputStream: OutputStream): Unit = {
IOUtils.write(csvResult, outputStream, "UTF-8")
}
})
仍然没有写入萤火虫。上面的问题仍然存在,或者我得到StreamStream的Stream not closed例外。
它必须是一点点缺失,但我似乎无法找到遗漏的位。
答案 0 :(得分:4)
每个更改流文件的会话方法(如session.write())都会返回新版本的文件,您必须传输此新版本。
如果在converterIngester()函数中更改文件,则必须将此新版本返回给调用者函数以转移到关系。