SparkSQL、HiveSQL、FlinkSQL的解析和优化器
这节课讲第2个案例: 数据源 (source)和 目的地 (sink) 都是 kafka
工程里加 POM 依赖:
- flink table planner
- flink connector files
- flink json
- hadoop client
~~~~~~~~~~~
教程里的版本是 1.15
演示的代码是3个 sql ,创建 2个表,执行 insert 语句:
file_source 数据来源(json 文件)
print_sink 结果打印到控制台 (print 控制台)
先启动 hdfs 集群,才能在 file_source 调用 hdfs://bigdata01:9000/stu.json )
对比 stream 模式 和 batch 模式 , steam 是一条条记录产生,而 batch是全部记录一次产生(离线模式)
将 sql 语句转换为 ast 抽象语法树,操作 ast 就能把 sql 的计算逻辑转化为代码(calcite 引擎)
sql parser
sql validate
生成 logical plan
生成 optimized logical plan
生成 flink physical plan
生成 flink execution plan 转换为算子代码
hive SQL, spark SQL 都是基于离线数据
flink SQL 可支持实时数据
中间的 SQL 会动态触发,每次输入表(动态表)新增数据,就会触发1次,更新输出表的结果数据
(右边相当于自动在做 insert 和 update )