尝试将csv制表符分隔文件转换为CSV文件为UTF-16的JSON。
所有字段都是CSV和JSON字符串。
在NiFi中使用SplitRecord处理器。处理器运行时没有任何错误,但转换为JSON的数据值如下所示
“\ u0000R \ u0000e \ u0000t \ u0000a \ u0000i \ u0000l ......。”
我应该提到这是avro架构中的UTF-16吗?如果是这样我该怎么办?
同样适用于UTF-8文件但不适用于UTF-16。
更新:无法在阅读器中找到字符集属性。
使用HDF版本3.0.1.1。 图片如下:
答案 0 :(得分:1)
在nifi 1.5.0中
在阅读器服务中有一个属性Character Set
。将其设置为UTF-16
如果您使用的是没有此参数的版本,您可以在使用SplitRecord
之前更新您的版本或解决方法,您可以使用以下execute groovy脚本将编码从UTF-16转换为UTF-8:
def ff = session.get()
if(!ff)return
ff = session.write(ff, {rawIn, rawOut->
// ## transform streams into reader and writer
rawIn.withReader("UTF-16"){reader->
rawOut.withWriter("UTF-8"){writer->
//transfer reader UTF-16 to writer UTF-8
writer << reader
}
}
} as StreamCallback)
session.transfer(ff, REL_SUCCESS)