1、Flink connectors
关于Flink connectors,Flink 1.1提供了许多内置的第三方连接器,这些connectors包括:
Apache Kafka (sink/source)
Elasticsearch (sink)
Elasticsearch 2x (sink)
Hadoop FileSystem (sink)
RabbitMQ (sink/source)
Amazon Kinesis Streams (sink/source)
Twitter Streaming API (source)
Apache NiFi (sink/source)
Apache Cassandra (sink)
Redis (sink)
可以看到,第三方软件中,可以作为source的软件有:
Apache Kafka、RabbitMQ、Twitter Streaming API和Apache NiFi。
可以作为sink的软件包括Apache Kafka、Apache Cassandra、Redis等。
除了Flink内置支持的这些第三方软件之外,Flink也提供了自定义的source以及自定义的Sink。
2、关于Sink to JDBC
Flink的DataStream在计算完成后,就要将结果输出,目前除了上述提到的Kafka、Redis等之外,Flink也提供了其他几种方式:
writeAsText() / TextOutputFormat: 将元素按照行输出,每行当做一个字符串
writeAsCsv(...) / CsvOutputFormat: 将每行的元组按照特定的格式划分,然后输出到csv
print() / printToErr() :标准输出,错误输出。也是把每行按照字符串方式输出到taskmanager的out文件
writeUsingOutputFormat() / FileOutputFormat:自定义的文件输出
writeToSocket:根据序列化的sckame将元素写入socket
addSink:通过invoke方法自定义sink
其中,addSink就是我们这里要说的“自定义Flink sink”。既然是自定义,我们就可以将DataStream输出到JDBC,例如Mysql、Oracle。这在很多时候都很用。
一般情况下,我们通常会将DataStream sink到类似于Redis这种内存数据库,同时也会将结果入库,作为以后分析使用,例如sink到Mysql或oracle等JDBC。
Flink内置并没有支持JDBC,除了要覆写addSink方法外,我们还需要导入JDBC相应的依赖。
在大多数Maven管理的项目中,我们通常需要手动导入JDBC的依赖包。
3、Maven导入Oracle的依赖包
(1)获取oracle的lib包
这里要根据目标数据库的版本下载,也可以去数据库服务器中的“{ORACLE_HOME}\jdbc\lib\ojdbc.jar”,例如oracle12.1.0.2.0,此时对应的jar包是ojdbc6.jar。
(2)手动安装ojdbc6.jar到本地maven的repository
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=12.1.0.2.0 -Dpackaging=jar -Dfile=ojdbc6.jar
通常,cmd后先cd到刚才我们获得的ojdbc6.jar所在的路径,然后执行上边的命令即可。
(3)在pom.xml中添加引用