Flink SQL作业快速入门

Flink SQL快速入门_实时计算 Flink版(Flink)-阿里云帮助中心

这段代码是使用Apache Flink SQL来处理来自阿里云日志服务(SLS)的GitHub事件数据。它创建了一个临时表gh_event,该表连接到SLS以读取GitHub事件流,并设置了一些Flink作业的配置参数。最后,它执行了一个查询,用于计算当天获得新星标(star)最多的前10个GitHub仓库。

下面详细解释每个部分:

创建临时表 gh_event

sql 复制代码
CREATE TEMPORARY TABLE gh_event(
  ...
) WITH (
  'connector' = 'sls',
  ...
);

这段DDL语句定义了一个名为gh_event的临时表,它实际上是一个外部表,因为它通过WITH子句中的配置与阿里云的日志服务相连。这个表代表了GitHub上发生的实时事件,例如用户对项目进行的操作(fork、watch等)。WITH子句中包含了一系列键值对,用来指定如何连接到SLS以及如何读取数据,包括项目名称、端点、日志存储名称和访问凭证等信息。

设置Flink作业配置

sql 复制代码
SET 'table.exec.mini-batch.enabled'='true'; 
SET 'table.exec.mini-batch.allow-latency'='2s'; 
SET 'table.exec.mini-batch.size'='4096'; 
SET 'parallelism.default' = '4';

这些SET语句用于配置Flink作业的行为:

  • mini-batch.enabled:启用mini-batch模式,可以减少资源消耗。
  • mini-batch.allow-latency:设定允许的最大延迟为2秒,即每2秒处理一次收集到的数据。
  • mini-batch.size:指定了mini-batch的最大大小为4096条记录。
  • parallelism.default:设定了作业默认并行度为4,意味着如果有足够的资源,作业将以4个并发任务运行。

查询当天新增星标Top 10仓库

sql 复制代码
SELECT DATE_FORMAT(created_at_ts, 'yyyy-MM-dd') as `date`, repo_name, COUNT(*) as num
FROM gh_event
WHERE type = 'WatchEvent' AND DATE_FORMAT(created_at_ts, 'yyyy-MM-dd') = DATE_FORMAT(NOW(), 'yyyy-MM-dd')
GROUP BY DATE_FORMAT(created_at_ts, 'yyyy-MM-dd'), repo_name
ORDER BY num DESC
LIMIT 10;

这段SQL查询从gh_event表中筛选出所有类型为WatchEvent(即用户给某个仓库加星标)的事件,并且只选择当天的事件。然后,它根据仓库名(repo_name)分组,统计每个仓库收到的新星标的数量,最终按星标数量降序排列,取前10名。

相关推荐
java叶新东老师4 小时前
git stash 命令详解
linux·运维·flink
java叶新东老师9 小时前
linux 部署 flink 1.15.1 并提交作业
linux·运维·flink
花下的晚风9 小时前
模拟flink处理无限数据流
大数据·flink
小悟空9 小时前
[AI 生成] Flink 面试题
大数据·面试·flink
livemetee9 小时前
Flink2.0学习笔记:Stream API 常用转换算子
大数据·学习·flink
阿里云大数据AI技术14 小时前
[VLDB 2025]面向Flink集群巡检的交叉对比学习异常检测
大数据·人工智能·flink
lucky_syq16 小时前
Flink窗口:解锁流计算的秘密武器
大数据·flink
明天好,会的16 小时前
从Spark/Flink到WASM:流式处理框架的演进与未来展望
flink·spark·wasm
花下的晚风3 天前
如何搭建Linux环境下的flink本地集群
linux·flink
lifallen3 天前
Flink堆状态后端核心:CopyOnWriteStateMap解析
java·大数据·数据结构·数据库·算法·flink·哈希算法