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

相关推荐
Edingbrugh.南空3 小时前
Flink ClickHouse 连接器数据读取源码深度解析
java·clickhouse·flink
Edingbrugh.南空1 天前
Flink ClickHouse 连接器维表源码深度解析
java·clickhouse·flink
诗旸的技术记录与分享2 天前
Flink-1.19.0源码详解-番外补充3-StreamGraph图
大数据·flink
Edingbrugh.南空2 天前
Flink MySQL CDC 环境配置与验证
mysql·adb·flink
bxlj_jcj3 天前
深入Flink核心概念:解锁大数据流处理的奥秘
大数据·flink
Edingbrugh.南空3 天前
Flink SQLServer CDC 环境配置与验证
数据库·sqlserver·flink
Edingbrugh.南空3 天前
Flink OceanBase CDC 环境配置与验证
大数据·flink·oceanbase
Edingbrugh.南空3 天前
Flink TiDB CDC 环境配置与验证
大数据·flink·tidb
Edingbrugh.南空3 天前
Flink Postgres CDC 环境配置与验证
大数据·flink
lifallen4 天前
Paimon vs. HBase:全链路开销对比
java·大数据·数据结构·数据库·算法·flink·hbase