使用Amazon Athena和 Amazon QuickSight進行天氣數據可視化分析

關鍵詞:Athena、QuickSight,S3
適讀水平:有必定AWS基礎
適讀職業:數據分析,DBA
應用場景:大數據分析php

隨着目前企業數字化轉型的推動,業務系統產生了大量數據,如何利用好這些海量數據成爲企業IT運營面臨的一大難題。從傳統的方案來看,須要企業自行架設Hadoop集羣,因爲大數據分析對數據存儲和數據運算需求都比較高,因此硬件配置的需求也很高,致使整個項目成本高昂。git

在使用了雲服務器之後,能夠解決本地數據中心的運維難題,並經過高標準高規格的硬件和數據中心提高了總體系統的穩定性。但若是隻是經過雲服務器來部署,僅僅是解決了服務器運維的問題,並不能最大化的利用雲端大數據分析服務的優點。數據庫

在AWS上除了提供託管Hadoop服務的EMR以外,還提供了不少大數據相關的分析服務,例如數據倉庫Redshift,實時數據處理Kinesis,ETL服務Glue等。安全

在AWS託管的服務上,您只須要爲使用的資源付費,按需付費模式避免本地數據中心建設中的重資產投入,也避免了雲服務器空閒時間致使的資源浪費。服務器

今天咱們來演示一種快速進行大數據分析的場景,無需架設服務器,實時使用SQL語言進行數據查詢。網絡

背景和挑戰

全球氣候分析對於研究人員評估氣候變化對地球天然資本和生態系統資源的影響相當重要。 這項活動須要高質量的氣候數據集,這多是具備挑戰性的工做,由於它們的規模和複雜性。運維

爲了對他們的發現有信心,研究人員必須對他們研究的氣候數據集的來源有信心。 例如,研究人員可能會試圖回答這樣的問題: 某個特定糧食生產區的氣候變化是否會影響糧食安全? 他們必須可以輕鬆地查詢權威和管理數據集。編輯器

美國國家環境信息中心(NCEI)維護着一個氣候數據集,這個數據集是基於全球氣象站的觀測數據。 它是《全球歷史氣候網絡日報》(GHCN-D)ーー一個地面站每日天氣摘要的中央儲存庫。 它由數以百萬計的有質量保證的觀測數據組成,天天更新。oop

研究人員經過一個按年分隔存儲的FTP服務器,以CSV格式提供天氣數據。按年組織意味着一份完整的檔案須要超過255個文件,傳統上,一個研究人員要研究這個數據,須要把整個數據都下載到本地,爲了保證使用最新的數據進行分析,他們必須天天重複下載這些數據。性能

解決方案

經過AWS與NOAA的大數據合做項目,如今能夠在 AWS 上得到 GHCN d 數據集的每日快照。 這些數據能夠經過 Amazon S3 bucket 公開訪問。已這種方式獲取數據有如下幾個好處:

  1. 這些數據能夠經過S3在全球範圍內進行訪問,用戶無需完整下載數據才能使用,每一個人均可使用相同的一致的副本。
  2. 減小了分析的時間,經過咱們本次演示的Athena和Insight服務,能夠當即開始分析
  3. 研究的成本下降了,研究人員無需架設服務器和Hadoop集羣,一旦分析完成,能夠隨時關閉資源

本篇文章展現了一個使用Amazon S3,Amazon Athena,AWS Glue和Amazon QuickSight的工做流程,演示了人們從這個數據集中獲取洞察力的速度。

本次工做流遵循如下工做步驟:

  • 從NOAA桶中提取數據文件,並將數據做爲表格提供
  • 使用SQL查詢表中的數據
  • 演示如何經過查詢建立表並將這些表存儲在Amazon S3私有存儲桶中來加速分析
  • 將數據作可視化便於展現

image1.png

工做流程

  1. 提取年度.csv文件並將其添加到Athena的表中
  2. 提取站點數據並將其添加到Athena的一個單獨的表格

年度文件提取

完整的每日天氣觀測數據按年份組織在 Amazon S3桶的一個文件夾中。 Csv 格式。 數據的路徑是 s3://noaa-ghcn-pds/csv/ 。

每一個文件都以1763年開始的年份命名.csv而且存儲直到當前年份。

進入Athena控制檯,點擊AWS Glue Data Catalogj進入Glue控制檯,在右側選擇表菜單,選擇手動添加表

image2.png

設置一個表名稱並添加一個數據庫

image3.png

再下一步選擇另外一個帳戶的其餘路徑,輸入NOAA的公共存儲桶位置 s3://noaa-ghcn-pds/csv/ 。

image4.png

接下來定義Schema

image5.png

添加如下列,使用string類型(字符串類型)
• id
• year_date
• element
• data_value
• m_flag
• q_flag
• s_flag
• obs_time

添加好後點擊完成,返回到Athena控制檯,能夠在左側看到建立好的表,這裏有些準備工做要作。在運行咱們的第一個Athena查詢以前,要設置一個S3存儲桶用於存放查詢結果

image6.png

與此同時,咱們也建立一些文件夾用於數據存放

  1. [your_bucket_name]/stations_raw/
  2. [your_bucket_name]/ghcnblog/
  3. [your_bucket_name]/ghcnblog/stations/
  4. [your_bucket_name]/ghcnblog/allyears/
  5. [your_bucket_name]/ghcnblog/1836usa/

設置好以後,咱們可使用表預覽來建立一條查詢語句

image7.png

運行查詢能夠看到咱們的表中的數據

image8.png

使用CATS加速查詢

在剛纔的查詢中咱們能夠看到查詢語句運行的速度不是很快,咱們須要建立一個表使用CREATE TABLE AS SELECT (CTAS)來加速查詢

緣由是在這個過程當中,咱們只提取一次數據,並將提取的數據以列格式(Parquet)存儲在私有的 Amazon S3 bucket 中

爲了說明速度的提升,這裏有兩個例子:

  • 一個查詢計算全部不一樣的 id,也就是惟一的氣象站,大約須要55秒,掃描大約88gb 的數據。
  • 對轉換後的數據進行一樣的查詢大約須要13秒鐘,並掃描大約5gb 的數據。

接下來是步驟:

  1. 打開Athena控制檯
  2. 建立一條新的查詢語句,並把其中的存儲桶名稱替換成你本身的
/*converting data to Parquet and storing it in a private bucket*/
CREATE table ghcnblog.tblallyears_qa
WITH (
  format='PARQUET', external_location='s3://[your-bucket-name]/ghcnblog/allyearsqa/'
) AS SELECT * FROM ghcnblog.tblallyears
WHERE q_flag = '';

注意將相應桶名稱和表名稱換成你剛纔建立的。

運行後會看到有一個新的表出如今左側的庫裏,接下來咱們將會在這個新的表上繼續工做

image9.png

提取數據並把它添加到Athena的表中

站點文本文件包含有關氣象站的信息,例如位置、國籍和 ID。 這些數據保存在一個獨立的文件中,不一樣於每一年的觀察數據。 咱們須要導入這些數據來觀察天氣觀測的地理分佈。 雖然處理這個文件有點複雜,可是將這些數據導入Athena的步驟與咱們已經完成的類似。

爲了導入這些數據咱們將採起如下步驟:
1.下載 ghcnd-stations text file.
2.使用一個表格編輯器,例如Excel打開這個文件
3.另存爲CSV文件
4.將這個csv文件上傳到以前創建的 [your_bucket_name]/stations_raw/文件夾
5.使用Glue添加表格,就像咱們以前作的那樣

image10.png

在添加列步驟添加如下列
• id
• latitude
• longitude
• elevation
• state
• name
• gsn_flag
• hcn_flag
• wmo_id

點擊完成後咱們看下錶預覽,能夠看到數據已經導入成功

image11.png

6.接下來依然使用CATS將數據存儲爲parquet格式

/*converting data to Parquet and storing it in a private bucket*/
CREATE table ghcnblog.tblghcnd_stations_qa
WITH (
  format='PARQUET', external_location='s3://athena-cx-bucket/ghcnblog/stations/'
) AS SELECT * FROM ghcnblog.tblghcnd_stations

至此,咱們已經準備好了數據並導入到Athena之中
簡單數據分析
接下來咱們將演示幾個數據分析的例子

1.查詢從1763年以來觀測點的數量

SELECT count(*) AS Total_Number_of_Observations
FROM ghcnblog.tblallyears_qa;

image12.png

2.查詢地面站的數量

SELECT count(*) AS Total_Number_of_Stations
FROM ghcnblog.tblghcnd_stations_qa;

image13.png

3.地球平均氣象參數

下圖顯示了計算自1763年以來地球平均最高溫度(攝氏度)、平均最低溫度(攝氏度)和平均降雨量(毫米)查詢。 在查詢中,咱們必須將數據值從 String 變量轉換爲 Real 變量。 咱們還必須除以10,由於溫度和降水量的測量值,是它們各自單位的十分之一。

有關這些細節和元素代碼(TMIB、 TMAX 和 PRCP)的詳細信息,請參閱自述文件。

SELECT element,
         round(avg(CAST(data_value AS real)/10),2) AS value
FROM ghcnblog.tblallyears_qa
WHERE element IN ('TMIN', 'TMAX', 'PRCP')
GROUP BY  element;

若是咱們能夠在這個數據集上運行簡單的查詢(好比這個查詢) ,並接受結果是正確的,那將會很是方便。 前面的查詢假設自1763年以來,全世界的氣象站均勻平均地分佈。 事實上,氣象站的數量和分佈隨時間而變化。

image14.png

4.可視化顯示地球上氣象站的數量增加狀況

接下來咱們要引入Amazon QuickSight.進行數據可視化展現,在實驗前您必須配置好QuickSight,包含註冊,受權QuickSight訪問Athena和S3。

  1. 打開QuickSight控制檯
  2. 點擊最右上角,帳戶菜單選擇管理QuickSight
  3. 選擇安全性和權限,確保鏈接了S3和Athena

image15.png

接着返回主菜單,選擇新分析,而後選擇新數據集,在下方數據源裏選擇Athena,輸入咱們在Athena建立的數據庫名字ghcnblog,而後點擊建立數據源

image16.png

image17.png

選擇使用自定義SQL,輸入如下語句

SELECT DISTINCT id AS numberofstations,
substr(year_date,1,4) as year
FROM ghcnblog.tblallyears_qa
GROUP BY substr(year_date,1,4), id
ORDER BY substr(year_date,1,4)

image18.png

選擇確認查詢,並選擇直接查詢數據,點擊Visualize,在可視化圖表裏選擇折線圖,把year數據做爲X軸,把number_of_stations 做爲值,便可獲得一張全球氣象站數量的增加曲線圖

image19.png

美國氣象觀測站數量分析

1836年數據集中美國第一次設立氣象站。 爲了深刻了解美國觀測的發展,咱們從主數據源(tblallyears qa)中提取了美國數據的子集。 從1836年到2016年,這個數據集每30年收集一次數據。 此查詢生成一個大數據集。 爲了提升性能,使用前面描述的過程將查詢保存爲存儲在 Amazon S3 bucket 中的表。 在Athena中執行如下語句。

CREATE TABLE ghcnblog.tbl1836every30thyear
WITH (
  format='PARQUET',
  external_location='s3://[your-bucket-name]/ghcnblog/1836every30years/'
) AS
SELECT TA.id as id, substr(TA.year_date,1,4) as year, TS.state, CAST(TS.longitude as real) as longitde, CAST(TS.latitude as real) as latitude, element, CAST(data_value as real) as data_value
FROM "ghcnblog".tblallyears_qa as TA, "ghcnblog".tblghcnd_stations_qa as TS
WHERE substr(TA.year_date,1,4) IN ('1836', '1866', '1896', '1926', '1956', '1986', '2016')
AND substr(TA.id,1,2) = 'US'
AND state <> 'PI'
AND TRIM(TA.id) = TRIM(TS.id)
GROUP BY TA.id, substr(TA.year_date,1,4), state, longitude, latitude, element, data_value;

而後在QuickSight中建立一個新的分析,使用建立好的新表做爲數據源
並使用如下自定義SQL

SELECT DISTINCT(id) AS number_of_stations, year, state
FROM ghcnblog.tbl1836every30thyear
GROUP BY year, id, state
ORDER BY year

在接下來的可視化界面裏,選擇地球上的點做爲圖像類型,地理位置數據選擇state,size選擇氣象站數量,並使用總數統計,顏色選擇年份

image20.png

經過自定義SQL也能夠計算出美國每一個州的平均溫度等數據

image21.png

總結

經過本文演示,咱們瞭解到經過Athena,Glue和QuickSight這個產品組合,能夠快速的構建一個可視化大數據分析平臺,而且無需架設服務器和維護Hadoop集羣。對於快速驗證分析數據,做出商業決策是很是便利的。

同時這些服務的計費也都是經過分析的數據量來收取,大大下降了資源的閒置成本,在數據分析得出結果後還能夠把數據進一步存放到成本更低的S3 Glacier中歸檔,進一步節省成本。


做者:光環雲 陳昕
原文:查看原文

相關文章
相關標籤/搜索