【NIFI】 Apache NiFI 之 ExecuteScript處理器
阿新 • • 發佈:2018-12-13
本例介紹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,newInputStreamCallback(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