1、使用Flink实时发现最热GitHub项目王洪顺(弘舜)阿里云开发工程师Streaming lakehouse meetup实验简介实验准备开通阿里云实时计算 Flink 版免费试用(5000CU*小时,相当于完成100次实验)操作完本实验后,您将能够:对Flink SQL基础能力和Flink实时处理特性有直观的初步体验重点内容通过Flink对GitHub的实时事件流进行分析,并通过报表直观展示,了解GitHub的最新热门趋势、特定仓库或者组织的活跃度。如何开通实时计算 Flink 版试用开通步骤1、进入阿里云试用中心:https:/ Flink 版 点击 立即试用3、进入产品控制台,开始实验
2、4、详细操作也可见:云起实验室扫码开通GitHub公开数据集介绍0101CONTENT目录 0202如何实时发现GitHub今日最热项目0303全球化协作让Apache社区充满活力0404Flink开发者比Spark更会“享受周末”01GitHub公开数据集介绍GH Archive在全球范围内,开源开发人员正在进行数百万个项目的编写、文档编写、错误修复和提交等工作。GH Archive 是一个记录公共 GitHub 时间线的项目,可以将其存档并使其易于访问,以便进行进一步的分析。https:/www.gharchive.org/数据格式该数据集记录了对 GitHub 仓库进行的各种操作活动事件
3、,包括仓库名称、用户名、组织名称、操作事件类型等信息。操作事件类型包括 ForkEvent、PushEvent(提交代码)、WatchEvent(star 仓库)等多种操作类型GitHub event types实验数据本次实验将 GH 数据集的数据实时同步到 SLS 日志中,以供实验使用。02如何实时发现GitHub最热项代码代码CREATE TEMPORARY TABLE gh_event(id STRING,-每个事件的唯ID。created_at BIGINT,-事件时间,单位秒。created_at_ts as TO_TIMESTAMP(created_at*1000),-事件时间戳
4、(当前会话时区下的时间戳,如:Asia/Shanghai)。type STRING,-Github事件类型,如:。ForkEvent,WatchEvent,IssuesEvent,CommitCommentEvent等。actor_id STRING,-Github户ID。actor_login STRING,-Github户名。repo_id STRING,-Github仓库ID。repo_name STRING,-Github仓库名,如:apache/flink,apache/spark,alibaba/fastjson等。org STRING,-Github组织ID。org_login
5、STRING-Github组织名,如:apache,google,alibaba等。)WITH(connector=sls,-实时采集的Github事件存放在阿云SLS中。project=github-events-shanghai,-存放公开数据的SLS项。例如github-events-hangzhou。endPoint=https:/cn-shanghai-,-公开数据仅限VVP通过私地址访问。例如https:/cn-hangzhou-。logStore=realtime-github-events,-存放公开数据的SLS logStore。accessId=LTAI5tNF1rP8PK
6、VyYjr9TKgh,-只读账号的AK。accessKey=FDgsh6fjSmkbFsx083tN6HOiqNVWTP,-只读账号的SK。batchGetSize=500,-批量读取数据,每批最多拉取500条。startTime=2023-05-30 00:00:00-开始时间,尽量设置到需要计算的时间附近,否则效计算的时间较);-配置开启mini-batch,每2s处理次。SET table.exec.mini-batch.enabled=true;SET table.exec.mini-batch.allow-latency=2s;SET table.exec.mini-batch.si
7、ze=4096;-作业设置4个并发,聚合更快。SET parallelism.default=4;-查看当天Github新增star数Top 5仓库。SELECT DATE_FORMAT(created_at_ts,yyyy-MM-dd)as date,repo_name,COUNT(*)as numFROM gh_event WHERE type=WatchEventGROUP BY DATE_FORMAT(created_at_ts,yyyy-MM-dd),repo_nameORDER BY num DESCLIMIT 5;最近一周最近一周GitHubGitHub最受关注是最受关注是AIA
8、I视频换脸和大模型视频换脸和大模型第一名:s0md3v/roop AI视频换脸第二名:pengzhile/pandora 潘多拉实现了网页版 ChatGPT 的主要操作第三名:ClassmateLin/dm-ticket 大麦网抢票第四名:ShishirPatil/gorilla 连接海量 API 的大型语言模型第五名:iperov/DeepFaceLive AI视频换脸03全球化协作让Apache更有活力代码代码CREATE TEMPORARY TABLE gh_event(id STRING,-每个事件的唯ID。created_at BIGINT,-事件时间,单位秒。created_at_
9、ts as TO_TIMESTAMP(created_at*1000),-事件时间戳(当前会话时区下的时间戳,如:Asia/Shanghai)。type STRING,-Github事件类型,如:。ForkEvent,WatchEvent,IssuesEvent,CommitCommentEvent等。actor_id STRING,-Github户ID。actor_login STRING,-Github户名。repo_id STRING,-Github仓库ID。repo_name STRING,-Github仓库名,如:apache/flink,apache/spark,alibaba/f
10、astjson等。org STRING,-Github组织ID。org_login STRING-Github组织名,如:apache,google,alibaba等。)WITH(connector=sls,-实时采集的Github事件存放在阿云SLS中。project=github-events-shanghai,-存放公开数据的SLS项。例如github-events-hangzhou。endPoint=https:/cn-shanghai-,-公开数据仅限VVP通过私地址访问。例如https:/cn-hangzhou-。logStore=realtime-github-events,-存
11、放公开数据的SLS logStore。accessId=LTAI5tNF1rP8PKVyYjr9TKgh,-只读账号的AK。accessKey=FDgsh6fjSmkbFsx083tN6HOiqNVWTP,-只读账号的SK。batchGetSize=500,-批量读取数据,每批最多拉取500条。startTime=2023-06-05 00:00:00-开始时间,尽量设置到需要计算的时间附近,否则效计算的时间较);-配置开启mini-batch,每2s处理次。SET table.exec.mini-batch.enabled=true;SET table.exec.mini-batch.all
12、ow-latency=2s;SET table.exec.mini-batch.size=4096;-作业设置4个并发,聚合更快。SET parallelism.default=4;SELECT NOW(),max(created_at_ts)as created_ts,COUNT(*)as event_countFROM gh_eventWHERE org_login=apache andcreated_at_ts=NOW()-INTERVAL 1 DAY;全球化协作让Apache社区充满活力Apache作为全球性的开源组织,一天内的提交比较均匀,而阿里夜间增加比较平缓,在上午9点之后明显提
13、升。04Flink开发者Spark更会“享受周末”代码代码CREATE TEMPORARY TABLE gh_event(id STRING,-每个事件的唯ID。created_at BIGINT,-事件时间,单位秒。created_at_ts as TO_TIMESTAMP(created_at*1000),-事件时间戳(当前会话时区下的时间戳,如:Asia/Shanghai)。type STRING,-Github事件类型,如:。ForkEvent,WatchEvent,IssuesEvent,CommitCommentEvent等。actor_id STRING,-Github户ID。a
14、ctor_login STRING,-Github户名。repo_id STRING,-Github仓库ID。repo_name STRING,-Github仓库名,如:apache/flink,apache/spark,alibaba/fastjson等。org STRING,-Github组织ID。org_login STRING-Github组织名,如:apache,google,alibaba等。)WITH(connector=sls,-实时采集的Github事件存放在阿云SLS中。project=github-events-shanghai,-存放公开数据的SLS项。例如github
15、-events-hangzhou。endPoint=https:/cn-shanghai-,-公开数据仅限VVP通过私地址访问。例如https:/cn-hangzhou-。logStore=realtime-github-events,-存放公开数据的SLS logStore。accessId=LTAI5tNF1rP8PKVyYjr9TKgh,-只读账号的AK。accessKey=FDgsh6fjSmkbFsx083tN6HOiqNVWTP,-只读账号的SK。batchGetSize=500,-批量读取数据,每批最多拉取500条。startTime=2023-05-30 00:00:00-开始
16、时间,尽量设置到需要计算的时间附近,否则效计算的时间较);-配置开启mini-batch,每2s处理次。SET table.exec.mini-batch.enabled=true;SET table.exec.mini-batch.allow-latency=2s;SET table.exec.mini-batch.size=4096;-作业设置4个并发,聚合更快。SET parallelism.default=4;SELECT DATE_FORMAT(created_at_ts,yyyy-MM-dd)as comment_date,HOUR(created_at_ts)AS comment
17、_hour,COUNT(*)AS comment_countFROM gh_eventWHERE created_at_ts=NOW()-INTERVAL 7 DAYAND repo_name=apache/flinkAND(type=CommitCommentEvent OR type=IssueCommentEvent or type=PullRequestReviewCommentEventor type=PushEvent or type=PullRequestEvent or type=PullRequestReviewEvent)GROUP BY DATE_FORMAT(created_at_ts,yyyy-MM-dd),HOUR(created_at_ts);Flink开发者比Spark更会“享受周末”1.GitHub整体的提交量在北京时间的晚上更密集,即国外的开发者更活跃(也可能是因为人数不同)。Spark和Flink在国内的开发者比较活跃。2.和Spark相比,Flink的开发更集中在国内,北京时间夜里的提交量较低,高峰期基本在14点到18点。3.6月3-4日为周末,看起来Flink开发者比Spark更会“享受周末”。ThanksStreaming lakehouse meetup