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名。

相关推荐
清平乐的技术专栏13 小时前
【Flink学习】(二)Flink 本地环境搭建,运行第一个入门程序
大数据·flink
大大大大晴天13 小时前
Flink技术实践:RocksDB 状态后端技术解密
大数据·flink
清平乐的技术专栏1 天前
【FlinkSQL笔记】(二)Flink SQL 基础语法详解
笔记·sql·flink
码上滚雪球1 天前
Flink Agents 深度解读:当实时数据流遇上 AI 智能体
大数据·人工智能·flink·滚雪球
若兰幽竹1 天前
【Flink 电商用户行为分析】从数据采集到实时决策:构建全链路用户行为分析系统设计
大数据·flink·实时数据分析·电商用户行为数据分析
清平乐的技术专栏1 天前
【FlinkSQL笔记】(一)什么是Flink SQL
笔记·sql·flink
清平乐的技术专栏1 天前
【FlinkSQL笔记】(三)Flink SQL 核心重难点(窗口函数、水印)
笔记·sql·flink
清平乐的技术专栏2 天前
【Flink学习】(五)Flink 并行度与任务链,任务运行核心原理
flink
清平乐的技术专栏2 天前
【Flink学习】(六)Flink 三大时间语义 + 水位线 Watermark
大数据·学习·flink
清平乐的技术专栏2 天前
【Flink学习】(一)初识 Flink,大数据实时计算核心认知
大数据·flink