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类型新属性。

EvaluateJsonPath:使用jsonPath表达式语言获取json文件的节点和内容。
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。
存储数据:
PutElasticsearch5:将数据存储到ES中,勾选全部三个选项
Putfile:配置接收文件路径,勾选failure、success
数据分流:
RouteOnAttribute
RouteOnContent :使用正则匹配flow-content的内容。需要添加一个动态属性,属性名称将会作为一个新的relationship输出,属性值将作为匹配的规则。
以下是从数据库取出数据,判断是否是多条的例子:
正则表达式
^\[(.*)\]$
,匹配以
[
开始
]
结束的内容
RouteText
数据压缩:
CompressContent
数据加密:
EncryptContent