使用內(nèi)置公開(kāi)數(shù)據(jù)集快速體驗(yàn)實(shí)時(shí)計(jì)算Flink版
本文為您介紹如何基于阿里云實(shí)時(shí)計(jì)算Flink版內(nèi)置的GitHub公開(kāi)事件樣例數(shù)據(jù),快速體驗(yàn)實(shí)時(shí)計(jì)算Flink版產(chǎn)品的實(shí)時(shí)數(shù)據(jù)分析功能。
注意事項(xiàng)
如果您是實(shí)時(shí)計(jì)算Flink版新用戶,可以申請(qǐng)?jiān)摦a(chǎn)品的免費(fèi)資源包,免費(fèi)試用體驗(yàn)實(shí)時(shí)計(jì)算Flink版產(chǎn)品的實(shí)時(shí)數(shù)據(jù)分析功能。但免費(fèi)資源包有用量、時(shí)長(zhǎng)等限制,領(lǐng)取前請(qǐng)務(wù)必確認(rèn)已了解。申領(lǐng)入口請(qǐng)參見(jiàn)實(shí)時(shí)計(jì)算Flink版免費(fèi)試用。
為方便您更好地體驗(yàn)實(shí)時(shí)計(jì)算Flink版產(chǎn)品服務(wù),本文代碼示例中提供了僅有只讀權(quán)限的AK供您試用,涉及的AK僅可用于本文示例中讀取樣例數(shù)據(jù),真實(shí)數(shù)據(jù)生產(chǎn)環(huán)境請(qǐng)?zhí)鎿Q為您自己的數(shù)據(jù)源AK。
使用限制
本文示例僅適用于北京、杭州、上海和深圳地域。
步驟一:創(chuàng)建Session集群
單擊目標(biāo)工作空間名稱對(duì)應(yīng)操作列下的控制臺(tái)。
在左側(cè)導(dǎo)航欄,單擊
。單擊創(chuàng)建Session集群。
表格中未提及的參數(shù)保持默認(rèn)值即可,需要配置的參數(shù)說(shuō)明請(qǐng)參見(jiàn)下表。
配置項(xiàng)
說(shuō)明
配置示例
名稱
Session集群名稱。
flink-sql-test-session
狀態(tài)
設(shè)置當(dāng)前集群的期望運(yùn)行狀態(tài):
STOPPED:當(dāng)集群配置完成后保持停止?fàn)顟B(tài),同樣會(huì)停止所有在運(yùn)行中的作業(yè)。
RUNNING:當(dāng)集群配置完成后保持運(yùn)行狀態(tài)。
RUNNING
引擎版本
Session集群引擎版本號(hào)。
vvr-8.0.9-flink-1.17
Task Managers數(shù)量
默認(rèn)與并行度保持一致。
4
單擊創(chuàng)建Session集群。
當(dāng)Session集群狀態(tài)(頁(yè)面上方集群名稱旁邊)從啟動(dòng)中變?yōu)?b data-tag="uicontrol" id="74eb5c60d5s2f" class="uicontrol">運(yùn)行中后,您可以進(jìn)入后續(xù)步驟。
步驟二:創(chuàng)建SQL作業(yè)
在左側(cè)導(dǎo)航欄,單擊
。在頁(yè)面頂部,單擊新建。
單擊空白的流作業(yè)草稿后,單擊下一步。
在新建文件對(duì)話框,填寫(xiě)作業(yè)配置信息。
作業(yè)參數(shù)
說(shuō)明
配置示例
文件名稱
作業(yè)的名稱。
flink-sql-test
存儲(chǔ)位置
指定該作業(yè)的代碼文件所屬的文件夾。默認(rèn)存放在作業(yè)草稿目錄。
作業(yè)開(kāi)發(fā)
引擎版本
選擇作業(yè)的引擎版本,需要和Session集群引擎版本號(hào)一致。
vvr-8.0.9-flink-1.17
單擊創(chuàng)建。
步驟三:體驗(yàn)數(shù)據(jù)實(shí)時(shí)分析
統(tǒng)計(jì)當(dāng)天各個(gè)倉(cāng)庫(kù)新增Star數(shù)Top 10排行榜。
復(fù)制如下代碼到作業(yè)開(kāi)發(fā)文本編輯區(qū)。
-- 通過(guò)DDL語(yǔ)句創(chuàng)建SLS源表,SLS中存放了Github的實(shí)時(shí)數(shù)據(jù)。 CREATE TEMPORARY TABLE gh_event( id STRING, -- 每個(gè)事件的唯一ID。 created_at BIGINT, -- 事件時(shí)間,單位秒。 created_at_ts as TO_TIMESTAMP(created_at*1000), -- 事件時(shí)間戳(當(dāng)前會(huì)話時(shí)區(qū)下的時(shí)間戳,如:Asia/Shanghai)。 type STRING, -- Github事件類型,如:。ForkEvent, WatchEvent, IssuesEvent, CommitCommentEvent等。 actor_id STRING, -- Github用戶ID。 actor_login STRING, -- Github用戶名。 repo_id STRING, -- Github倉(cāng)庫(kù)ID。 repo_name STRING, -- Github倉(cāng)庫(kù)名,如:apache/flink, apache/spark, alibaba/fastjson等。 org STRING, -- Github組織ID。 org_login STRING -- Github組織名,如: apache,google,alibaba等。 ) WITH ( 'connector' = 'sls', -- 實(shí)時(shí)采集的Github事件存放在阿里云SLS中。 'project' = 'github-events-shenzhen', -- 存放公開(kāi)數(shù)據(jù)的SLS項(xiàng)目。本示例以深圳為例,您需要修改為您的實(shí)際地域信息。 'endPoint' = 'https://cn-shenzhen-intranet.log.aliyuncs.com', -- 公開(kāi)數(shù)據(jù)僅限VVP通過(guò)私網(wǎng)地址訪問(wèn)。本示例以深圳為例,您需要修改為您的實(shí)際地域信息。 'logStore' = 'realtime-github-events', -- 存放公開(kāi)數(shù)據(jù)的SLS logStore。 'accessId' = 'LTAI5tNF1rP8PKVyYjr9TKgh', -- 只讀賬號(hào)的AK,無(wú)需修改。 'accessKey' = 'FDgsh6fjSmkbFsx083tN6HOiqNVWTP', -- 只讀賬號(hào)的SK,無(wú)需修改。 'batchGetSize' = '500' -- 批量讀取數(shù)據(jù),每批最多拉取500條。 ); -- 配置開(kāi)啟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'; -- 作業(yè)設(shè)置4個(gè)并發(fā),聚合更快。 SET 'parallelism.default' = '4'; -- 查看當(dāng)天Github新增star數(shù)Top 10倉(cāng)庫(kù)。 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;
按照實(shí)際地域配置WITH參數(shù)中的project和endPoint(本示例以深圳地域?yàn)槔渌麉?shù)保持默認(rèn)值,無(wú)需修改。
地域
參數(shù)
說(shuō)明
北京
project
github-events-beijing
endPoint
https://cn-beijing-intranet.log.aliyuncs.com
杭州
project
github-events-hangzhou
endPoint
https://cn-hangzhou-intranet.log.aliyuncs.com
上海
project
github-events-shanghai
endPoint
https://cn-shanghai-intranet.log.aliyuncs.com
深圳
project
github-events-shenzhen
endPoint
https://cn-shenzhen-intranet.log.aliyuncs.com
單擊調(diào)試。
在彈出的對(duì)話框中,選擇調(diào)試集群為flink-sql-test-session(第一步中創(chuàng)建的Session集群),確認(rèn)調(diào)試數(shù)據(jù)狀態(tài)為線上數(shù)據(jù)后,單擊確定。
查看可視化結(jié)果。
如果需要繼續(xù)下一步,請(qǐng)單擊結(jié)果區(qū)域左側(cè)紅色停止按鈕。
因?yàn)檫@是一個(gè)流式作業(yè),作業(yè)會(huì)持續(xù)運(yùn)行,結(jié)果會(huì)持續(xù)更新。此步驟完成后如果您忘記單擊停止按鈕且繼續(xù)了后續(xù)示例的執(zhí)行,可能會(huì)出現(xiàn)資源不足無(wú)法顯示結(jié)果的情況。這時(shí),您需要在Session集群頁(yè)面先停止Session集群,再啟動(dòng)Session集群至運(yùn)行狀態(tài)。
查看某組織近7天的開(kāi)發(fā)者活躍度實(shí)時(shí)趨勢(shì)
復(fù)制如下代碼到作業(yè)開(kāi)發(fā)文本編輯區(qū)。
-- 通過(guò)DDL語(yǔ)句創(chuàng)建SLS源表,SLS中存放了Github的實(shí)時(shí)數(shù)據(jù)。 CREATE TEMPORARY TABLE gh_event( id STRING, -- 每個(gè)事件的唯一ID。 created_at BIGINT, -- 事件時(shí)間,單位秒。 created_at_ts as TO_TIMESTAMP(created_at*1000), -- 事件時(shí)間戳(當(dāng)前會(huì)話時(shí)區(qū)下的時(shí)間戳,如:Asia/Shanghai)。 type STRING, -- Github事件類型,如:ForkEvent, WatchEvent, IssuesEvent, CommitCommentEvent等。 actor_id STRING, -- Github用戶ID。 actor_login STRING, -- Github用戶名。 repo_id STRING, -- Github倉(cāng)庫(kù)ID。 repo_name STRING, -- Github倉(cāng)庫(kù)名,如:apache/flink, apache/spark, alibaba/fastjson等。 org STRING, -- Github組織ID。 org_login STRING -- Github組織名,如: apache,google,alibaba等。 ) WITH ( 'connector' = 'sls', -- 實(shí)時(shí)采集的Github事件存放在阿里云SLS中。 'project' = 'github-events-shenzhen', -- 存放公開(kāi)數(shù)據(jù)的SLS項(xiàng)目。本示例以深圳為例,您需要修改為您的實(shí)際地域信息。 'endPoint' = 'https://cn-shenzhen-intranet.log.aliyuncs.com', -- 公開(kāi)數(shù)據(jù)僅限VVP通過(guò)私網(wǎng)地址訪問(wèn)。本示例以深圳為例,您需要修改為您的實(shí)際地域信息。 'logStore' = 'realtime-github-events', -- 存放公開(kāi)數(shù)據(jù)的SLS logStore。 'accessId' = 'LTAI5tNF1rP8PKVyYjr9TKgh', -- 只讀賬號(hào)的AK,無(wú)需修改。 'accessKey' = 'FDgsh6fjSmkbFsx083tN6HOiqNVWTP', -- 只讀賬號(hào)的SK,無(wú)需修改。 'batchGetSize' = '500', -- 批量讀取數(shù)據(jù),每批最多拉取500條。 'startTime' = '2023-07-24 00:00:00' -- 開(kāi)始時(shí)間,盡量設(shè)置到需要計(jì)算的時(shí)間附近,否則無(wú)效計(jì)算的時(shí)間較長(zhǎng)。默認(rèn)值為當(dāng)前值。 ); -- 配置開(kāi)啟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'; -- 作業(yè)設(shè)置4個(gè)并發(fā),聚合更快。 SET 'parallelism.default' = '4'; -- 查看某組織(如:apache)最近7天的開(kāi)發(fā)者活躍度實(shí)時(shí)趨勢(shì)。 SELECT NOW() as `current_ts`, COUNT(*) as pr_count FROM gh_event WHERE org_login = 'apache' and type = 'PullRequestEvent' and created_at_ts >= NOW() - INTERVAL '7' DAY;
按照實(shí)際地域配置WITH參數(shù)中的project和endPoint(本示例以深圳地域?yàn)槔渌麉?shù)保持默認(rèn)值,無(wú)需修改。
地域
參數(shù)
說(shuō)明
北京
project
github-events-beijing
endPoint
https://cn-beijing-intranet.log.aliyuncs.com
杭州
project
github-events-hangzhou
endPoint
https://cn-hangzhou-intranet.log.aliyuncs.com
上海
project
github-events-shanghai
endPoint
https://cn-shanghai-intranet.log.aliyuncs.com
深圳
project
github-events-shenzhen
endPoint
https://cn-shenzhen-intranet.log.aliyuncs.com
單擊調(diào)試。
在彈出的對(duì)話框中,選擇調(diào)試集群為flink-sql-test-session(第一步中創(chuàng)建的Session集群),確認(rèn)調(diào)試數(shù)據(jù)狀態(tài)為線上數(shù)據(jù)后,單擊確定。
查看可視化結(jié)果。
如果需要繼續(xù)下一步,請(qǐng)單擊結(jié)果區(qū)域左側(cè)紅色停止按鈕。
因?yàn)檫@是一個(gè)流式作業(yè),作業(yè)會(huì)持續(xù)運(yùn)行,結(jié)果會(huì)持續(xù)更新。此步驟完成后如果您忘記單擊停止按鈕且繼續(xù)了后續(xù)示例的執(zhí)行,可能會(huì)出現(xiàn)資源不足無(wú)法顯示結(jié)果的情況。這時(shí),您需要在Session集群頁(yè)面先停止Session集群,再啟動(dòng)Session集群。
統(tǒng)計(jì)過(guò)去一周里Github小時(shí)級(jí)別的評(píng)論熱力圖
復(fù)制如下代碼到作業(yè)開(kāi)發(fā)文本編輯區(qū)。
-- 通過(guò)DDL語(yǔ)句創(chuàng)建SLS源表,SLS中存放了Github的實(shí)時(shí)數(shù)據(jù)。 CREATE TEMPORARY TABLE gh_event( id STRING, -- 每個(gè)事件的唯一ID。 created_at BIGINT, -- 事件時(shí)間,單位秒。 created_at_ts as TO_TIMESTAMP(created_at*1000), -- 事件時(shí)間戳(當(dāng)前會(huì)話時(shí)區(qū)下的時(shí)間戳,如:Asia/Shanghai)。 type STRING, -- Github事件類型,如:ForkEvent, WatchEvent, IssuesEvent, CommitCommentEvent等。 actor_id STRING, -- Github用戶ID。 actor_login STRING, -- Github用戶名。 repo_id STRING, -- Github倉(cāng)庫(kù)ID。 repo_name STRING, -- Github倉(cāng)庫(kù)名,如:apache/flink, apache/spark, alibaba/fastjson等。 org STRING, -- Github組織ID。 org_login STRING -- Github組織名,如: apache,google,alibaba等。 ) WITH ( 'connector' = 'sls', -- 實(shí)時(shí)采集的Github事件存放在阿里云SLS中。 'project' ='github-events-shenzhen', -- 存放公開(kāi)數(shù)據(jù)的SLS項(xiàng)目。本示例以深圳為例,您需要修改為您的實(shí)際地域信息。 'endPoint' = 'https://cn-shenzhen-intranet.log.aliyuncs.com', -- 公開(kāi)數(shù)據(jù)僅限VVP通過(guò)私網(wǎng)地址訪問(wèn)。本示例以深圳為例,您需要修改為您的實(shí)際地域信息。 'logStore' = 'realtime-github-events', -- 存放公開(kāi)數(shù)據(jù)的SLS logStore。 'accessId' = 'LTAI5tNF1rP8PKVyYjr9TKgh', -- 只讀賬號(hào)的AK,無(wú)需修改。 'accessKey' = 'FDgsh6fjSmkbFsx083tN6HOiqNVWTP', -- 只讀賬號(hào)的SK,無(wú)需修改。 'batchGetSize' = '500', -- 批量讀取數(shù)據(jù),每批最多拉取500條。 'startTime' = '2023-07-24 00:00:00' -- 開(kāi)始時(shí)間,盡量設(shè)置到需要計(jì)算的時(shí)間附近,否則無(wú)效計(jì)算的時(shí)間較長(zhǎng)。默認(rèn)值為當(dāng)前值。 ); -- 配置開(kāi)啟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'; -- 作業(yè)設(shè)置4個(gè)并發(fā),聚合更快。 SET 'parallelism.default' = '4'; -- 實(shí)時(shí)統(tǒng)計(jì)過(guò)去一周里Github小時(shí)級(jí)別的評(píng)論熱力圖。 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 (type='CommitCommentEvent' OR type='IssueCommentEvent' or type = 'PullRequestReviewCommentEvent') GROUP BY DATE_FORMAT(created_at_ts, 'yyyy-MM-dd'), HOUR(created_at_ts) ;
按照實(shí)際地域配置WITH參數(shù)中的project和endPoint(本示例以深圳地域?yàn)槔渌麉?shù)保持默認(rèn)值,無(wú)需修改。
地域
參數(shù)
說(shuō)明
北京
project
github-events-beijing
endPoint
https://cn-beijing-intranet.log.aliyuncs.com
杭州
project
github-events-hangzhou
endPoint
https://cn-hangzhou-intranet.log.aliyuncs.com
上海
project
github-events-shanghai
endPoint
https://cn-shanghai-intranet.log.aliyuncs.com
深圳
project
github-events-shenzhen
endPoint
https://cn-shenzhen-intranet.log.aliyuncs.com
單擊調(diào)試。
在彈出的對(duì)話框中,選擇調(diào)試集群為flink-sql-test-session(第一步中創(chuàng)建的Session集群),確認(rèn)調(diào)試數(shù)據(jù)狀態(tài)為線上數(shù)據(jù)后,單擊確定。
查看可視化結(jié)果。
完成本示例后,請(qǐng)單擊結(jié)果區(qū)域左側(cè)紅色停止按鈕。
因?yàn)檫@是一個(gè)流式作業(yè),作業(yè)會(huì)持續(xù)運(yùn)行,結(jié)果會(huì)持續(xù)更新。體驗(yàn)完成之后,請(qǐng)及時(shí)單擊停止按鈕,否則會(huì)繼續(xù)消耗計(jì)算資源。
延伸閱讀
產(chǎn)品介紹查看什么是阿里云實(shí)時(shí)計(jì)算Flink版。
產(chǎn)品優(yōu)勢(shì)查看功能與優(yōu)勢(shì)。
更多連接器查看支持的連接器。