Skip to content

[script]Transformer

Sun Jianbo edited this page May 22, 2018 · 7 revisions

脚本执行的Transformer

在Parser后使用,将key指定的字段作为参数传入脚本进行执行,支持输入脚本或输入脚本路径进行执行。

配置如下:

{
		"type":"script",
		"key":"ScriptKey",
                "new":"RecordKey",
		"interpreter":"bash",
		"scriptpath":"scriptpath",
		"script":""
}

该功能实现将指定的key字段的值作为参数传入脚本执行,并将执行结果写入new参数指定的字段中。

  • key 字段支持多级嵌套,多级间用.符号连接,如abc.xyz,表示 data["abc"]["xyz"]中的数据,指定的字段里可以填写多个,用,分割,代表将多个值当作参数传入脚本执行。
  • new 字段设置将脚本执行结果存入一个新的字段,不改变原来字段所存的内容。
  • interpreter 字段可以设置脚本执行解释器,默认为bash。
  • scriptpath 字段支持指定脚本文件路径,如果填写了该字段,会执行该脚本文件。
  • script 字段支持指定所需执行脚本内容,如果填写了该字段,会优先执行该脚本内容,不执行scriptpath指定字段的脚本。

配置示例

带有script Transformer的完整配置类似如下:

{
		"name":"test2.csv",
		"reader":{
			"log_path":"./tests/logdir",
			"mode":"dir"
		},
		"parser":{
			"name":"jsonps",
			"type":"json"
		},
		"transforms":[{
			"type":"script",
			"key":"key1,key2",
			"new":"new_key1",
			"interpreter":"bash",
			"scriptpath":"/dir/script.path",
                        "script":""
		}],
		"senders":[{
			"name":"file_sender",
			"sender_type":"file",
			"file_send_path":"./test2/test2_csv_file.txt"
		}]
	}

此时会执行/usr/local/my.sh脚本,并将执行的脚本结果替换key字段

带有script Transformer的完整配置类似如下:

{
		"name":"test2.csv",
		"reader":{
			"log_path":"./tests/logdir",
			"mode":"dir"
		},
		"parser":{
			"name":"jsonps",
			"type":"json"
		},
		"transforms":[{
			"type":"script",
			"key":"status",
			"new":"newKey",
			"interpreter":"bash",
			"scriptpath":"/usr/local/status.sh",
                        "script":""
		}],
		"senders":[{
			"name":"file_sender",
			"sender_type":"file",
			"file_send_path":"./test2/test2_csv_file.txt"
		}]
	}

此时会执行/usr/local/status.sh脚本,然后新建字段newKey,并将脚本执行的结果放入newKey中,如果脚本执行出错,错误将会写入newKey_error字段

Clone this wiki locally