Flink SQL 基础操作

Flink SQL是建立在Apache Flink之上的SQL处理引擎,它允许用户以SQL的方式处理流数据和批数据。以下是一些Flink SQL的基础操作:

一、环境准备

1.启动flink集群

bash 复制代码
./start-cluster.sh
  1. 启动sql-client
bash 复制代码
./sql-client.sh

二、数据源定义

  1. 创建表(Source):
  • 使用CREATE TABLE语句定义输入数据源,包括其schema、存储格式(如CSV、JSON等)以及连接器的配置(如Kafka、FileSystem等)。
  • 示例:
sql 复制代码
CREATE TABLE students (  
    id STRING,  
    name STRING,  
    age INT,  
    sex STRING,  
    clazz STRING  
) WITH (  
    'connector' = 'kafka',  
    'topic' = 'students',  
    'properties.bootstrap.servers' = 'localhost:9092',  
    'format' = 'csv'  
);

三、数据处理

  1. 编写SQL查询:
  • 使用标准的SQL语句对数据进行查询、过滤、聚合等操作。
  • 示例:
sql 复制代码
SELECT id, name, age  
FROM students  
WHERE age > 18;

四、数据输出

  1. 创建表(Sink):
  • 使用CREATE TABLE语句定义输出数据源,用于将处理后的数据写入外部系统,如Kafka、数据库等。
  • 示例:
sql 复制代码
CREATE TABLE results (  
    id STRING,  
    name STRING,  
    age INT  
) WITH (  
    'connector' = 'kafka',  
    'topic' = 'results',  
    'properties.bootstrap.servers' = 'localhost:9092',  
    'format' = 'csv'  
);
  1. 插入数据:
  • 使用INSERT INTO语句将查询结果写入Sink表。
  • 示例:
sql 复制代码
INSERT INTO results  
SELECT id, name, age  
FROM students  
WHERE age > 18;

五、执行与监控

  1. 执行SQL语句:
  • 在Flink SQL客户端或程序中执行SQL语句。
  • 可以通过Flink的Dashboard或其他监控工具来查看作业的执行状态和性能指标。
  1. 结果展示:
  • Flink SQL客户端支持多种结果显示模式,如表格模式、变更日志模式和Tableau模式,可以根据需要设置。

六、其他操作

  1. 动态表:
  • Flink SQL中的表是动态表,支持对流数据的实时查询和处理。
  1. Join操作:
  • Flink SQL支持多种Join方式,包括Regular Joins、Interval Joins、Temporal Joins和Lookup Joins,用于处理表之间的关联查询。
  1. 窗口函数:
  • Flink SQL支持窗口函数,用于对时间序列数据进行分组和聚合操作。

注意事项

  • 在进行Flink SQL操作时,需要确保已经正确配置了Flink环境,并且已经添加了必要的依赖库。
  • Flink SQL的语法和功能可能会随着Flink版本的更新而发生变化,因此建议查阅最新的官方文档以获取准确的信息。

样例操作

1、 从csv中读取数据

sql 复制代码
CREATE TABLE well_casting_alarm (
    _id VARCHAR,
    comCode VARCHAR,
	wellCode VARCHAR,
	uuid VARCHAR,
	type INT,
	alarmType INT,
	alarmGrade INT,
	zp INT,
	startAlarmTime TIME,
	startAlarmValue DECIMAL,
	threshold INT,
	warnStatus INT,
	isDeal INT,
	createTime TIME,
	_class VARCHAR
) WITH ( 
    'connector' = 'filesystem',
    'path' = '/wfg/data/sjzz.wellCastingAlarm0606.csv',
    'format' = 'csv'
);

2、查看所有表

sql 复制代码
Flink SQL> show tables;
+----------------------+
|           table name |
+----------------------+
| employee_information |
|   well_casting_alarm |
+----------------------+
2 rows in set

3、删除表

sql 复制代码
DROP TABLE well_casting_alarm;

4、查询数据

sql 复制代码
select *from well_casting_alarm limit 1;

5、删除一条数据

sql 复制代码
DELETE FROM well_casting_alarm where '_id'='_id';
相关推荐
nvd112 小时前
Flink 批处理驱动的湖仓 AI 财务研报流水线:从双流广播汇聚到 Agent 智能决策与原生 Iceberg 落盘全景实战
大数据·人工智能·flink
俊哥大数据10 小时前
Flink 2.3.0 从理论到实践 —— 第 14 章 Flink CDC 3.x 数据同步
大数据·flink·flinkcdc
troy12815 小时前
Flink 详细介绍与操作全指南:从入门到精通
大数据·flink
俊哥大数据15 小时前
Flink 2.3.0 从理论到实践 —— 第 8 章 窗口(Window)
大数据·flink
l1t16 小时前
DeepSeek总结的有符号、无符号、未对齐:从汇编到 SQL 的教训
汇编·数据库·sql
夜雪一千16 小时前
MySQL 如何提高查询速度:从索引、SQL、表结构到实战调优
android·sql·mysql
for_ever_love__17 小时前
LangChain Text-to-SQL:让不会写 SQL 的人查数据库
数据库·sql·langchain·大模型·agent·rag·问答
天天喝旺仔1 天前
MySQL 索引原理与慢查询优化实战:从 B+ 树到执行计划调优
数据库·sql·mysql·性能优化
专业程序开发源1 天前
flask家电故障预测系统92491-计算机课程设计/毕业设计
vscode·python·sql·算法·flask·课程设计