flinksql sink to sr often fail because of nullpoint

flink sql 和 flink ds sink starrocks 经常报NullpointException

  • 使用flink-starrocks-connector 版本: flink-connector-starrocks-1.2.6_flink-1.15.jar

在这里插入图片描述

翻阅StarRocksSink 源码 DefaultStreamLoader 类
在这里插入图片描述
解决方案: 到github 上查询目前最新的版本中对该bug 修复 下载源码查看 DefaultStreamLoader 类
在这里插入图片描述

在这里插入图片描述

重新下载源码到本地 打包后 打包后的 flink-starrocks-connector 版本: flink-connector-starrocks-1.2.7_flink-1.15.jar

重新编译代码 并上传到flink 集群 验证,有效

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FlinkSQLFlink 中提供的一种 SQL 执行方式,它可以让用户使用 SQL 语句进行流式数据处理。在 FlinkSQL 中,自定义 Sink 可以用于将处理结果输出到外部存储介质,如 MySQL、ES 等。 首先,在自定义 Sink 之前,需要先定义一个类,继承 Flink 的 RichSinkFunction 接口。该接口包含 open、invoke 和 close 三个方法,分别用于 Sink 的初始化、数据输出和资源释放。自定义 Sink 类应该重 invoke 方法,用于输出数据。 接下来,在 FlinkSQL 中,使用 CREATE TABLE 定义表时,可以指定表的输出方式为自定义 Sink。例如,定义一个输出流,并将结果输出到 MySQL 中,可以按以下方式定义表: ``` CREATE TABLE result ( word VARCHAR, count BIGINT ) WITH ( 'connector' = 'jdbc', 'url' = 'jdbc:mysql://localhost:3306/test', 'table-name' = 'result', 'username' = 'root', 'password' = 'root', 'sink.buffer-flush.max-rows' = '500', 'sink.buffer-flush.interval' = '2s', 'sink.max-retries' = '5' ) ``` 上述代码中,定义了一个名为 result 的表,其中 word 和 count 字段分别表示统计结果中的单词和出现次数。通过 WITH 关键字,在该表中定义了一个自定义 Sink,并指定了输出的目标地址为本地的 MySQL 数据库,配置了一些参数,如输出缓存刷的条数、刷的时间间隔以及重试次数等。 以上是 FlinkSQL 自定义 Sink 的简单介绍,通过自定义 Sink,在 FlinkSQL 中可以很方便地将处理结果输出到外部存储介质。同时,需要根据需求对自定义 Sink 进行优化,尽可能提高数据输出的效率和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值