TableStore實戰:DLA+SQL實時分析TableStore
一、實戰背景
什麼是DLA(DataLake Analytics資料湖)?他是無伺服器化(Serverless)的雲上互動式查詢分析服務。作為分散式互動式分析服務,是表格儲存計算生態的重要組成之一。為了使使用者更好的瞭解DLA的功能、使用方式,建立了這一實戰樣例。
基於DLA可以不用做任何ETL、資料搬遷等前置過程, 實現跨各種異構資料來源進行大資料關聯分析,並且支援資料迴流到各個異構資料來源,從而極大的節省成本、 降低延時和提升使用者體驗。
基於JDBC,表格儲存的控制檯將SQL查詢直接做了整合,資料為公共例項,使用者不用開通服務也可免費體驗表格儲存的實時SQL分析、查詢功能,樣例如下所示:__官網控制檯地址:__
需求場景:黑五交易資料
本實戰案例中,我們從 https://www.kaggle.com/mehdidag/black-friday 上獲取資料, 儲存到TableStore,然後基於DLA做分析,帶你切身感受下資料的價值!
"Black Friday",即“黑色星期五”,是美國人一年中購物最瘋狂的日子,類似於中國的“雙十一”購物狂歡節。
一般黑色星期五的活動主要線上下,但逐漸也有往線上發展的趨勢,比如Amazon就有針對黑色星期五做的線上銷售活動, 與天貓雙十一很相似。同樣的,這樣的活動會產生大量有意義的商業資料。
我們在DLA中定義了一個叫blackfriday50w的表,對映到TableStore中的一個表,用來描述使用者購買商品的。
如下為示例資料的表結構、與真實資料截圖
二、表格儲存(TableStore)方案
準備工作
若您對於DLA實時線上分析TableStore的功能感興趣,希望開始自己系統的搭建之旅,只需按照如下步驟便可以著手搭建了:
1、開通表格儲存
通過控制檯開通表格儲存服務,表格儲存即開即用(後付費),採用按量付費方式,已為使用者提供足夠功能測試的免費額度。表格儲存官網控制檯、免費額度說明。
2、建立例項
通過控制檯建立表格儲存例項。
3、匯入資料
該資料共有53.8萬行,12個列,我們通過SDK將全量資料儲存在TableStore的表。使用者可通過控制檯插入2條測試資料;
開通DLA服務
- DLA服務開通
使用者進入產品介紹頁,選擇開通服務:https://www.aliyun.com/product/datalakeanalytics - 通過DLA控制檯開通TableStore資料來源
- 開通資料來源後建立服務訪問點(擇經典網路,若已有vpc,可選擇vpc)
- 登入CMS(賬密會在開通服務後傳送站內訊息,訊息中檢視)
建立DLA外表
1)建立自己的DLA庫(相關資訊從上述過程中查詢):
mysql> create database hangzhou_ots_test with dbproperties (
catalog = 'ots',
location = 'https://instanceName.cn-hangzhou.ots-internal.aliyuncs.com',
instance = 'instanceName'
);
Query OK, 0 rows affected (0.23 sec)
#hangzhou_ots_test ---請注意庫名,允許字母、數字、下劃線
#catalog = 'ots', ---指定為ots,是為了區分其他資料來源,比如oss、rds等
#location = 'https://xxx' ---ots的endpoint,從例項上可以看到
#instance = 'hz-tpch-1x-vol'
2)檢視自己建立的庫:
mysql> show databases;
+------------------------------+
| Database |
+------------------------------+
| hangzhou_ots_test |
+------------------------------+
1 rows in set (0.22 sec)
3)檢視自己的DLA表:
mysql> use hangzhou_ots_test;
Database changed
mysql> show tables;
Empty set (0.30 sec)
4)建立DLA表,對映到OTS的表:
mysql> CREATE EXTERNAL TABLE `tableName` (
`pk1` varchar(100) not NULL ,
`pk2` int not NULL ,
`col1` varchar(100) NULL ,
`col2` varchar(100) NULL ,
PRIMARY KEY (`pk1`, `pk2`)
);
Query OK, 0 rows affected (0.36 sec)
## `tableName` ---- TableStore中對應的表名(dla中會轉換成小寫後做對映)
## `pk2` int not NULL ---- 如果是主鍵的話,必須要not null
## PRIMARY KEY (`pk1`, `pk2`) ---- 務必與ots中的主鍵順序相同;名稱的話也要對應
5)檢視自己建立的表和相關的DDL語句:
mysql> show tables;
+------------+
| Table_Name |
+------------+
| tablename |
+------------+
1 row in set (0.35 sec)
6)開始查詢和分析(使用者可以分析自己的資料,符合mysql的語法)
mysql> select count(*) from tablename;
+-------+
| _col0 |
+-------+
| 25 |
+-------+
1 row in set (1.19 sec)
這樣,一個TableStore在DLA中的關聯外表建立成功,使用者便可以通過JDBC、或者CMS控制檯,根據自己的需求實時分析自己的TableStore表了。
三、表格儲存控制檯展示
如下為控制提供的SQL場景,使用者可以仿照控制檯中例項自己寫一些需求SQL,開來嘗試吧!
- 最暢銷的top10產品和銷售量
- 中高階產品佔總體GMV的比例
- 不同年齡段的消費客單價趨勢
- 高消費人群的性別和年齡趨勢
四、歡迎加入
這樣,基於DLA+SQL實現的TableStore實時線上分析已經完成,是不是很簡單?
對錶格儲存(TableStore)感興趣的使用者,歡迎加入【表格儲存公開交流群】,群號:11789671。