iT邦幫忙

2021 iThome 鐵人賽

DAY 18
1
AI & Data

Data on AWS - 實作建立 Data Analytics Pipeline系列 第 18

【Day 18】 實作 - 透過 AWS 服務 Glue Crawler 自動建立 VPC Log 資料表

  • 分享至 

  • xImage
  •  

大家午安 ~
昨天我們已經啟用 VPC Flow Log 並且存放到 S3,今天我們會設定 AWS Glue Crawler 自動建立 VPC Log 資料表,以供 Athena 查詢
註:如果想手動建立 VPC Log 資料表,可以參考[1]
https://ithelp.ithome.com.tw/upload/images/20211005/201310734DuccYTKaB.png
那我們就開始吧 GO GO


步驟一、搜尋 Glue

https://ithelp.ithome.com.tw/upload/images/20211002/201310733lRLrtLXhZ.png


步驟二、點選左側選單的 Classifiers 並按 Add Classifier

昨天觀察 VPC Log 的資料,你會發現『每個欄位都是以空格去間隔』,但 Glue Crawler 預設是依據逗號作欄位間隔,故我們需要先增加 Classifiers 來自定義『欲抓取的資料』分隔符號、檔案類型、欄位名稱等設定
Classifier name:自行定義名稱即可
Classifier type:CSV
Column delimiter:Space
Quote symbol:Doublue-quote(“)
Column headings:因我們觀察原始資料是有表格欄位名稱的,故選擇 has headings
https://ithelp.ithome.com.tw/upload/images/20211002/20131073HqKLMHySCq.png


步驟三、點選左側選單的 Crawler 並按 Add Crawler

https://ithelp.ithome.com.tw/upload/images/20211002/20131073yF86Tvb4s4.png


步驟四、輸入 Crawler 名稱,以及 Add 剛剛創建的 Classifiers 後按下一步

https://ithelp.ithome.com.tw/upload/images/20211002/20131073qchKXmQMBF.jpg


步驟五、設定來源資料類型以及每次爬的方式

https://ithelp.ithome.com.tw/upload/images/20211002/20131073QCCggzPyoN.jpg


步驟六、選取 S3 並指定我們 VPC Log 資料夾

https://ithelp.ithome.com.tw/upload/images/20211002/20131073OXozsPfJ4e.jpg


步驟七、是否要增加其他來源資料,這邊我們選 NO

https://ithelp.ithome.com.tw/upload/images/20211002/20131073JMfOytzvN3.jpg


步驟八、創建一個新的 IAM Role

注意:若要使用已存在的 role,那要確認此 role 是否有適當的權限喔~
https://ithelp.ithome.com.tw/upload/images/20211002/20131073dbhQZrOwtb.jpg


步驟九、設定排程

我們這邊選擇手動執行( Run on demand )即可
https://ithelp.ithome.com.tw/upload/images/20211002/20131073cNASNEChlz.jpg


步驟十、選擇資料庫以及資料表的前綴詞

(可以不增加前綴詞,如果有重複名稱,系統會自動加序號,避免資料表名稱重複)
https://ithelp.ithome.com.tw/upload/images/20211002/20131073KRvPbBaIhi.jpg


步驟十一、選擇此 Crawlers 並執行 Run crawler

https://ithelp.ithome.com.tw/upload/images/20211002/20131073t1REwIaAwH.jpg


執行完後就可以看到有新增一個 Table

https://ithelp.ithome.com.tw/upload/images/20211002/20131073uclfaDDEXB.jpg

接著我們至左側選單的 Tables,可以看到資料表的欄位以及對應格式,其中有看到幾個欄位名稱為 partition_x,這是什麼呢?
https://ithelp.ithome.com.tw/upload/images/20211002/20131073nmXhzffCwI.png

我們點擊 View partitions 可以看到目前 partition 的結構,發現 Glue 自動幫我們將每一層資料夾切分成 partition
https://ithelp.ithome.com.tw/upload/images/20211002/20131073sJfrqq8nyC.png
https://ithelp.ithome.com.tw/upload/images/20211002/20131073MtLwryVCwf.png
適當的 partition 有助於大量資料查詢,舉例來說:
假設今天我只要搜尋 09 月的資料,如果沒有 partition 的情形下要撈出 09 月資料,Athena 會搜尋指定路徑下每個資料夾,但如果有 partition 並且於 SQL 語法增加 where 篩選,這樣 Athena 僅會搜尋指定的 partition 下資料,有 Partition 可以大大加快查詢速度且費用也會大大減少


除了建立良好的 Partition 外,將資料轉換成 Parquet 這種儲存格式,也是加快查詢速度很好的方式喔! 先前我們有教學用 Lambda 將 json 轉換成 parquet,我們也可以透過 AWS Glue job 來完成這個轉換並且依據個人需求切出你需要的 Partition 結構~
明天我們就會來實作 – 如何用 AWS Glue job 進行 Parquet 格式轉換

明天見囉 : D ~

如果有任何指點與建議,也歡迎留言交流,一起漫步在 Data on AWS 中。

[1] 手動為 VPC 日誌建立資料表
https://docs.aws.amazon.com/zh_tw/athena/latest/ug/vpc-flow-logs.html


上一篇
【Day 17】 實作 - 啟用 AWS VPC 日誌
下一篇
【Day 19】 實作 - 透過 AWS 服務 Glue Job 調整 Partition 以及檔案格式
系列文
Data on AWS - 實作建立 Data Analytics Pipeline30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言