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的比例

  • 不同年齡段的消費客單價趨勢

  • 高消費人羣的性別和年齡趨勢



本文作者:潭潭

閱讀原文

本文爲雲棲社區原創內容,未經允許不得轉載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章