课时1:使用Flink实时发现最热Github项目

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
简介: 课时1:使用Flink实时发现最热Github项目

Flink-Learning训练营:课时1:使用Flink实时发现最热Github项目

课程地址:https://developer.aliyun.com/trainingcamp/0bcc1ab57cf841a2af632d6252fecbab

使用flink实时发现最热Github项目

 

内容简介

一、实验准备

二、实验内容

 

一、实验准备

在进行实验前,需要我们开通阿里云实时计算flink版免费试用,在开通之后,我将和大家一起通过flink对get hub的实时事件流进行分析,并通过报表直观展示了解git HUB的最新热门趋势。特定仓库或者组织的活跃度,操作完本实验后,您将能够对flink  SQL基础能力和Flink实施处理特性有直观的初步体验

1.开通步骤

图片1.png

要开通实时计算flink版试用,首先我需要我们借用阿里云试用中心链接http://free.aliyun.com/?crowd=enterpise&pipCode=sc ,点击就会出现试用的卡片,然后我们点击立即试用这个按键即可开通试用,当开通试用之后我们就进入产品控制台开始实验本次实验我将会带领,大家介绍一下什么是git hub公开数据集,然后接着通过三个小实验,然后将结果通过报表展示进行分析,看看会不会有一些有意思的结论

2.git hub公开数据集的介绍

图片2.png

git hub公开数据集的链接为http://www.gharchiye.org/  我们点进去就可以跳转到官方地址看啊,在这里我们可以看到一些详细的介绍git hub公开数据集是git hub提供的一个开放数据集合,它包含了每个公共仓库的事件数据,git hub公开数据集的数据可以用与各种类型的研究和分析,例如开源社区的写作情况,开发者的行为特征,编程语言的发展趋势等等,使开发者能更好的了解git hub上的活动和趋势并从中获取有价值的信息,每一条数据都是git hub仓库进行的各种操作活动事件,其中包含了仓库名称用户名组织名称和操作事件类型,操作事件类型的地址GitHub event types,我们点击跳转过去就可以看到有很多种操作事件,比如说我们fork一个仓库的时候就会请求一个fork invent被记录下来,当我们对一个仓库进行star的时候,一个watch invent就会被记录下来。本次实验数据就是将GH数据集的数据实时同步到SLS日志中,以供我们的实验使用

 

二、实验内容

实验一 、如何实施发现GitHub最热项目

接下来我们开始第一项实验,如何实时发现GitHub最热项目,我将和大家一起在vap平台上进行操作。

首先,我们进入vap平台,在进行作业开发之前,我们需要先创建Session集群,只有flink集群存在了,才能执行具体的任务。在本次实验中,我们需要开启circle previews。开启circle preview之后我们就不需要指定具体的think,而是能直接将select结果进行输出,然后通过简单的报表配置,就能够将结果直白的展现出来。只要我们进行作业开发,首先我们通过ddl创建一个ss原表。

这是一个临时表,里面的字段与ss日志里面的字段是一一对应的,我们通过ss connect进行连接,然后指定它的存放数据的ss项目以及对应的lock store,然后指定网络,指定它的连接key,并且每批最多读取500的数据,开始时间为6月1日,这个start time就是消费SSLOG从哪个时间段开始,如果不指定的话就默认消费最新的数据,再进设置的时候数据尽量设置近一点,比如说你要统计一周的数据,你就将数据尽量放在一周偏前面一点点。因为前期无效计算会耗费的时间比较长,结果一直无法输出。我们通过开启mini batch和作业并发,然后加速它的计算速度,我们看看具体的业务代码。因为star数最能反映项目的热度,所以我们这边tab采用是watch event,并且为了统计某个仓库一天之内的数据量,我们就按照天仓库名进行分组,统计一天之内的总量,然后进行排序,选择前五项我们验证一下SQL是否正确验证通过,我们就开始执行。

执行时结果可以多种格式进行输出,比如说我们可以通过简单的报表输出,因为这边是排行榜,我希望更直观的展示我就采用这个y8。使用y8的时候,我需要设置y轴表示是数量x轴我需要转换的是仓库名,所以这边那个group办我就设置成People name就能够直观的展示,然后数据就源源不断的被计算。我们看一看我得到的数据,

图片3.png

可以看到第一名和第五名都是AI视频换脸。第二名和第四名都是大模型相关的。而第三名的是大麦网抢票,可能最近的演唱会比较多,目前由于热度太高,可能创作者担心涉及到侵权,目前已经停止维护。根据这些结果,可以看到,在过去一周内AI是GitHub技术关注的领域,其中最受关注的子方向就是AI视频换脸和大模型。

 

实验二   全球化协作让Apache更有活力

实验二希望从orgnize即从组织的角度出发,看一个组织在一段时间内的和活跃度变化趋势,为了使结果更加明显,我这边选取了GitHub 比较活跃的组织,比如Apache开源组织,比如说阿里巴巴,看他们在一天之内的活跃度变化,总结出一些有意思的规律。我们再次回到VIP平台,首先将上一次的任务停止。我这边之所以停止,是因为我这边C型集群设置的CPU数比较少,一个任务基本就占据的差不多,无法启动第二个任务,如果你这边绑定的CPU数比较多的话,其实是可以同时执行多个任务的,然后进入作业二。

第二个任务的Ttl和第一个任务基本基本相同,唯一的区别就是start time是不相同的。由6月1日变成6月7日,其从最终的结果来看是没有区别的,因为在vr条件中已经将早于一天前的数据进行过滤。虽然结果不同,中间六天的无效数据还是要流经Flink进行计算的,耗费的资源比较长,耗费的无效时间比较长,如果设成6月1日,你会发现很长一段时间内没有数据写入。

那我们来具体看一下circle,我这边统计Apache这个组织从昨天这个时候开始的,事件总量进行count。因为要统计一个总量,这边没有设置具体的事件类型。为什么要这个node呢?这个node其实是个无效值,但是不加这个node的话,仅仅是这两项,输出的结果只有一个值,我希望以折线图的形式来进行展示。所以需要一个历史的累加值,所以说这边设置now之后它会显示一个累加值,我们进行执行。可以发现,数据也没有立马出来,这是因为当前时间已经昨天的下午六点,但这个时间设置成昨天下午两点,所以中间有四个小时的时间来进行无效的数据需要计算,不过也很快可以看确实是从昨天的六点开始计算。我这边希望以折线图的形式更加直观的显示这个变化,所以我们这边需要设置采用折线图。x轴就是时间y轴应该是采用的是事件总量。

因为这count放在这里,然后它就显示了我们想要的结果,可以看到数据是源源不断的过来的,所以说他这个图表是一直在变化的。如果我们想统计阿里巴巴将这边设置成阿里巴巴即可。我可以看到最终的结果,

图片4.png

最终结果Apache的折线图趋势在上面,阿里巴巴的折线图趋势在下面,这张图对比这两张图可以看到Apache作为一个全球化的开源组织,其实他的代码提交它的活跃度,使用量其实比较均匀的。但在阿里巴巴,其实它更多的侧重在在国内。可以看到它的趋势上九点之后,它的变化就非常平缓夜里基本就没有什么变化,在早上九点之后可以看到它的一个增长显著提升。

 

实验三 Flink&park的评论热力图

实验三希望以热度的形式来反映某个仓库或者某个组织在一段时间内的活跃度的具体的分布情况。我们回到VIP平台。

前面的代码基本没有任何区别,唯一的区别就是select语句,我们来具体看一下。所以我们希望反应每个小时的变化情况,所以就统计小时的总量,我们group by的时候根据天和小时进行group by,然后对每个小时进行统计。我们计算是从七天之前开始,早于七天之前的数据,我没将它过滤,统计的仓库是Apache flink,具体这些事件可以看到,不管是push代码还对push进行PR请求,或是对他进行review,企业ashol这些都是与开发者相关的一些动作,所以我们把它给放入其中。我们可以验证一下,失败报数说明表不存在,选定的这些,还有上面的这些detail,所以说如果全局的话,验证是没有问题的然后我们进行执行。执行和刚才一样,因为毕竟他是从两点开始的,如果对到七天前的,至少应该到下午六点,所以他还是需要一定时间的延迟。可以看到数据就开始出现了然后我们这边热力图可以看到group 代表是横轴,我们把它设置为comment date,他们在对着这其实都你是都可以把它设置为其他字段的。这些都是可以设置的,然后它的纵轴通过这个spring split by,我们按照小时来进行分配,然后每一个都代表一个统计的区域,然后数据颜色我们就通过comment countsum的用处不大,因为我们circle里面进行计算了,所以这么一个区域其实是只有一个值,就是具体的总量。其实这个sum就是对这个这一段时间区内出现的总数进行聚合,可以看到从一周前慢慢开始计算,一直计算最新的数据之后就源源不断的拉取新的数据。如果我们想要统计spark,只需要把它改成spark即可。如果统计总量,把这一段去掉即可。我们来看看最终的结果。

图片5.png

第一张表是flink,它的热在过去一周的热力图,第二张是Spark在过去中的热力图,最后一个是所有的仓库的热力图。从整体来看,可以看到白天的话,颜色比较浅,晚上的颜色比较深,所以按这个推断,国外开发者应该是更活跃国外的开发者肯总量加起来是比国内高的我。而spark flink可以看到,国内开发者是比较活跃。与spark相比,flink的开发者其实更侧重于国内,特别是在网上其实是比较淡的,有的甚至数据量非常少。而高峰期基本在下午,下午的两点到六点也符合国内开发者的工作黄金时间。
图片6.png然后6月3日到四日作为周末,可以看到flink基本没人工作,但是spark周末还是有好多人在卷,所以从这样看看起来flink开发者是比Spark开发者更会享受周末本次实验大致就是以上内容。

相关实践学习
基于Hologres轻松玩转一站式实时仓库
本场景介绍如何利用阿里云MaxCompute、实时计算Flink和交互式分析服务Hologres开发离线、实时数据融合分析的数据大屏应用。
Linux入门到精通
本套课程是从入门开始的Linux学习课程,适合初学者阅读。由浅入深案例丰富,通俗易懂。主要涉及基础的系统操作以及工作中常用的各种服务软件的应用、部署和优化。即使是零基础的学员,只要能够坚持把所有章节都学完,也一定会受益匪浅。
相关文章
|
3月前
|
开发工具 git 开发者
2024最简七步完成 将本地项目提交到github仓库方法
该文章提供了一个简洁的七步教程,指导用户如何将本地项目提交到GitHub仓库。
2024最简七步完成 将本地项目提交到github仓库方法
|
1月前
|
编解码 Oracle Java
java9到java17的新特性学习--github新项目
本文宣布了一个名为"JavaLearnNote"的新GitHub项目,该项目旨在帮助Java开发者深入理解和掌握从Java 9到Java 17的每个版本的关键新特性,并通过实战演示、社区支持和持续更新来促进学习。
76 3
|
3月前
|
Java
Java系列之 解决 项目 jar 包无法上传到Github
该博客文章介绍了解决Java项目中jar包无法上传到Github的问题,通过修改`.gitignore`文件来包含jar包,从而成功添加到上传目录。
Java系列之 解决 项目 jar 包无法上传到Github
|
3月前
|
Rust 前端开发 JavaScript
Github 2024-05-20 开源项目周报 Top15
根据Github Trendings的统计,2024年5月20日当周共有15个项目上榜。按开发语言分类,项目数量如下:Python项目5个,TypeScript项目3个,C++项目2个,Jupyter Notebook项目2个,C、Go、Rust和C#项目各1个。介绍了多个值得关注的项目,包括ChatGPT桌面应用程序、Fooocus图像生成软件、Jellyfin媒体系统等。这些项目涵盖了多种功能和技术领域,值得关注和研究。
62 3
|
3月前
|
数据采集 编解码 算法
Github | 推荐一个Python脚本集合项目
Github | 推荐一个Python脚本集合项目
|
3月前
|
SQL JavaScript 前端开发
Github 2024-08-05 开源项目周报 Top15
根据 Github Trendings 的统计,本周(2024年8月5日统计)共有15个项目上榜。以下是根据开发语言汇总的项目数量: - Go 项目:4个 - JavaScript 项目:3个 - Python 项目:3个 - Java 项目:2个 - TypeScript 项目:2个 - C 项目:1个 - Shell 项目:1个 - Dockerfile 项目:1个 - 非开发语言项目:1个
113 2
|
3月前
|
人工智能 Rust JavaScript
Github 2024-08-26 开源项目周报Top15
根据Github Trendings的统计,本周共有15个项目上榜。以下是按开发语言汇总的项目数量:Python项目8个,TypeScript、C++ 和 Rust 项目各2个,Jupyter Notebook、Shell、Swift 和 Dart 项目各1个。其中,RustDesk 是一款用 Rust 编写的开源远程桌面软件,可作为 TeamViewer 的替代品;Whisper 是一个通用的语音识别模型,基于大规模音频数据集训练而成;初学者的生成式人工智能(第2版)则是由微软提供的18门课程,教授构建生成式AI应用所需的知识。
126 1
|
3月前
|
Rust Dart 前端开发
Github 2024-08-19 开源项目周报Top15
根据Github Trendings的统计,本周(2024年8月19日统计)共有15个项目上榜。按开发语言分类,上榜项目数量如下:Python项目最多,有7项;其次是JavaScript和TypeScript,各有3项;Dart有2项;HTML、PowerShell、Clojure和C++各1项。此外,还介绍了多个热门项目,包括Bootstrap 5、RustDesk、ComfyUI、易采集、Penpot等,涵盖了Web开发、远程桌面、自动化测试、设计工具等多个领域。
110 1
|
3月前
|
JavaScript 前端开发 Go
Github 2024-08-12 开源项目周报 Top14
本周Github Trendings共有14个项目上榜,按开发语言汇总如下:Python项目7个,TypeScript项目5个,C项目2个,JavaScript项目2个,Go和Batchfile项目各1个。其中亮点包括开发者职业成长指南、Windows激活工具、ComfyUI图形界面、AFFiNE知识库、易采集可视化爬虫等项目,涵盖多种实用工具和开源平台。
125 1
|
3月前
|
存储 JavaScript 前端开发
Github 2024-07-29 开源项目周报Top15
根据 Github Trendings 的统计,本周(2024年7月29日统计)共有15个项目上榜。按开发语言分类,项目数量如下:Python、Java、HTML 和 C 项目各有2项;TypeScript、JavaScript、Vue 和 Go 各有1项;另有1项非特定语言项目、1项 Dart 项目、1项 C++ 项目、1项 Rust 项目及1项 Jupyter Notebook 项目。这些项目涵盖了多种领域,如API开发、照片管理、PDF处理、AI技术等。
62 1

相关产品

  • 实时计算 Flink版