etl工具nifi使用系列(二):简单数据处理processor的使用

来源:互联网 发布:微信公众号seo 编辑:程序博客网 时间:2024/06/16 21:06

etl工具nifi使用系列(一):nifi介绍及基本概念
etl工具nifi使用系列(二):简单数据处理processor的使用
etl工具nifi使用系列(三):关于nifi Expression Language 表达式
etl工具nifi使用系列(四):打印日志调试
etl工具nifi使用系列(五):与外部交互(HDFS、mysql、kafka)
etl工具nifi使用系列(六):使用ExecuteScript执行脚本
etl工具nifi使用系列(七):开发自己的processor
etl工具nifi使用系列(八):调用rest api

处理数据:

AttributeToJson:将流数据的属性转换为json

配置attributes list:添加属性名称,可以将属性名称和属性值拼接为json键值对。
destination如果选择是flowfile-attribute,则会新增一个名为“JSONAttributes“的json类型新属性。
属性转json

EvaluateJsonPath:使用jsonPath表达式语言获取json文件的节点和内容。

EvaluateJsonPath
Jsonpath与XPath的语法结构近似,可以参考以下博客。
地址:http://www.cnblogs.com/kill0001000/p/4884803.html

EvaluateXPath:通过xPath解析xml文件。

可以配置选项中Destination选择flow-attribute操作流的节点。
Return Type选择string返回结果为字符串。添加属性(corpcode),添加属性获取规则(/result/scheme/tool_info/attribute::corpcode)获取xml文件中节点下的属性。
或者(/result/scheme/tool_info)获取xml文件中节点中的内容。
EvaluateXPath组件应用XPath对xml进行操作,关于XPath的具体使用方法参考:http://www.w3school.com.cn/xpath/index.asp

EvaluateXQuery:获取xml中多个节点,并将他们拆分成多个流,基于XQuery表达式语言。

XQuery参考:http://w3school.com.cn/xquery/xquery_example.asp

SplitText:将文件按照行分割,Line Split Count参数设置分割步长

SplitJson:拆分json数组,勾选failure、original

JsonPath Expression:选择json中需要拆分的字段名称,该字段名称中的value为json格式的多条数据,组件会将value中的多条数据拆分成数量相等的数据流,并舍弃拆分字段名称value值之外的所有数据。
jsonPath:$.name[*]
原始数据:{“name”: [{“last”: “li”},{“first”: “wang”}],”testdata”: “test”}
分割后后变成两条:
{“last”:”li”}
{“first”:”wang”}
如果整体数据就是jsonArray的形式,jsonPah可以用$.*。另外如果文件名重复,可以使用updateAttribute更改filename,设置为uuid。
splitJson

存储数据:

PutElasticsearch5:将数据存储到ES中,勾选全部三个选项

Putfile:配置接收文件路径,勾选failure、success

数据分流:

RouteOnAttribute
RouteOnContent :使用正则匹配flow-content的内容。需要添加一个动态属性,属性名称将会作为一个新的relationship输出,属性值将作为匹配的规则。
以下是从数据库取出数据,判断是否是多条的例子:

从数据库取出数据判断是否是多条的例子

正则表达式 ^\[(.*)\]$ ,匹配以[开始 ] 结束的内容

RouteOnContent配置
RouteText

数据压缩:

CompressContent

数据加密:

EncryptContent