这是一个使用 Flink SQL 从 Kafka 中消费数据并写入 MySQL 的示例。在这个示例中,我们将假设有一个 Kafka 主题 “input_topic”,它产生格式为 (user_id: int, item_id: int, behavior: string, timestamp: long) 的数据,我们需要把这些数据写入名为"output_table"的 MySQL 表中。
首先,我们需要创建表达 Kafka 和 MySQL 的源和目标表条目:
CREATE TABLE kafka_source (
user_id INT,
item_id INT,
behavior STRING,
timestamp AS TO_TIMESTAMP(FROM_UNIXTIME(`timestamp` / 1000, 'yyyy-MM-dd HH:mm:ss')),
WATERMARK FOR timestamp as timestamp - INTERVAL '5' SECOND
) WITH (
'connector' = 'kafka',
'topic' = 'input_topic',
'scan.startup.mode' = 'earliest-offset',
'properties.bootstrap.servers' = 'localhost:9092',
'format' = 'json'
);
CREATE TABLE mysql_sink (
user_id INT,
item_id INT,
behavior STRING,
timestamp TIMESTAMP(3)
) WITH (
'connector' = 'jdbc',
'url' = 'jdbc:mysql://localhost:3306/test',
'table-name' = 'output_table',
'username' = 'test',
'password' = '123456'
);
进行消费 Kafka 和写入 MySQL 的操作:
INSERT INTO mysql_sink SELECT * FROM kafka_source;
首先,运行上述 SQL 创建对应 Kafka 和 MySQL 的表。其次,运行 INSERT INTO 语句进行从 Kafka 消费数据并将结果写入 MySQL 表的操作。这是一个基本的操作,你可以根据自己的需求进行相应的修改。
注意,需要根据实际的 Kafka 和 MySQL 的配置,如地址、用户名和密码,来修改上述 SQL 语句中的对应部分。
另外,Flink SQL 对 SQL 语句的语法进行了些许改变以适应流处理的特性,如在 kafka_source 表中的 WATERMARK 和 timestamp 的定义。
这个例子中,你需要确保已经引入了 flink-connector-kafka_2.11、flink-connector-jdbc_2.11 和 mysql-connector-java 等相关的 jar 包依赖。
标签:timestamp,SQL,mysql,demo,flink,Kafka,MySQL,kafka,id From: https://blog.csdn.net/qq_45704048/article/details/139219951