TableStore(簡稱OTS)是阿里雲的一款分佈式表格系統,爲用戶提供schema-free的分佈式表格服務。隨着愈來愈多用戶對OLAP有強烈的需求,咱們提供在表格存儲上接入Data Lake Analytics(簡稱DLA)服務的方式,提供一種快速的OLAP解決方案。DLA是阿里雲上的一款的通用SQL查詢引擎,經過在OTS連通DLA服務,使用通用的SQL語言(兼容mysql5.7絕大部分查詢語法),在表格存儲上作靈活的數據分析任務。html
如上圖所示,總體OLAP查詢架構涉及3款阿里雲產品:DLA,OTS,OSS。其中DLA負責分佈式SQL查詢計算,在實際運行過程當中,會將用戶sql查詢請求進行任務拆解,產生若干可並行化的子任務,提高數據計算和查詢能力。OTS爲數據存儲層,用於接收DLA的各種子查詢任務。若是用戶已經有存量的數據在OTS上,能夠直接在DLA上創建映射視圖,實現快速體驗SQL計算帶來的便捷。OSS爲分佈式對象存儲系統,主要用於用戶查詢結果數據的保存。java
所以用戶要想快速體驗SQL on OTS,必須在開通OTS的前提下,完成DLA和OSS服務的開通。經過上述3個雲產品的配合,用戶就能在OTS上快速執行SQL計算。目前開通OSS服務的主要緣由是DLA默認回查詢結果集數據寫回到OSS存儲,所以須要引入一個額外的存儲依賴,但僅依賴用戶開通OSS服務,不須要用戶預先建立OSS存儲實例。mysql
目前開服公測的區域是上海區,對應的實例是該region內全部的容量型實例。在開通DLA服務時,須要先填寫公測申請,經過以後按照「接入方式」小節的步驟,能快速完成接入體驗。sql
整個主要包含OTS、OSS、DLA的服務接入。須要注意的一點是,完成接入以後,就會按照實際查詢產生相應的費用。如在這個過程當中,用戶帳號是欠費的,將會發生查詢失敗。數據庫
若是用戶已經開通的OTS服務,而且上面已經包含存量的實例,表格數據,則忽略該步驟。api
對於首次使用OTS的用戶,可按照下述方式開通OTS:架構
按照上面的文檔說明,快速創建實例和表格,進行體驗;異步
1)使用控制檯,快速建立測試表格:
2)使用控制檯,快速插入測試數據:
OSS服務開通後,不須要創景對象實例,DLA接入時,會自動爲用戶在OSS服務中,建立用於存儲查詢結果數據的對象存儲實例,用戶不須要關心。async
注意:處於公測階段時,開通服務須要作公測申請,填寫好相關信息便可。分佈式
按照下列步驟,在DLA上創建OTS的映射:
開通DLA服務以後,能夠選擇不一樣region,選擇開通對應region的DLA服務實例(如如今華東2的上海區域)。不一樣的region,對應不一樣的帳號,不一樣region的DLA帳號,不能混用,以下圖所示:
![service_open.jpg](http://ata2-img.cn-hangzhou.img-pub.aliyun-inc.com/ecc5446d0d8298adc493a72de5567d3d.jpg) ![service_open2.jpg](http://ata2-img.cn-hangzhou.img-pub.aliyun-inc.com/acba06dae5f78a2ed740bc67397a0316.jpg) 注意:帳號建立完成以後,會收到相關郵件(郵箱爲阿里雲的註冊郵箱),內含該region的DLA帳號和密碼,注意查收。
點擊數據庫鏈接,使用郵件中的該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的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 client也能快速連通DLA的數據實例。其中鏈接語句爲:
mysql -h service.cn-shanghai.datalakeanalytics.aliyuncs.com -P 10000 -u <username> -p <password> -c -A
其餘操做語句跟「控制檯訪問」小節介紹一致。
也可使用標準的java api實現訪問,鏈接串爲:
jdbc:mysql://service.cn-shanghai.datalakeanalytics.aliyuncs.com:10000/
其餘操做語句跟「控制檯訪問」小節介紹一致。
經過DLA+OTS,咱們能讓用戶快速在表格存儲上體驗極致的分佈式SQL計算。
做者: 阿杰.pt
本文爲雲棲社區原創內容,未經容許不得轉載。