Flink—Sql接口

文档结构

官网教程:https://nightlies.apache.org/flink/flink-docs-release-1.17/zh/

概念同步

连接数据库

Flink 本身不自带 MySQL、Oracle 等第三方数据库的驱动包,只提供通用的 JDBC 连接器。连接具体数据库时,必须手动引入对应厂商的驱动 Jar 包,否则会报 ClassNotFoundException: com.mysql.cj.jdbc.Driver 一类的错误。

SQL 语法

sql 复制代码
select 'hello world!';


select current_timestamp;

# 查看可用函数
show functions;
  • 时态关联
sql 复制代码
SELECT o.order_id, o.total, c.country, c.zip
  FROM Orders AS o -- 订单流(事实表)
 inner JOIN Customers
   FOR SYSTEM_TIME AS OF o.proc_time AS c
    ON o.customer_id = c.id; -- 关联条件

Sql Hint

sql 复制代码
-- 覆盖查询语句中源表的选项
select id, name from kafka_table1 /*+ OPTIONS('scan.startup.mode'='earliest-offset') */;

sink.partitioner='round-robin'

表示轮询分发,让数据均匀写入 Kafka 所有分区,解决默认分区策略可能导致的数据倾斜问题。

  • BROADCAST
python 复制代码
CREATE TABLE t1 (id BIGINT, name STRING, age INT) WITH (...);
CREATE TABLE t2 (id BIGINT, name STRING, age INT) WITH (...);
CREATE TABLE t3 (id BIGINT, name STRING, age INT) WITH (...);

-- Flink 会使用 broadcast join,且表 t1 会被当作需 broadcast 的表。
SELECT /*+ BROADCAST(t1) */ * FROM t1 JOIN t2 ON t1.id = t2.id;

-- Flink 会在两个联接中都使用 broadcast join,且 t1 和 t3 会被作为需 broadcast 到下游的表。
SELECT /*+ BROADCAST(t1, t3) */ * FROM t1 JOIN t2 ON t1.id = t2.id JOIN t3 ON t1.id = t3.id;

-- BROADCAST 只支持等值的联接条件
-- 联接提示会失效,只能使用支持非等值条件联接的 nested loop join。
SELECT /*+ BROADCAST(t1) */ * FROM t1 join t2 ON t1.id > t2.id;

-- BROADCAST 不支持 `Full Outer Join`
-- 联接提示会失效,planner 会根据 cost 选择最合适的联接策略。
SELECT /*+ BROADCAST(t1) */ * FROM t1 FULL OUTER JOIN t2 ON t1.id = t2.id;

注意: BROADCAST 只支持等值的联接条件,且不支持 Full Outer Join。

  • SHUFFLE_HASH

  • SHUFFLE_MERGE

  • NEST_LOOP

注意:NEST_LOOP 同时支持等值的和非等值的联接条件。

================================== over =============================================

相关推荐
派小心.2 小时前
网站统计采样数据的误差核对
大数据·服务器·前端·数据库·人工智能·小程序·数据分析
JAVA_AI人工智能项目实战2 小时前
大模型结构演进.学习笔记
大数据·人工智能·语言模型·架构
古法老登瞎折腾3 小时前
大数据智能运维实战(二):准备一个可复现的运维实验环境
java·大数据·运维·spring ai·mcp
数字新视界3 小时前
机房动环监控助力智能管理
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
坐吃山猪4 小时前
ES08-ES使用IK分词器
大数据·elasticsearch·搜索引擎
nvd114 小时前
深入剖析 Apache Flink 流批双引擎的动态扩缩容架构:机制演进、状态重对齐与生产落地推导
架构·flink·apache
泡干脆面就番茄4 小时前
Hive-DML:Load-Insert-Export-Import四种数据进出方式
大数据·数据仓库·hive·hadoop
加百力4 小时前
沪指险守3700点,券商、银行午后发力,创业板跌近3%,半导体尾盘反扑,恒科指跌3%,科网股普跌
大数据
eBest数字化转型方案5 小时前
快消渠道 AI 落地路线:拍照、数据、决策三阶段的工程逻辑
大数据·人工智能
百胜软件@百胜软件5 小时前
百胜软件黄飞:让AI真正走进零售,把不确定性变成“胜券在握”
大数据·人工智能·零售