pyflink过滤kafka数据

py 复制代码
from pyflink.table import (TableEnvironment, EnvironmentSettings)

# 输入、输出、过滤条件
columns_in = [
...
]

columns_out = [
...
]
filter_condition = "name = '蒋介石' and sex = '男'"


# 创建执行环境

t_env = TableEnvironment.create(EnvironmentSettings.in_streaming_mode())
t_env.get_config().get_configuration().set_string("pipeline.jars", "file:///work/flink-sql-connector-kafka-3.2.0-1.19.jar")

source_topic = "foo"
sink_topic = "baa"
kafka_servers = "kafka:9092"
kafka_consumer_group_id = "flink consumer"

columnstr = ','.join([f"`{col}` VARCHAR"  for col in columns_in])
source_ddl = f"""
CREATE TABLE kafka_source({columnstr}) WITH (
              'connector' = 'kafka',
              'topic' = '{source_topic}',
              'properties.bootstrap.servers' = '{kafka_servers}',
              'properties.group.id' = '{kafka_consumer_group_id}',
              'scan.startup.mode' = 'latest-offset',
              'format' = 'json'
            )
"""

columnstr2 = ','.join([f"`{col}` VARCHAR"  for col in columns_out])
sink_ddl = f"""
CREATE TABLE kafka_sink ({columnstr2}
    ) with (
      'connector' = 'kafka',
      'topic' = '{sink_topic}',
      'properties.bootstrap.servers' = '{kafka_servers}',
      'properties.group.id' = '{kafka_consumer_group_id}',
      'scan.startup.mode' = 'latest-offset',
      'format' = 'json'
    )
"""
# 过滤字段
filtersql = f"""
insert into kafka_sink
select {
','.join([f"`{col}`"  for col in columns_out])
}
from kafka_source
where {filter_condition}
"""
t_env.execute_sql(filtersql)
t_env.execute_sql(source_ddl)
t_env.execute_sql(sink_ddl)
相关推荐
聪明的墨菲特i4 分钟前
Python爬虫项目 | 一、网易云音乐热歌榜歌曲
爬虫·python
kali-Myon7 分钟前
ctfshow-web入门-SSTI(web369-web372)下
前端·python·学习·web安全·flask·web·ssti
chyun201116 分钟前
基于YOLO实现滑块验证码破解
python·c#
Python图像识别-119 分钟前
基于yolov8、yolov5的鱼类检测识别系统(含UI界面、训练好的模型、Python代码、数据集)
开发语言·python·yolo
hummhumm31 分钟前
第 14 章 -Go语言 错误处理
java·开发语言·前端·后端·python·sql·golang
linzhisong41 分钟前
LayUI组件国际化多国语言版本脚本-上篇提取中文字符
前端·javascript·python·layui
codists42 分钟前
《Django 5 By Example》阅读笔记:p17-p53
python·django
小馒头学python1 小时前
机器学习中的概率超能力:如何用朴素贝叶斯算法结合标注数据做出精准预测
人工智能·python·算法·机器学习
Once2gain1 小时前
dlopen: cannot load any more object with static TLS & sklearn, HPOBench, smac3
人工智能·python·sklearn
B站计算机毕业设计超人1 小时前
计算机毕业设计Python+大模型中医养生问答系统 知识图谱 医疗大数据 中医可视化 机器学习 深度学习 人工智能 大数据毕业设计
大数据·人工智能·爬虫·python·深度学习·机器学习·知识图谱