本例介绍NiFI ExecuteScript处理器的使用,使用的脚本引擎ECMScript
ExecuteScript-Demo
1、页面如下图
2、GenerateFlowFile
2、ExecuteScript
脚本内容:
1 var InputStreamCallback = Java.type("org.apache.nifi.processor.io.InputStreamCallback"); 2 var OutputStreamCallback = Java.type("org.apache.nifi.processor.io.OutputStreamCallback"); 3 var IOUtils = Java.type("org.apache.commons.io.IOUtils"); 4 var StandardCharsets = Java.type("java.nio.charset.StandardCharsets"); 5 6 var flowFile = session.get(); 7 8 9 if(flowFile != null) { 10 11 try { 12 13 var text = ""; 14 15 // 读取flowFile中内容 16 session.read(flowFile,new InputStreamCallback(function(inputStream) { 17 var str = IOUtils.toString(inputStream, StandardCharsets.UTF_8); 18 19 20 //由JSON字符串转换为JSON对象 21 var obj = JSON.parse(str); 22 obj.age = 18 23 24 //将JSON对象转化为JSON字符 25 text = JSON.stringify(obj); 26 27 })); 28 29 // 向flowFile中写入内容 30 flowFile = session.write(flowFile, new OutputStreamCallback(function(outputStream) { 31 32 outputStream.write(text.getBytes(StandardCharsets.UTF_8)) 33 34 })); 35 36 session.transfer(flowFile, REL_SUCCESS) 37 38 } catch(e) { 39 log.error('Something went wrong', e) 40 session.transfer(flowFile, REL_FAILURE) 41 } 42 43 }
3、PutFile
输出文件内容:{"id":1,"name":"god","age":18}
其他脚本引擎,参考以下地址
参考文档链接:https://community.hortonworks.com/articles/75032/executescript-cookbook-part-1.html