Flink Sql -- toAppendStream doesn‘t support consuming update and delete changes which

本文介绍了如何在Flink中将SQL查询的Table转换为DataStream并进行打印。由于MySQL等动态表支持update和delete操作,直接使用toAppendStream会报错。解决方法是使用toRetractStream,它的输出包括一个boolean值和Row,true表示insert,false表示update/delete。通过table.toRetractStream[Row].print()即可打印结果。此外,官方文档也提供了详细说明。

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

在Flink sql进行测试输出, 想把 sql查询的结果Table 转为DataStream 然后进行打印

当我们table.toAppendStream[Row]的时候 发现报错
在这里插入图片描述
其实这个因为我们sql 查的那个动态表 是Mysql 这类源, 他们是可以进行update,delete,insert操作的。

对于toAppendStream呢 是仅可以将追加流进行转换输出 比如kafka

所以我们使用

table.toRetractStream[Row].print() 即可
这操作呢打印结果是一个有两部分, 前面部分为boolean类型, 后面是你的select 其中 true表示insert ,false表示 update/delete

 table.toRetractStream[Row].print()  即可 
 tableEnv.toRetractStream(table,EventLog.class).print();

对于Table / sql 转 Stream 可以看官网也有详细的讲解
官网
在这里插入图片描述

### Flink SQL-client 1.19.1 版本特性 Flink 社区持续改进和完善 SQL-client 功能,在 1.19.1 版本中引入了一系列增强功能和优化措施。此版本增强了对复杂查询的支持,提升了性能表现,并增加了更多连接器选项来满足多样化的应用场景需求。 - **增强的查询处理能力**:支持更复杂的嵌套子查询结构以及多层聚合操作。 - **性能提升**:通过对内部执行计划生成机制进行了调整,减少了不必要的计算开销;同时针对分布式环境下的资源调度策略也做了相应优化[^1]。 - **新增加的数据源连接器**:除了已有的 Kafka 和 Hive 连接器外,还加入了对于 MongoDB、Elasticsearch 等多种外部存储系统的集成支持[^2]。 ### 安装指南 为了安装 Flink SQL-client 1.19.1,需先获取对应版本的二进制包并将其解压至目标目录: ```bash wget https://archive.apache.org/dist/flink/flink-1.19.1/flink-1.19.1-bin-scala_2.12.tgz tar -xzvf flink-1.19.1-bin-scala_2.12.tgz -C /opt/ cd /opt/flink-1.19.1 ``` 接着按照官方文档说明配置好必要的环境变量 `FLINK_HOME` 及路径设置,确保可以从任意位置调用 Flink 命令行工具[^3]。 最后根据实际应用情况下载所需的额外组件或插件,例如 MySQL CDC Connector: ```bash sudo -u flink wget https://repo1.maven.org/maven2/com/ververica/flink-connector-mysql-cdc/2.3.0/flink-connector-mysql-cdc-2.3.0.jar -P $FLINK_HOME/lib/ ``` 请注意上述命令中的链接指向的是特定版本(此处为 2.3.0),具体应依据项目需求选择合适的依赖项版本。 ### 使用教程 启动 Flink SQL-client 后可以通过交互式的命令提示符来进行各种数据库操作。下面是一个简单的例子展示如何创建一张基于 CSV 文件格式输入流上的表,并对其进行基本统计分析: ```sql CREATE TABLE my_table ( id BIGINT, name STRING, age INT ) WITH ( 'connector' = 'filesystem', 'path' = '/tmp/input.csv', 'format' = 'csv' ); SELECT COUNT(*), AVG(age) FROM my_table; ``` 此外还可以利用预加载好的 JDBC 或者其他类型的连接器实现与其他关系型数据库之间的无缝对接,方便快捷地完成数据迁移任务或是构建实时ETL管道[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值