nifi探索之处理器简介

来源:互联网 发布:versions for mac使用 编辑:程序博客网 时间:2024/06/06 00:15

Abstract

本文将主要介绍nifi中现有的processor(翻译https://nifi.apache.org/docs/nifi-docs/html/getting-started.html)


只有充分了解一个工具,我们才能够更好的利用这个工具。同样的道理,我们只有了解nifi中现有的Processor以及他们的特性和功能,才能够更加有效的创建数据流。Nifi提供了多种Processor,以适应不同的数据源,同时提供了对数据进行分流、转换、整合等多种操作的processors。我们在此并不会一一列举所有的processors,而是将最常用的processor列举出来,并按照功能进行说明。

  1. Data Transformation(数据转换)

    • CompressContent:负责压缩和解压缩
    • ConvertCharacterSet:改变flowfile中数据的编码格式
    • EncryptContent:负责加密和解密
    • ReplaceText:使用正则表达式对文本内容进行更改
    • TransormXML:采用XSLT将XML转换为其他格式的文档
    • JoltTransformJSON:将json内容转换为指定格式的json
  2. Routing and Mediation(路由)

    • ControlRate:进行流速控制
    • DetectDuplicate:基于用户设定的准则删除重复的flowfile
    • DistributeLoad: 通过向用户自定义的关系中分发部分数据来实现负载均衡或者取样
    • MonitorActivity: 用户可以设定一个时间间隔,如果在这段时间内没有数据流经指定的位置则会发送一个通知。同时用户也可以选择在数据恢复的时候收到通知
    • RouteOnAttribute:通过flowfile的属性对其进行分发到不同的relationship
    • ScanAttribute: 查看一个flowfile中用户自定义的属性,并判断是否有属性在用户自定义词典中存在
    • RouteOnContent: 用户可以指定一个正则表达式,当一个flowfile包含的内容符合该正则表达式,则将该flowfile分发到指定的relationship
    • ScanContent:用户可以自定义一个词典,并判断一个flowfile包含的数据中是否包含这些词来确定路径
    • ValidateXML: 用户可以自定义XML的文档结构,并通过一个XML 内容是否合法来确定flowfile的路径
  3. Database Access
    • ConvertJSONToSQL:将json文档内容转化为Insert或者Update SQL语句,然后传给PutSQL处理器执行
    • ExecuteSQL: 执行用户自定义的SELECT 语句,并将执行的结果以Avro的格式写入到一个flowfile中
    • PutSQL:通过Flowfile中的内容对数据库进行更新(flowfile包含的是一些数据库DDM语句)、
    • SelectHiveSQL:用户自定义一个HiveQL SELECT语句并在一个Apache Hive数据库中执行,并将查询结果一Avro或者CSV的格式写入到flowfile中
    • PutHiveQL:通过flowfile中包含的HiveQL DDM语句来对Hive数据库进行更新。
    • -
  4. Attribute Extraction(属性提取)
    • EvaluateJsonPath:用户需要给定一个JSONPath的表达式,这个表达式将对flowfile中的json内容进行操作。
    • EvaluateXPath:用户给定XPath的表达式,这个表达式将用来操作flowfile中的XML内容可以提取XML中指定的内容或者是替换指定的内容
    • EvaluateXQuery:用户给定一个XQuery的查询,并根据这个查询来对XML内容进行替换或者提取指定的内容,并放到用户设定的属性中。
    • ExtractText:用户提供一个或多个正则表达式,这些表达式将从文本内容中提取指定的内容,并保存在用户命名的属性中
    • HashAttribute:对用户自定义的一个属性列表进行哈希
    • HashContent:对flowfile中的内容计算哈希值,并将此哈希值作为flowfile的一个属性
    • IdentifyMimeType:通过flowfile包含的内容判定flowfile的类型,支持许多类型,例如:images,word processor documents,compression format
    • UpdateAttribute:添加一些用户定义的属性或者对已有用户自定义属性进行更改。
  5. Data Ingestion
    - GetFile:从硬盘中读取文件中的内容,并删除该文件
    - GetFTP:通过FTP读取一个远程的文件,并删除原始文件
    - GetJMSQueue:从JMS消息队列中下载消息,并将消息封装为flowfile
    - GetJMSTopic:从JMS topic中下载消息并封装为flowfile
    - GetHttp:给定一个Http或者Https的URL,处理器将会记录实体标记以及最后的更新日期以保证不会持续读取数据
    - ListenHttp:启动一个Http server,并监听连接请求。对于一个post请求,将请求的内容写入到flowfile中
    - ListenUDP:监听到来的UDP数据包,并将每个数据包封装为一个flowfile,并通过success relationship来传输flowfile
    - GetHDFS:监控HDFS中一个用户指定的目录,当一个文件进入HDFS时,就将改文件复制到nifi中并从HDFS中删除
    - ListHDFS/FetchHDFS:用户需要指定一个目录,这个目录下的每一个文件都将被封装为一个flowfile。
    - FetchS3Object:将亚马逊S3中对象的内容取出,并封装为flowfile
    - GetKafka:从kafaka中取出消息,封装为一个或者多个flowfile
    - GetMongo:通过执行一个用户查询命令从Mongo中取出数据,并封装为flowfile
    - GetTwitter:允许用户注册过滤器来监听Twitter或者一个企业终端,并将每个消息封装为flowfile
  6. Data Egress/Sending Data
    • PutEmail:向执行的收件人发送邮件。flowfile中的内容将作为邮件的附件
    • putFile:将flowfile中的内容写入到指定的目录下
    • PutFTP:将flowfile中的内容复制到一个FTP 服务器上
    • PutSFTP:将flowfile中的内容复制到一个SFTP服务器上
    • PutJMS:将flowfile中的内容作为JMS消息发送到JMS代理
    • PutSQL:flowfile中包含的是一些sql语句(Insert,update,delete),该处理器将执行sql语句。同时支持参数化的sql语句。
    • PutKafaka:将flowfile中的内容作为消息发送给Apache Kafaka,可以将flowfile中整个内容作为一个消息也可以指定分隔符将其封装为多个消息。
    • PutMongo:将flowfile中的内容insert或者update到Mongo中

如有误,欢迎指正~(未完待续~)

原创粉丝点击