nifi ExecuteScript 文本数据 通过javascript 脚本 把文本 修改后导出

609 阅读1分钟

目录

介绍

view

javascript

小解

开始内容

结果



介绍

  • 在javascript 中 将第一个组件传来的文本转成json
  • 然后执行脚本操作该数据格式
  • 然后把数据写入到文本弄出来

 

view

javascript  



//读取内容在写入内容
var InputStreamCallback =  Java.type("org.apache.nifi.processor.io.InputStreamCallback");
var OutputStreamCallback =  Java.type("org.apache.nifi.processor.io.OutputStreamCallback");
var IOUtils = Java.type("org.apache.commons.io.IOUtils");
var StandardCharsets = Java.type("java.nio.charset.StandardCharsets");
 
var flowFile = session.get();

if(flowFile != null) {

    try {

        var text = "";

        // 读取flowFile中内容
        session.read(flowFile,new InputStreamCallback(function(inputStream) {
            var str = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
            

            //由JSON字符串转换为JSON对象
            var obj = JSON.parse(str); 
            obj.age = 18

            //将JSON对象转化为JSON字符
            text = JSON.stringify(obj); 
        }));

        // 向flowFile中写入内容
        flowFile = session.write(flowFile, new OutputStreamCallback(function(outputStream) {
            outputStream.write(text.getBytes(StandardCharsets.UTF_8))
        }));

        session.transfer(flowFile, REL_SUCCESS)

    } catch(e) {
        log.error('Something went wrong', e)
        session.transfer(flowFile, REL_FAILURE)
    }
    
}

 

小解

  • 引入点东西
var InputStreamCallback =  Java.type("org.apache.nifi.processor.io.InputStreamCallback");
var OutputStreamCallback =  Java.type("org.apache.nifi.processor.io.OutputStreamCallback");
var IOUtils = Java.type("org.apache.commons.io.IOUtils");
var StandardCharsets = Java.type("java.nio.charset.StandardCharsets");
 
  • 定义 test
  • session.read读出内容
  • 把文本转json 
  • 然后修改内容
  • 在写入流,让后边使用

var flowFile = session.get();
if(flowFile != null) {

    try {
        var text = "";
        // 读取flowFile中内容
        session.read(flowFile,new InputStreamCallback(function(inputStream) {
            var str = IOUtils.toString(inputStream, StandardCharsets.UTF_8);
            
            //由JSON字符串转换为JSON对象
            var obj = JSON.parse(str); 
            obj.params1 = 100;
			obj.params2 = 200;
			obj.params3 = [1,2,3,4,4,5];
			obj.params6 = [{"a":"as","b":"bs"}];
			
            //将JSON对象转化为JSON字符
            text = JSON.stringify(obj); 
        }));

        // 向flowFile中写入内容
        flowFile = session.write(flowFile, new OutputStreamCallback(function(outputStream) {
            outputStream.write(text.getBytes(StandardCharsets.UTF_8))
        }));
        session.transfer(flowFile, REL_SUCCESS)
    } catch(e) {
        log.error('Something went wrong', e)
        session.transfer(flowFile, REL_FAILURE)
    }
}

 

 

开始内容

结果

 

 

 

 

 

ok

 

 

 

持续更新