介绍
节>
,节> <节>
,节> 节> <节> <节> <节>
节> <节>
节> <节>
节> <>节没错,这一点你说的很对,在Flink 1.10中JDBC OutputFormat的基类,AbstractJDBCOutputFormat里面和这相关的变量DEFAULT_FLUSH_MAX_SIZE默认值是5000,所以在你学习测试时候由于测试数据少(少于5000年),数据一直在缓冲区中,直到数据源数据结束,作业也结束了,才将计算结果刷入MySQL,所以没有实时的(每条)写入MySQL。如下:节> <节>
节> <节>
到此,关于“为什么Flink无法实时写入MySQL”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
这篇文章主要介绍”为什么Flink无法实时写入MySQL”,在日常操作中,相信很多人在为什么Flink无法实时写入MySQL问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答“为什么Flink无法实时写入MySQL”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
<节> <节> <节> <节> <节> <节> <节> <节> <节> <节> <节> <节> <节> <节> <节> <节> <节> <节> <节> <节> <节> <节> <节> <强>本文强>主要分为以下三部分:,,,,,,,,,,,部分才能> <>部分,,,,,,,,,,,节>- <李>
问题描述
解决思路
李> <李>原因剖析,,,,,,,,,,,,,,
李> <强>问题描述强>
节>
![为什么Flink无法实时写入MySQL”>
,<节> <br/>
,</节> <>节相关代码片段:
,</节> <节> <br/>
,</节> <节> <>以前JDBCAppendTableSink.builder (),,,, .setDrivername (“com.mysql.jdbc.Driver"),,,, .setDBUrl (“jdbc: mysql://localhost/flink](/zixun/d/file/hulianwang/2021-08-25/2aac312b0723722cca32366f1713a13d.png )
,节> 节> <节> <节> <节>
<>强如何解决? 强>
节> 节> 节> <节> Flink 1.10这个问题是知道一秒钟,不知磨洋工的情况下,在初学时候非常容易遇上,那么真的是Flink不能实时写入MySQL吗?当然不是,上面代码基础之上简单的加上一行,就解决问题了:节> <节>
节> <节>
.... setBatchSize(1),//将写入MySQL的缓冲大小为1…节> <节> <节> <节>
<强>原因剖析强>
节> <>节没错,这一点你说的很对,在Flink 1.10中JDBC OutputFormat的基类,AbstractJDBCOutputFormat里面和这相关的变量DEFAULT_FLUSH_MAX_SIZE默认值是5000,所以在你学习测试时候由于测试数据少(少于5000年),数据一直在缓冲区中,直到数据源数据结束,作业也结束了,才将计算结果刷入MySQL,所以没有实时的(每条)写入MySQL。如下:节> <节>
节> <节>
![为什么Flink无法实时写入MySQL”>
</节> <节> <br/>
</节> <节>但这里还有个因素需要注意,那就是时间因素,上面DEFAULT_FLUSH_INTERVAL_MILLS默认值是0,这个相当于没有时间限制,一直等到缓冲区满了或者作业结束才能触发写出动作。</节> <节> <br/>
</节> <>节也就是有些初学者,发现问题,即使故意调试时候打上断点,不让作业结束,但是等到花儿都谢了,数据也没有写入到MySQL。</节> <节> <br/>
</节> <节>在Flink 1.10中AbstractJDBCOutputFormat有两个实现类:</节> <节> <br/>
</节> <节> <img src=](/zixun/d/file/hulianwang/2021-08-25/379dd3d06f33b5b93f3cd11e78fceb56.png )