OLAP on TableStore:基於Data Lake Analytics的Serverless SQL大資料分析
背景介紹
TableStore(簡稱OTS)是阿里雲的一款分散式表格系統,為使用者提供schema-free的分散式表格服務。隨著越來越多使用者對OLAP有強烈的需求,我們提供在表格儲存上接入Data Lake Analytics(簡稱DLA)服務的方式,提供一種快速的OLAP解決方案。DLA是阿里雲上的一款的通用SQL查詢引擎,通過在OTS連通DLA服務,使用通用的SQL語言(相容mysql5.7絕大部分查詢語法),在表格儲存上做靈活的資料分析任務。
架構檢視
如上圖所示,整體OLAP查詢架構涉及3款阿里雲產品:DLA,OTS,OSS。其中DLA負責分散式SQL查詢計算,在實際執行過程中,會將使用者sql查詢請求進行任務拆解,產生若干可並行化的子任務,提升資料計算和查詢能力。OTS為資料儲存層,用於接收DLA的各類子查詢任務。如果使用者已經有存量的資料在OTS上,可以直接在DLA上建立對映檢視,實現快速體驗SQL計算帶來的便捷。OSS為分散式物件儲存系統,主要用於使用者查詢結果資料的儲存。
因此使用者要想快速體驗SQL on OTS,必須在開通OTS的前提下,完成DLA和OSS服務的開通。通過上述3個雲產品的配合,使用者就能在OTS上快速執行SQL計算。目前開通OSS服務的主要原因是DLA預設回查詢結果集資料寫回到OSS儲存,因此需要引入一個額外的儲存依賴,但僅依賴使用者開通OSS服務,不需要使用者預先建立OSS儲存例項。
目前開服公測的區域是上海區,對應的例項是該region內所有的容量型例項。在開通DLA服務時,需要先填寫公測申請,通過之後按照“接入方式”小節的步驟,能快速完成接入體驗。
接入方式
整個主要包含OTS、OSS、DLA的服務接入。需要注意的一點是,完成接入之後,就會按照實際查詢產生相應的費用。如在這個過程中,使用者賬號是欠費的,將會發生查詢失敗。
OTS服務開通
如果使用者已經開通的OTS服務,並且上面已經包含存量的例項,表格資料,則忽略該步驟。
對於首次使用OTS的使用者,可按照下述方式開通OTS:
- 登入https://www.aliyun.com;
- 進入“產品”->"雲端計算基礎"->"資料庫"->“表格儲存 TableStore”;
- 按照上面的文件說明,快速建立例項和表格,進行體驗;
1)使用控制檯,快速建立測試表格:
2)使用控制檯,快速插入測試資料:
OSS服務開通
- 登入https://www.aliyun.com;
- 進入“產品”->"雲端計算基礎"->"儲存服務"->“物件儲存 OSS”;
- 直接點選服務開通即可。
OSS服務開通後,不需要創景物件例項,DLA接入時,會自動為使用者在OSS服務中,建立用於儲存查詢結果資料的物件儲存例項,使用者不需要關心。
DLA服務開通
- 登入https://www.aliyun.com;
- 進入“產品”->"大資料"->"大資料計算"->“Data Lake Analytics”;
- 直接點選服務開通;
注意:處於公測階段時,開通服務需要做公測申請,填寫好相關資訊即可。
DLA on OTS接入
按照下列步驟,在DLA上建立OTS的對映:
- 開通DLA服務之後,可以選擇不同region,選擇開通對應region的DLA服務例項(如現在華東2的上海區域)。不同的region,對應不同的賬號,不同region的DLA賬號,不能混用,如下圖所示:
注意:賬號建立完成之後,會收到相關郵件(郵箱為阿里雲的註冊郵箱),內含該region的DLA賬號和密碼,注意查收。
- 選擇region,授權DLA訪問OTS上的使用者例項資料,如下圖所示:
- 服務開通之後,有3中SQL訪問方式:控制檯、mysql client,JDBC。
控制檯訪問
點選資料庫連線,使用郵件中的該region的使用者名稱和密碼,連線進入控制檯。
進入控制檯後,需要為OTS上的例項表格資料建立對映資訊。場景舉例:假設使用者在上海region已經有一個名為sh_tpch的例項,該例項包含表格test001,裡面包含2行測試資料。對該例項建立對映的步驟包括:
1)將ots的例項對映成DLA的一個DataBase例項:
在建立DLA的Database對映前,首先需要在OTS上建立一個表格儲存的例項instance,如:
建立一個例項,名為sh-tpch,對應的endpoint為https://sh-tpch.cn-shanghai.ots.aliyuncs.com。
完成測試例項建立後,執行下列語句建立Database對映:
CREATE SCHEMA sh_tpch001 with DBPROPERTIES(LOCATION ='https://sh-tpch.cn-shanghai.ots.aliyuncs.com', catalog='ots', instance ='sh-tpch');
注意:使用mysql client時,可以使用create database或create schema語句進行建立db對映;但是在控制檯,目前只支援create schema語句建立db對映。
上述語句,將在DLA上建立一個名為sh_tpch001的database,對應的例項是ots的http://sh-tpch.cn-shanghai.ots.aliyuncs.com叢集下名為sh-tpch的例項。通過上面的語句,就能產生一個ots的例項對映。
2)在tp_tpch001的DB下,建立表格的對映:
在建立DLA的表格對映前,首先需要在OTS建立測試表,流程參考"OTS服務開通"小節。
測試表格建立完成後,執行下列語句建立表格對映:
CREATE TABLE test001 (pk0 int , primary key(pk0));
注意:主要建立DLA對映表時,指定的Primary Key必須跟OTS表格定義Primary Key列表一致。因為Primary Key必須能是唯一的定位一行,一旦對映表的Primary Key列表與OTS表格的PK不一致,則可能會導致SQL查詢結果出現非預期的錯誤。
例如:使用者的OTS例項sh_tpch上包含test001表格,其中只有一列pk0。上面的命令就完成了在DLA的例項sh_tpch001上,建立對映表test001。使用show命令能檢視該表建立成功:
3)使用select語句執行sql查詢:
1. 查出所有資料:
select * from test001;
2. 執行count統計:
select count(*) from test001;
3. 執行sum統計:
select sum(pk0) from test001;
4)更為豐富執行語句,請檢視如下的幫助說明文件:
create schema語句:https://help.aliyun.com/document_detail/72005.html
create table語句:https://help.aliyun.com/document_detail/72006.html
select語句:https://help.aliyun.com/document_detail/71044.html
show語句:https://help.aliyun.com/document_detail/72011.html
drop table語句:https://help.aliyun.com/document_detail/72008.html
drop schema語句:https://help.aliyun.com/document_detail/72007.html
5)在做SQL執行時,可以選擇同步執行結果,返回滿足條件的前10000條記錄;如果要獲大結果集資料,需要選擇非同步執行,並使用show query_id的方式非同步獲取結果:
show query_task where id = '59a05af7_1531893489231';
mysql訪問
使用標準的mysql client也能快速連通DLA的資料例項。其中連線語句為:
mysql -h service.cn-shanghai.datalakeanalytics.aliyuncs.com -P 10000 -u <username> -p <password> -c -A
其他操作語句跟“控制檯訪問”小節介紹一致。
JDBC訪問
也可以使用標準的java api實現訪問,連線串為:
jdbc:mysql://service.cn-shanghai.datalakeanalytics.aliyuncs.com:10000/
其他操作語句跟“控制檯訪問”小節介紹一致。
總結
通過DLA+OTS,我們能讓使用者快速在表格儲存上體驗極致的分散式SQL計算。
本文為雲棲社群原創內容,未經