- Apache NiFi 连接器
- 安装 Apache NiFi
- Apache NiFi Source
- Apache NiFi Sink
Apache NiFi 连接器
Apache NiFi 连接器提供了可以读取和写入的 Source 和 Sink。使用这个连接器,需要在工程中添加下面的依赖:
<dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-nifi_2.11</artifactId><version>1.9.0</version></dependency>
注意这些连接器目前还没有包含在二进制发行版中。添加依赖、打包配置以及集群运行的相关信息请参考 这里。
安装 Apache NiFi
安装 Apache NiFi 集群请参考 这里。
Apache NiFi Source
该连接器提供了一个 Source 可以用来从 Apache NiFi 读取数据到 Apache Flink。
NiFiSource(…) 类有两个构造方法。
NiFiSource(SiteToSiteConfig config)- 构造一个NiFiSource(…),需要指定参数 SiteToSiteConfig ,采用默认的等待时间 1000 ms。NiFiSource(SiteToSiteConfig config, long waitTimeMs)- 构造一个NiFiSource(…),需要指定参数 SiteToSiteConfig 和等待时间(单位为毫秒)。
示例:
StreamExecutionEnvironment streamExecEnv = StreamExecutionEnvironment.getExecutionEnvironment();SiteToSiteClientConfig clientConfig = new SiteToSiteClient.Builder().url("http://localhost:8080/nifi").portName("Data for Flink").requestBatchCount(5).buildConfig();SourceFunction<NiFiDataPacket> nifiSource = new NiFiSource(clientConfig);
val streamExecEnv = StreamExecutionEnvironment.getExecutionEnvironment()val clientConfig: SiteToSiteClientConfig = new SiteToSiteClient.Builder().url("http://localhost:8080/nifi").portName("Data for Flink").requestBatchCount(5).buildConfig()val nifiSource = new NiFiSource(clientConfig)
数据从 Apache NiFi Output Port 读取,Apache NiFi Output Port 也被称为 “Data for Flink”,是 Apache NiFi Site-to-site 协议配置的一部分。
Apache NiFi Sink
该连接器提供了一个 Sink 可以用来把 Apache Flink 的数据写入到 Apache NiFi。
NiFiSink(…) 类只有一个构造方法。
NiFiSink(SiteToSiteClientConfig, NiFiDataPacketBuilder<T>)构造一个NiFiSink(…),需要指定SiteToSiteConfig和NiFiDataPacketBuilder参数 ,NiFiDataPacketBuilder可以将Flink数据转化成可以被NiFi识别的NiFiDataPacket.
示例:
StreamExecutionEnvironment streamExecEnv = StreamExecutionEnvironment.getExecutionEnvironment();SiteToSiteClientConfig clientConfig = new SiteToSiteClient.Builder().url("http://localhost:8080/nifi").portName("Data from Flink").requestBatchCount(5).buildConfig();SinkFunction<NiFiDataPacket> nifiSink = new NiFiSink<>(clientConfig, new NiFiDataPacketBuilder<T>() {...});streamExecEnv.addSink(nifiSink);
val streamExecEnv = StreamExecutionEnvironment.getExecutionEnvironment()val clientConfig: SiteToSiteClientConfig = new SiteToSiteClient.Builder().url("http://localhost:8080/nifi").portName("Data from Flink").requestBatchCount(5).buildConfig()val nifiSink: NiFiSink[NiFiDataPacket] = new NiFiSink[NiFiDataPacket](clientConfig, new NiFiDataPacketBuilder<T>() {...})streamExecEnv.addSink(nifiSink)
更多关于 Apache NiFi Site-to-Site Protocol 的信息请参考 这里。
