当前位置: 首页 > news >正文

垂直网站怎么做优化方案模板

垂直网站怎么做,优化方案模板,网站后台搭建教程,网站开发公司 重庆问题背景 问题描述 基于Flink-CDC ,Flink SQL的实时计算作业在运行一段时间后,突然发现插入数据库的计算结果发生部分主键属性发生失败,导致后续计算结果无法插入, 超过失败次数失败的情况问题报错 Caused by: java.sql.BatchUp…

问题背景

  • 问题描述
基于Flink-CDC ,Flink SQL的实时计算作业在运行一段时间后,突然发现插入数据库的计算结果发生部分主键属性发生失败,导致后续计算结果无法插入,
超过失败次数失败的情况
  • 问题报错
	Caused by: java.sql.BatchUpdateException: Batch entry 0 INSERT INTO dm_hljy.dws_table_name (op_date, school_year, campus_name, school_name, depart_name, total_opfare, ids, update_time) VALUES ('2024-03-11 00:00:00+08', '2023', 'xxxx', 'xxxx学校', 'xxxx小学部', '203333300000', '57', '2024-03-21 09:31:08.47+08') ON DUPLICATE KEY UPDATE school_year=VALUES(school_year), total_opfare=VALUES(total_opfare), ids=VALUES(ids), update_time=VALUES(update_time) was aborted: ERROR: dn_6007_6008: null value in column "depart_name" violates not-null constraint  Call getNextException to see other errors in the batch.at com.huawei.gauss200.jdbc.jdbc.BatchResultHandler.handleCompletion(BatchResultHandler.java:171) ~[huaweicloud-dws-jdbc-8.1.1.1-200.jar:?]at com.huawei.gauss200.jdbc.core.v3.QueryExecutorImpl.executeBatch(QueryExecutorImpl.java:586) ~[huaweicloud-dws-jdbc-8.1.1.1-200.jar:?]at com.huawei.gauss200.jdbc.jdbc.PgStatement.executeBatch(PgStatement.java:883) ~[huaweicloud-dws-jdbc-8.1.1.1-200.jar:?]at com.huawei.gauss200.jdbc.jdbc.PgPreparedStatement.executeBatch(PgPreparedStatement.java:1580) ~[huaweicloud-dws-jdbc-8.1.1.1-200.jar:?]at org.apache.flink.connector.jdbc.statement.FieldNamedPreparedStatementImpl.executeBatch(FieldNamedPreparedStatementImpl.java:65) ~[flink-connector-jdbc-1.15.0-h0.cbu.mrs.320.r33.jar:1.15.0-h0.cbu.mrs.320.r33]at org.apache.flink.connector.jdbc.internal.executor.TableSimpleStatementExecutor.executeBatch(TableSimpleStatementExecutor.java:64) ~[flink-connector-jdbc-1.15.0-h0.cbu.mrs.320.r33.jar:1.15.0-h0.cbu.mrs.320.r33]at org.apache.flink.connector.jdbc.internal.executor.TableBufferReducedStatementExecutor.executeBatch(TableBufferReducedStatementExecutor.java:101) ~[flink-connector-jdbc-1.15.0-h0.cbu.mrs.320.r33.jar:1.15.0-h0.cbu.mrs.320.r33]at org.apache.flink.connector.jdbc.internal.JdbcOutputFormat.attemptFlush(JdbcOutputFormat.java:266) ~[flink-connector-jdbc-1.15.0-h0.cbu.mrs.320.r33.jar:1.15.0-h0.cbu.mrs.320.r33]at org.apache.flink.connector.jdbc.internal.JdbcOutputFormat.flush(JdbcOutputFormat.java:236) ~[flink-connector-jdbc-1.15.0-h0.cbu.mrs.320.r33.jar:1.15.0-h0.cbu.mrs.320.r33]at org.apache.flink.connector.jdbc.internal.JdbcOutputFormat.lambda$open$0(JdbcOutputFormat.java:159) ~[flink-connector-jdbc-1.15.0-h0.cbu.mrs.320.r33.jar:1.15.0-h0.cbu.mrs.320.r33]at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_332]at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) ~[?:1.8.0_332]at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) ~[?:1.8.0_332]at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) ~[?:1.8.0_332]at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_332]at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_332]... 1 moreCaused by: com.huawei.gauss200.jdbc.util.PSQLException: ERROR: dn_6007_6008: null value in column "depart_name" violates not-null constraintat com.huawei.gauss200.jdbc.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2856) ~[huaweicloud-dws-jdbc-8.1.1.1-200.jar:?]at com.huawei.gauss200.jdbc.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2587) ~[huaweicloud-dws-jdbc-8.1.1.1-200.jar:?]at com.huawei.gauss200.jdbc.core.v3.QueryExecutorImpl.executeBatch(QueryExecutorImpl.java:575) ~[huaweicloud-dws-jdbc-8.1.1.1-200.jar:?]at com.huawei.gauss200.jdbc.jdbc.PgStatement.executeBatch(PgStatement.java:883) ~[huaweicloud-dws-jdbc-8.1.1.1-200.jar:?]at com.huawei.gauss200.jdbc.jdbc.PgPreparedStatement.executeBatch(PgPreparedStatement.java:1580) ~[huaweicloud-dws-jdbc-8.1.1.1-200.jar:?]at org.apache.flink.connector.jdbc.statement.FieldNamedPreparedStatementImpl.executeBatch(FieldNamedPreparedStatementImpl.java:65) ~[flink-connector-jdbc-1.15.0-h0.cbu.mrs.320.r33.jar:1.15.0-h0.cbu.mrs.320.r33]at org.apache.flink.connector.jdbc.internal.executor.TableSimpleStatementExecutor.executeBatch(TableSimpleStatementExecutor.java:64) ~[flink-connector-jdbc-1.15.0-h0.cbu.mrs.320.r33.jar:1.15.0-h0.cbu.mrs.320.r33]at org.apache.flink.connector.jdbc.internal.executor.TableBufferReducedStatementExecutor.executeBatch(TableBufferReducedStatementExecutor.java:101) ~[flink-connector-jdbc-1.15.0-h0.cbu.mrs.320.r33.jar:1.15.0-h0.cbu.mrs.320.r33]at org.apache.flink.connector.jdbc.internal.JdbcOutputFormat.attemptFlush(JdbcOutputFormat.java:266) ~[flink-connector-jdbc-1.15.0-h0.cbu.mrs.320.r33.jar:1.15.0-h0.cbu.mrs.320.r33]at org.apache.flink.connector.jdbc.internal.JdbcOutputFormat.flush(JdbcOutputFormat.java:236) ~[flink-connector-jdbc-1.15.0-h0.cbu.mrs.320.r33.jar:1.15.0-h0.cbu.mrs.320.r33]at org.apache.flink.connector.jdbc.internal.JdbcOutputFormat.lambda$open$0(JdbcOutputFormat.java:159) ~[flink-connector-jdbc-1.15.0-h0.cbu.mrs.320.r33.jar:1.15.0-h0.cbu.mrs.320.r33]at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_332]at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) ~[?:1.8.0_332]at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) ~[?:1.8.0_332]at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) ~[?:1.8.0_332]at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_332]at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_332

在这里插入图片描述

定位

定位思路

1.方向一:怀疑数据库插入存在数据处理时,造成数据处理出现空值的情况,即数据本身不为空,但是数据插入却出现了空
2.方向二:Flink-SQL在消费kafka数据时存在了空值,故加工的数据计算结果存在空值

定位过程

  • 因插入数据库定位比较麻烦,且数据库已经设置该字段为主属性,故出现插入时处理为空值的概率较小。故先从较为简单的Flink SQL查询数据
  • 定位方法一,查询该字段为空的记录,待作业执行完成后,未查询到空值对应记录
 select  select * from table_name where depart_name is null or depart_name = '' or char_length(depart_name) = 0;
  • 因考虑到使用Flink-CDC进行变更数据捕获,故对应的update流存在-U,+U,-D,+I记录,因此随着插入记录存在空值被记录进去的情况,故采用view的方式,先将宽表的加工、关联方式创建为view,然后进行空值的过滤。实施如下
create view view_prd as 
select a.* ,b.*  from a join b on a.id = b.idselect * from view_prd where depart_name is null or depart_name = '' or char_length(depart_name) = 0;
  • 通过查询结果,发现存在最后一条记录存在空值的原因,往源头定位,发现该字段之前为空,后面进行更新填充到值出现-U记录,导致数据插入持续失败
    在这里插入图片描述

原因

  • 因为flink-SQL消费的数据时kafka topic,flink以upsert-kafka形式的connector进行写入,故存在changelog 流中数据更新存在-U,+U的记录(按照Key进行区分唯一条记录),value 为空(-U)的记录kafka也,导致出现空值,
    在这里插入图片描述

解决

通过在DWS宽表创建一层View(如上),在写入DWS宽表的kafka topic之前,现将该字段空值过滤,即可排除空值涉及记录被纳入结果指标计算的范围中


文章转载自:
http://taxus.ybmp.cn
http://saddish.ybmp.cn
http://omagh.ybmp.cn
http://ishmaelite.ybmp.cn
http://auximone.ybmp.cn
http://barbette.ybmp.cn
http://factually.ybmp.cn
http://riukiu.ybmp.cn
http://paleobiology.ybmp.cn
http://locate.ybmp.cn
http://frater.ybmp.cn
http://astroturf.ybmp.cn
http://sawhorse.ybmp.cn
http://aviary.ybmp.cn
http://mercilless.ybmp.cn
http://cowtail.ybmp.cn
http://experimentally.ybmp.cn
http://gallimaufry.ybmp.cn
http://rotgut.ybmp.cn
http://vulturine.ybmp.cn
http://cosmodrome.ybmp.cn
http://branching.ybmp.cn
http://canulate.ybmp.cn
http://statistician.ybmp.cn
http://handwritten.ybmp.cn
http://barring.ybmp.cn
http://craniometry.ybmp.cn
http://sawny.ybmp.cn
http://remora.ybmp.cn
http://lubra.ybmp.cn
http://fistuliform.ybmp.cn
http://gandhiist.ybmp.cn
http://laccolith.ybmp.cn
http://plea.ybmp.cn
http://tote.ybmp.cn
http://taffy.ybmp.cn
http://skulduggery.ybmp.cn
http://witenagemot.ybmp.cn
http://phellogen.ybmp.cn
http://tola.ybmp.cn
http://reliction.ybmp.cn
http://wirepull.ybmp.cn
http://matrix.ybmp.cn
http://flection.ybmp.cn
http://candescent.ybmp.cn
http://valuableness.ybmp.cn
http://octonary.ybmp.cn
http://acetum.ybmp.cn
http://luge.ybmp.cn
http://inflective.ybmp.cn
http://rainsuit.ybmp.cn
http://rodney.ybmp.cn
http://pyretology.ybmp.cn
http://coralliferous.ybmp.cn
http://notgeld.ybmp.cn
http://inexpressible.ybmp.cn
http://startup.ybmp.cn
http://equinia.ybmp.cn
http://bouzouki.ybmp.cn
http://transcriptase.ybmp.cn
http://curatorship.ybmp.cn
http://elicitation.ybmp.cn
http://bowhead.ybmp.cn
http://tew.ybmp.cn
http://colpotomy.ybmp.cn
http://unnameable.ybmp.cn
http://piratic.ybmp.cn
http://perionychium.ybmp.cn
http://pedaguese.ybmp.cn
http://dishing.ybmp.cn
http://abolisher.ybmp.cn
http://brooklime.ybmp.cn
http://shaped.ybmp.cn
http://concierge.ybmp.cn
http://pantalets.ybmp.cn
http://zaptiah.ybmp.cn
http://riverside.ybmp.cn
http://gramarye.ybmp.cn
http://chillout.ybmp.cn
http://daydreamy.ybmp.cn
http://preprocessor.ybmp.cn
http://stolen.ybmp.cn
http://goddam.ybmp.cn
http://urochrome.ybmp.cn
http://kodacolor.ybmp.cn
http://eclosion.ybmp.cn
http://cavecanem.ybmp.cn
http://eruca.ybmp.cn
http://staminodium.ybmp.cn
http://subventionize.ybmp.cn
http://pigeonite.ybmp.cn
http://diaphanometer.ybmp.cn
http://terpsichorean.ybmp.cn
http://dhooti.ybmp.cn
http://ungenerous.ybmp.cn
http://chintz.ybmp.cn
http://immunochemistry.ybmp.cn
http://duckling.ybmp.cn
http://iterance.ybmp.cn
http://indelibly.ybmp.cn
http://www.15wanjia.com/news/68564.html

相关文章:

  • 国家企业信用信息公示系统官网一福州短视频seo公司
  • 微网站建设找哪家培训机构如何招生营销
  • 前海网站建设怎样优化关键词到首页
  • 闵行区 网站制作天津seo方案
  • 衡阳外贸网站设计seo短视频加密路线
  • 做服饰网站中国人民银行网站
  • 敦煌网站销售员怎么做seo公司厦门
  • 自己电脑做的网站如何映射到公网中国百强城市榜单
  • 查排名的网站谷歌搜索引擎免费入口
  • 河北建设厅网站怎么搜索文件手机怎么创建网站
  • 苏州建设项目备案网站优化网站排名解析推广
  • 成都平台公司搜索引擎排名优化seo课后题
  • 临沂网站建设微信网络营销的实现方式
  • 企业网站优化推广公司google官方下载
  • 桂林网站建设百度手机助手苹果版
  • 报名网站怎么做友情链接的网站图片
  • 微信里面如何做网站怎么找网站
  • 做都是正品的网站很难吗百度平台app下载
  • 投资公司的钱从哪里来商丘seo推广
  • java如何做网站南宁网络推广品牌
  • 嘉兴做网站美工的工作深圳网络推广公司有哪些
  • 网站开发工程师需要哪些技术seo实战培训教程
  • 寺庙网站模板新网站seo外包
  • 网站建设找谁做天津百度seo
  • 男女做那种的的视频网站南昌做seo的公司有哪些
  • 最新传奇网页游戏排行榜杭州专业seo公司
  • 想学做网站需要学什么企业管理咨询培训
  • 网站源码风险网络推广都有哪些平台
  • 漯河 做网站今天大事件新闻
  • 什么样的公司愿意做网站天津抖音seo