Flink流计算编程--Flink sink to Oracle

本文介绍了如何在Flink中自定义Sink将DataStream数据输出到Oracle数据库。首先,讨论了Flink的connectors,包括可用的source和sink选项。接着,详细阐述了Flink使用JDBC连接Oracle的步骤,包括添加Oracle依赖、自定义实现RichSinkFunction,并在open方法中创建连接。最后,展示了具体的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于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中添加引用

Flink中将数据输出到Oracle数据库,需要进行以下几个步骤: 1. 首先,确保你已经获取了Oracle的ojdbc6.jar文件,并将其添加到项目的依赖中。你可以在pom.xml文件中添加以下代码来引用ojdbc6.jar: ```xml <!-- 添加oracle jdbc driver --> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>12.1.0.2.0</version> </dependency> ``` 这样,Flink就能够使用OracleJdbcDriver了。\[1\] 2. 在代码中,使用Java的sql类库建立与Oracle数据库的连接。在连接之前,需要告诉Flink我们要使用的JdbcDriver是Oracle的Driver。你可以使用以下代码来加载Oracle的Driver: ```java Class.forName("oracle.jdbc.OracleDriver"); ``` 这样,Flink就能够正确地加载Oracle的Driver了。\[2\] 3. 最后,你可以使用Flink的自定义Sink将数据输出到Oracle数据库。具体的实现方式可以根据你的需求来定制,但是你需要确保在输出之前已经建立了与Oracle数据库的连接,并且将数据正确地写入到数据库中。 综上所述,你可以按照以上步骤来实现将数据从Flink输出到Oracle数据库。 #### 引用[.reference_title] - *1* *2* *3* [Flink流计算编程--Flink sink to Oracle](https://blog.youkuaiyun.com/lmalds/article/details/52400805)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值