NiFi:Split Record处理器UTF-16 CSV到JSON

时间:2018-01-29 16:47:43

标签: json csv avro apache-nifi utf-16

尝试将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。  图片如下:

enter image description here

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)