最近在小破站上学Flink,跟着做 “Flink Table API读取Kafka数据,并将结果sink到Kafka中”这样一个小练习,感觉平平无奇,但是一直运行报错。内心一阵抓狂,WTF!
废话少叙,切入正题。
使用的是 Flink-1.13.0,Scala版本是 2.12,JDK版本 1.8。
开始,我是这样写的:
1.pom 依赖:
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-java</artifactId>
<version>1.13.0</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-streaming-java_2.12</artifactId>
<version>1.13.0</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-clients_2.12</artifactId>
<version>1.13.0</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table-planner-blink_2.12</artifactId>
<version>1.13.0</version>
</dependency>
<!--<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-table-api-java-bridge_2.12</artifactId>
<version>1.13.0</version>
</dependency>-->
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-csv</artifactId>
<version>1.10.1</version>
</dependency>
<dependency>
<groupId>org.apache.flink</groupId>
<artifactId>flink-connector-kafka_2.12</artifactId>
<version>1.11.3</version>
</dependency>
</dependencies>
2.代码
// 1.创建执行环境
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(1);
StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env);
// 2.连接kafka,读取数据
tableEnv.connect(new Kafka()
.version("0.11")
.topic("sensor")
.property("zookeeper.connect", "192.168.56.150:2181")
.property("bootstrap.servers", "192.168.56.150:9092")
) // 连接kafka
.withFormat(new Csv()) // 定义数据格式化方法: 按照Csv格式进行格式化
.withSchema(
new Schema()
.field("id", DataTypes.STRING())
.field("timestamp", DataTypes.BIGINT())
.field("temp", DataTypes.DOUBLE())
) //定义表结构
.createTemporaryTable("inputTable"); // 创建临时表
// 3.过滤数据
Table inputTable = tableEnv.from("inputTable"); // 读取出表
tableEnv.toAppendStream(inputTable, Row.class).print();
Table resultTable = inputTable.select("id, temp").filter("id === 'sensor_5'");
// 4.建立Kafka连接,将结果输出到不同的topic下
tableEnv.connect(new Kafka()
.version("0.11")
.topic("sensor_simple")
.property("zookeeper.connect", "192.168.

本文记录了使用 Flink 1.13.0 的 Table API 从 Kafka 中读取数据并将其结果写回 Kafka 的过程中遇到的错误及解决方案。在尝试使用已过时的 `tableEnv.connect` 方法后,改为使用 `executeSql`。错误提示缺少 CSV 描述器,通过更新相关依赖解决问题。接着因 Kafka 连接器版本问题导致新的异常,升级连接器版本后,虽然仍有控制台错误,但程序能正常运行并完成数据的读写操作。

8448

被折叠的 条评论
为什么被折叠?



