如何使用 Flink SQL 探索 GitHub 数据集|Flink-Learning 实战营

作者|王洪顺(弘舜)

为进一步帮助开发者学习使用 Flink,Apache Flink 中文社区近期发起 Flink-Learning 实战营项目。本次实战营通过真实有趣的实战场景帮助开发者实操体验 Flink,课程包括实时数据接入、实时数据分析、实时数据应用的场景实。并结合小松鼠助教模式,全方位帮助入营开发者轻松玩转 Flink,点击下方图片扫码即刻入营

本期将继续详细介绍 Flink- Learning 实战营。


想要了解如何使用 Flink 在 GitHub 中发现最热门的项目吗?本实验使用阿里云实时计算 Flink 版内置的 GitHub 公开事件数据集,通过 Flink SQL 实时探索分析 Github 公开数据集中隐藏的彩蛋!

完成本实验后,您将掌握的知识有:

  • 了解 Flink 和流式计算的优势
  • 对 Flink SQL 基础能力和 Flink 实时处理特性有初步体验

实验简介

通过 Flink 对 GitHub 的实时事件流进行分析,并通过报表直观展示,了解 GitHub 的最新热门趋势、特定仓库或者组织的活跃度。

体验此场景后,可以对 Flink SQL 基础能力和 Flink 实时处理特性有直观的初步体验。

■ 为回馈广大开源开发者对社区的支持,阿里云实时计算 Flink 版提供云原生免费试用资源

实验资源

本场景使用到的实验资源和配置如下:

阿里云实时计算 Flink 版

配置项规格
Task Manger 个数4 个
Task Manager CPU2 核心
Task Manager Memory8 GiB
Job Manager CPU1 核
Job Manager Memory2 GiB

体验目标

对 Flink SQL 基础能力和 Flink 实时处理特性有直观的初步体验。

背景知识

GitHub 公开数据集(GitHub Archive)是 GitHub 提供的一个开放数据集合,它包含了每个公共仓库的事件数据,例如提交、拉取请求、问题和评论等。GitHub 公开数据集的数据可以用于进行各种类型的研究和分析,例如开源社区的协作情况、开发者的行为特征、编程语言的发展趋势等。使开发者们更好地了解 GitHub 上的活动和趋势,并从中获得有价值的信息和洞察。

本实验将 GitHub 公开数据集实时同步到 SLS 作为数据源,根据 Flink 对数据进行多种维度的分析并且通过报表直观展示。

前置知识

  • 了解 Flink 相关的基础知识。
  • 了解 Flink SQL 相关的基础知识。

环境搭建

创建 Session 集群。进入阿里云控制台,选择实时计算 Flink 版。然后选择已经购买的工作空间。

在开始阿里云实时计算 Flink 版作业编写前,需要先创建 Session 集群,只有创建了 Flink 集群,才能执行任务。

1.点击系统管理 -> Session 集群 ->创建 Session

2.创建 Session 集群时设置为 SQL Preview 集群,这样无需设置 Sink, 即可将 Select 语句的结果输出成图表的格式。

实验 1:Github 关注数排行榜

本实验统计从一周前起的 Github 关注度排行榜。

操作

1.作业 SQL 代码。其中 startTime 尽量设置为当前此刻的一周前附近,如果设置的时间太早,前面无效计算时间比较长,不仅耗费资源,而且很久才能加载出计算结果。根据不同的地域设置相应的 project 和endPoint,如实例为上海的服务平台,因此设置'project' = 'github-events-shanghai'和'endPoint' = 'https://cn-shanghai-intranet.log.aliyuncs.com',其他地域如北京、杭州、深圳更改为对应值即可。

-- 通过DDL语句创建SLS源表,SLS中存放了Github的实时数据。
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。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 STRING                                 -- Github组织名,如: apache,google,alibaba等。
) WITH ('connector' = 'sls',                              -- 实时采集的Github事件存放在阿里云SLS中。'project' = 'github-events-shanghai',                     -- 存放公开数据的SLS项目。例如'github-events-hangzhou'。'endPoint' = 'https://cn-shanghai-intranet.log.aliyuncs.com',                   -- 公开数据仅限阿里云实时计算 Flink 版通过私网地址访问。例如'https://cn-hangzhou-intranet.log.aliyuncs.com'。'logStore' = 'realtime-github-events',            -- 存放公开数据的SLS logStore。'accessId' =  ' ',         -- 只读账号的AK。'accessKey' = ' ',   -- 只读账号的SK。'batchGetSize' = '500',                           -- 批量读取数据,每批最多拉取500条。'startTime' = '2023-06-01 14: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.size'='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 num
FROM gh_event WHERE type = 'WatchEvent' 
GROUP BY DATE_FORMAT(created_at_ts, 'yyyy-MM-dd'), repo_name
ORDER BY num DESC
LIMIT 5;

2.验证 SQL 是否正确并且执行

3.配置图表

​ a. 选择 Y Bar 并且编辑标题栏为 Top 5

​ b. 配置 group by repo_name, order by num,即根据 repo_name 分组比较数量

​ c. 实验可以一直运行,不断消费最新的数据。但是如果当前集群的 CPU 数配置的较少,不足以执行两个任务,又想执行下一个实验是,可以将本实验停止。点击结果左侧的红色方框即可。

结果

第一名:s0md3v/roop 视频换脸(最近我在b站也经常翻到)

第二名:pengzhile/pandora 潘多拉实现了网页版 ChatGPT 的主要操作

第三名:ClassmateLin/dm-ticket 大麦网抢票(疫情放开,估计上周演唱会很多)

第四名:ShishirPatil/gorilla 连接海量 API 的大型语言模型

第五名: iperov/DeepFaceLive 换脸

由此可见最近一周最流行的 repo 就是 ai 视频换脸和大模型,最流行的领域就是 ai

实验 2:统计组织活跃度变化

本实验统计 apache 和 alibaba 组织开源在从 24 小时前开始的活跃度趋势变化。

操作

1.SQL 代码如下。其中 startTime 尽量设置为当前此刻的 24 小时前附近,如果设置的时间太早,前面无效计算时间比较长,不仅耗费资源,而且很久才能加载出计算结果。如果想要统计 alibaba, 改成 org_login ='alibaba' 即可

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。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 STRING                                 -- Github组织名,如: apache,google,alibaba等。
) WITH ('connector' = 'sls',                              -- 实时采集的Github事件存放在阿里云SLS中。'project' = 'github-events-shanghai',                     -- 存放公开数据的SLS项目。例如'github-events-hangzhou'。'endPoint' = 'https://cn-shanghai-intranet.log.aliyuncs.com',                   -- 公开数据仅限阿里云实时计算 Flink 版通过私网地址访问。例如'https://cn-hangzhou-intranet.log.aliyuncs.com'。'logStore' = 'realtime-github-events',            -- 存放公开数据的SLS logStore。'accessId' =  ' ',         -- 只读账号的AK。'accessKey' = ' ',   -- 只读账号的SK。'batchGetSize' = '500',                           -- 批量读取数据,每批最多拉取500条。'startTime' = '2023-06-07 14: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.size'='4096';-- 作业设置4个并发,聚合更快。
SET 'parallelism.default' = '4';-- 从一天前开始统计事件总量
SELECT NOW(), max(created_at_ts) as created_ts, COUNT(*) as event_count
FROM gh_event 
WHERE  org_login ='apache' and
created_at_ts >= NOW() - INTERVAL '1' DAY;

2.点击执行,并且配置图表

​ a. 点击图表配置

​ b. 编辑标题为"apache",并且选择 X/Y Line

​ c. 配置 X 轴为 create_ts, y 轴为 event_count

结果

apache 作为全球性的开源组织,一天内的活跃度比较均匀,而阿里巴巴开源基本由国内开发者关注和贡献,夜间增加比较平缓,在 9 点之后明显提升。

实验 3: 统计仓库贡献时间分布情况

本实验统计 flink 和 spark 开源仓库在从一周前前开始的贡献分布情况。贡献包括代码提交、commit 评论、issue 评论、提交 PR 请求、PR 请求的审查评论等与开发者相关的事件。

1.作业 SQL 代码。其中 startTime 尽量设置为当前此刻的一周前附近,如果设置的时间太早,前面无效计算时间比较长,不仅耗费资源,而且很久才能加载出计算结果。如果想要统计 spark, 改成 repo_name = 'apache/flink'' 即可。

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。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 STRING                                 -- Github组织名,如: apache,google,alibaba等。
) WITH ('connector' = 'sls',                              -- 实时采集的Github事件存放在阿里云SLS中。'project' = 'github-events-shanghai',                     -- 存放公开数据的SLS项目。例如'github-events-hangzhou'。'endPoint' = 'https://cn-shanghai-intranet.log.aliyuncs.com',                   -- 公开数据仅限阿里云实时计算 Flink 版通过私网地址访问。例如'https://cn-hangzhou-intranet.log.aliyuncs.com'。'logStore' = 'realtime-github-events',            -- 存放公开数据的SLS logStore。'accessId' =  ' ',         -- 只读账号的AK。'accessKey' = ' ',   -- 只读账号的SK。'batchGetSize' = '500',                           -- 批量读取数据,每批最多拉取500条。'startTime' = '2023-06-01 14: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.size'='4096';-- 作业设置4个并发,聚合更快。
SET 'parallelism.default' = '4';-- 配置开启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_hour ,COUNT(*) AS comment_count
FROM gh_event
WHERE created_at_ts >= NOW() - INTERVAL '7' DAY AND repo_name = 'apache/flink'AND (type ='CommitCommentEvent' OR type='IssueCommentEvent' or type = 'PullRequestReviewCommentEvent'or type = 'PushEvent' or type = 'PullRequestEvent' or type = 'PullRequestReviewEvent')
GROUP BY DATE_FORMAT(created_at_ts, 'yyyy-MM-dd'), HOUR(created_at_ts) ;

2.点击执行,并且配置图表。选择 Heatmap, 设置 Group by comment_date, Spli By comment_hour,Color为 Sum(comment_count), 即 X 轴为天,Y 周为小时,根据总数量显示颜色深浅。

想要了解更多关于如何在 GitHub 中发现最热门的项目的知识吗?快来尝试一下吧!

点击即刻入营

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/27097.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Amazon SPAPI By Postman 操作

I. 介绍 在论坛和群里仍然还有很多小伙伴对poatman操作有很多不熟悉的,而每次开case的时候,官网支持人员要求提供postman的Request Info and Response Info,或者自己调试的时候想要快速调用接口出结果,使用http工具无疑是很大的帮…

ChatGPT文本框再次升级,打造出新型操作系统

在ChatGPT到来之前,没有谁能够预见。但是,它最终还是来了,并引起了不小的轰动,甚至有可能颠覆整个行业。 从某种程度上说,ChatGPT可能是历史上增长最快的应用程序,仅在两个多月就拥有了1亿多活跃用户&…

马云回国还谈ChatGPT:人类不应被人工智能所控制

雷递网 乐天 3月27日 阿里巴巴创始人马云日前现身杭州云谷,和校园长们进行交流。这也意味着马云已经回到国内。 此次活动中,校园长们说,云谷从创校以来,一直在探索如何在人工智能快速发展的时代为孩子提供面向未来的教育。 马云说…

程序员再“整活”,在 Dos 上也能玩 ChatGPT 客户端!

编译 | 苏宓 出品 | CSDN(ID:CSDNnews) 如果撇开科技大厂的业务线不谈,我们还可以用 ChatGPT、GPT-4 来干什么?除了逗趣、生成代码、聊天之外,这届网友已经尝试雇佣了 GPT-4 当老板,开启从零的创…

50倍效率!600+AI工具、3000+AI提示艺术,《AIGC万能工具包》助你职场效率起飞

众所周知,2023年是AI元年。 以ChatGPT为例,AI能帮你定目标、写文案,列提纲、找数据,甚至还能帮你做到想不到的事情…… 对不同行业的职场人士来说,它绝对是一个省力气,省时间,能大幅度提升工作产…

阿里、百度、值得买齐发声,电商的“AIGC式”进化

配图来自Canva可画 一年一度618要来了,和往年一样折扣力度、明星直播等话题被炒得火热,不同的是今年618的科技属性更强。 究其原因,过去半年AIGC技术被电商平台应用到实际运营中,“AIGC选品”、“虚拟货场”、“智能客服”成为电商…

运营er们,AIGC来了!你们怕不怕?

微软已官宣将ChatGPT整合到Bing搜索和Edge浏览器之中,它能根据聊天的上下文进行互动,真正像人类一样来聊天交流,运营er们甚至能用它完成撰写邮件、视频脚本、文案、翻译、代码等任务! AIGC爆火 不仅可以提高我们工作效率 而且也可…

ChatGPT超级智能体改写人类未来的宇宙大冒险!|小智ai

ChatGPT丨小智ai丨chatgpt丨人工智能丨OpenAI丨聊天机器人丨AI语音助手丨GPT-3.5丨开源AI平台 ChatGPT,这个惊世骇俗的超级智能体,正在以惊人的速度改写着人类的未来,引领我们进入一场前所未有的宇宙大冒险!准备好了吗&#xff1f…

大模型“图纸”已现,火山方舟开工

文丨刘雨琦 编丨王一粟 中国房子盖了2000年,直至汉朝初期,才开始出现“建筑图纸”。 有了图纸后,盖房子便不仅仅依赖于几个“老师傅”,图纸是全盘的指导,避免了曾经多次的推倒重建以及因为力学结构不合理而半途而废…

推荐一个开源数据同步神器,支持多种数据源和预警功能!

DBSyncer是一款开源的数据同步中间件,提供MySQL、Oracle、SqlServer、PostgreSQL、Elasticsearch(ES)、Kafka、File、SQL等同步场景。 支持上传插件自定义同步转换业务,提供监控全量和增量数据统计图、应用性能预警等。 特点: 组合驱动&#…

Java 17 采用率在一年内增长 430% !

出品 | OSC开源社区(ID:oschina2013) New Relic 最新发布了一份 “2023 年 Java 生态系统状况报告”,旨在提供有关当今 Java 生态系统状态的背景和见解。该报告基于从数百万个提供性能数据的应用程序中收集的数据,对生产中使用最多…

简单的数据库连接与提供前端接口

前言: 本文浅浅讲解一下,使用多种软件共同开发一个java工程。 这是我在windows系统上跑成功的一次设计: 逻辑图如下: 一:所需软件和版本。 idea,maven,jdk,git,jenki…

免费“白嫖” GPT-4 方法 +1, 开发者锐评:跟“偷”有什么区别?

整理 | 郑丽媛、出品 | CSDN(ID:CSDNnews) 前不久,可“白嫖” GPT-4 的 Forefront Chat 吸引了众多关注,导致该网站一度崩溃,也令不少人发出疑问:“GPT-4 这么贵,为什么它能免费让我…

chatgpt赋能python:免费Python软件——学习和开发的首选工具

免费Python软件——学习和开发的首选工具 Python是一门高级编程语言,流行于数据科学、机器学习、自然语言处理等领域。但是,许多初学者和开发者因为高昂的学习和购买成本而退缩。然而,免费的Python软件正在帮助更多人轻松学习和开发Python程…

chatgpt赋能python:免费的Python编程软件:开发者必备工具!

免费的Python编程软件:开发者必备工具! Python是一门广受欢迎的编程语言,它已经成为了很多公司和开发者的首选语言。Python的出现改变了编程的方式,它具有简单、易懂、易读、易写、易拓展等特点,因此成为了很多新手入…

写 bug 速度提升200%!吊爆的 IDEA 使用技巧

来源:blog.xiaohansong.com/idea-live-templates.html 今天分享一篇idea技巧,让我们少写一些重复代码,提高效率~ 背景 Java 开发过程经常需要编写有固定格式的代码,例如说声明一个私有变量,logger或者bean等等。对于这…

chatgpt赋能Python-python886

Python886:一款优秀的Python IDE 作为一款Python开发的强大IDE,Python886 绝对不会让您失望。Python886 是 Python 编程语言的一个集成开发环境(IDE),支持C、C、Python、PHP、Ruby、Perl等多种编程语言。Python886 具…

IntelliJ IDEA 2023.1 发布:新UI、支持Java 20、简化Git Commit、重新设计 “Run”

出品 | OSC开源社区(ID:oschina2013) IntelliJ IDEA 2023.1 现已发布。此版本包括对新 UI 的改进,根据从用户那里收到的反馈进行了彻底改造。此外还实现了性能增强,从而在打开项目时更快地导入 Maven 和更早地使用 IDE 功能。由于…

npm安装教程

一、使用之前,我们先来掌握3个东西是用来干什么的。 npm: Nodejs下的包管理器。 webpack: 它主要的用途是通过CommonJS的语法把所有浏览器端需要发布的静态资源做相应的准备,比如资源的合并和打包。 vue-cli: 用户生成Vue工程模板。(帮你快…

实用工具 | <01>ChatGPT-4——Cursor(AI代码神器)

目录 一、简单介绍 二、安装教程 三、使用教程 四、总结 一、简单介绍 ChatGPT是一个大型多模态模型,可以接受图像和文本输入,并生成文本输出。GPT-4是基于Transformer的模型,经过训练后可以预测文档中的next token。为了提高准确性和确保G…