摘要:?TableStore(簡稱OTS)是阿里云的一款分布式表格系統(tǒng),為用戶提供schema-free的分布式表格服務(wù)。隨著越來越多用戶對OLAP有強烈的需求,我們提供在表格存儲上接入Data Lake Analytics(簡稱DLA)服務(wù)的方式,提供一種快速的OLAP解決方案。
背景介紹
TableStore(簡稱OTS)是阿里云的一款分布式表格系統(tǒng),為用戶提供schema-free的分布式表格服務(wù)。隨著越來越多用戶對OLAP有強烈的需求,我們提供在表格存儲上接入Data Lake Analytics(簡稱DLA)服務(wù)的方式,提供一種快速的OLAP解決方案。DLA是阿里云上的一款的通用SQL查詢引擎,通過在OTS連通DLA服務(wù),使用通用的SQL語言(兼容mysql5.7絕大部分查詢語法),在表格存儲上做靈活的數(shù)據(jù)分析任務(wù)。
架構(gòu)視圖
如上圖所示,整體OLAP查詢架構(gòu)涉及3款阿里云產(chǎn)品:DLA,OTS,OSS。其中DLA負(fù)責(zé)分布式SQL查詢計算,在實際運行過程中,會將用戶sql查詢請求進行任務(wù)拆解,產(chǎn)生若干可并行化的子任務(wù),提升數(shù)據(jù)計算和查詢能力。OTS為數(shù)據(jù)存儲層,用于接收DLA的各類子查詢?nèi)蝿?wù)。如果用戶已經(jīng)有存量的數(shù)據(jù)在OTS上,可以直接在DLA上建立映射視圖,實現(xiàn)快速體驗SQL計算帶來的便捷。OSS為分布式對象存儲系統(tǒng),主要用于用戶查詢結(jié)果數(shù)據(jù)的保存。
因此用戶要想快速體驗SQL on OTS,必須在開通OTS的前提下,完成DLA和OSS服務(wù)的開通。通過上述3個云產(chǎn)品的配合,用戶就能在OTS上快速執(zhí)行SQL計算。目前開通OSS服務(wù)的主要原因是DLA默認(rèn)回查詢結(jié)果集數(shù)據(jù)寫回到OSS存儲,因此需要引入一個額外的存儲依賴,但僅依賴用戶開通OSS服務(wù),不需要用戶預(yù)先創(chuàng)建OSS存儲實例。
目前開服公測的區(qū)域是上海區(qū),對應(yīng)的實例是該region內(nèi)所有的容量型實例。在開通DLA服務(wù)時,需要先填寫公測申請,通過之后按照“接入方式”小節(jié)的步驟,能快速完成接入體驗。
接入方式
整個主要包含OTS、OSS、DLA的服務(wù)接入。需要注意的一點是,完成接入之后,就會按照實際查詢產(chǎn)生相應(yīng)的費用。如在這個過程中,用戶賬號是欠費的,將會發(fā)生查詢失敗。
OTS服務(wù)開通
如果用戶已經(jīng)開通的OTS服務(wù),并且上面已經(jīng)包含存量的實例,表格數(shù)據(jù),則忽略該步驟。
對于首次使用OTS的用戶,可按照下述方式開通OTS:
進入“產(chǎn)品”->"云計算基礎(chǔ)"->"數(shù)據(jù)庫"->“表格存儲 TableStore”;
按照上面的文檔說明,快速建立實例和表格,進行體驗;
1)使用控制臺,快速創(chuàng)建測試表格:
2)使用控制臺,快速插入測試數(shù)據(jù):
OSS服務(wù)開通
進入“產(chǎn)品”->"云計算基礎(chǔ)"->"存儲服務(wù)"->“對象存儲 OSS”;
直接點擊服務(wù)開通即可。
OSS服務(wù)開通后,不需要創(chuàng)景對象實例,DLA接入時,會自動為用戶在OSS服務(wù)中,創(chuàng)建用于存儲查詢結(jié)果數(shù)據(jù)的對象存儲實例,用戶不需要關(guān)心。
DLA服務(wù)開通
進入“產(chǎn)品”->"大數(shù)據(jù)"->"大數(shù)據(jù)計算"->“Data Lake Analytics”;
直接點擊服務(wù)開通;
注意:處于公測階段時,開通服務(wù)需要做公測申請,填寫好相關(guān)信息即可。
DLA on OTS接入
按照下列步驟,在DLA上建立OTS的映射:
開通DLA服務(wù)之后,可以選擇不同region,選擇開通對應(yīng)region的DLA服務(wù)實例(如現(xiàn)在華東2的上海區(qū)域)。不同的region,對應(yīng)不同的賬號,不同region的DLA賬號,不能混用,如下圖所示:
  注意:賬號創(chuàng)建完成之后,會收到相關(guān)郵件(郵箱為阿里云的注冊郵箱),內(nèi)含該region的DLA賬號和密碼,注意查收。
選擇region,授權(quán)DLA訪問OTS上的用戶實例數(shù)據(jù),如下圖所示:
服務(wù)開通之后,有3中SQL訪問方式:控制臺、mysql client,JDBC。
控制臺訪問
點擊數(shù)據(jù)庫連接,使用郵件中的該region的用戶名和密碼,連接進入控制臺。
進入控制臺后,需要為OTS上的實例表格數(shù)據(jù)建立映射信息。場景舉例:假設(shè)用戶在上海region已經(jīng)有一個名為sh_tpch的實例,該實例包含表格test001,里面包含2行測試數(shù)據(jù)。對該實例建立映射的步驟包括:
1)將ots的實例映射成DLA的一個DataBase實例:
在建立DLA的Database映射前,首先需要在OTS上創(chuàng)建一個表格存儲的實例instance,如:
創(chuàng)建一個實例,名為sh-tpch,對應(yīng)的endpoint為https://sh-tpch.cn-shanghai.ots.aliyuncs.com。
完成測試實例創(chuàng)建后,執(zhí)行下列語句建立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語句進行創(chuàng)建db映射;但是在控制臺,目前只支持create?schema語句創(chuàng)建db映射。
上述語句,將在DLA上創(chuàng)建一個名為sh_tpch001的database,對應(yīng)的實例是ots的sh-tpch.cn-shanghai.ots.aliyuncs.com集群下名為sh-tpch的實例。通過上面的語句,就能產(chǎn)生一個ots的實例映射。
2)在tp_tpch001的DB下,建立表格的映射:
在建立DLA的表格映射前,首先需要在OTS創(chuàng)建測試表,流程參考"OTS服務(wù)開通"小節(jié)。
測試表格創(chuàng)建完成后,執(zhí)行下列語句建立表格映射:
CREATE?TABLE?test001?(pk0?int?,?primary?key(pk0)); 注意:主要建立DLA映射表時,指定的Primary?Key必須跟OTS表格定義Primary?Key列表一致。因為Primary?Key必須能是唯一的定位一行,一旦映射表的Primary?Key列表與OTS表格的PK不一致,則可能會導(dǎo)致SQL查詢結(jié)果出現(xiàn)非預(yù)期的錯誤。
例如:用戶的OTS實例sh_tpch上包含test001表格,其中只有一列pk0。上面的命令就完成了在DLA的實例sh_tpch001上,創(chuàng)建映射表test001。使用show命令能查看該表創(chuàng)建成功:
3)使用select語句執(zhí)行sql查詢:
1.?查出所有數(shù)據(jù):select?*?from?test001;
2.?執(zhí)行count統(tǒng)計:select?count(*)?from?test001;
3.?執(zhí)行sum統(tǒng)計:select?sum(pk0)?from?test001;
4)更為豐富執(zhí)行語句,請查看如下的幫助說明文檔:
create?schema語句:https://help.aliyun.com/document_detail/72005.htmlcreate?table語句:https://help.aliyun.com/document_detail/72006.htmlselect語句:https://help.aliyun.com/document_detail/71044.htmlshow語句:https://help.aliyun.com/document_detail/72011.htmldrop?table語句:https://help.aliyun.com/document_detail/72008.htmldrop?schema語句:https://help.aliyun.com/document_detail/72007.html
5)在做SQL執(zhí)行時,可以選擇同步執(zhí)行結(jié)果,返回滿足條件的前10000條記錄;如果要獲大結(jié)果集數(shù)據(jù),需要選擇異步執(zhí)行,并使用show query_id的方式異步獲取結(jié)果:
show?query_task?where?id?=?'59a05af7_1531893489231';
mysql訪問
使用標(biāo)準(zhǔn)的mysql client也能快速連通DLA的數(shù)據(jù)實例。其中連接語句為:
mysql?-h?service.cn-shanghai.datalakeanalytics.aliyuncs.com?-P?10000?-u??-p? ?-c?-A
其他操作語句跟“控制臺訪問”小節(jié)介紹一致。
JDBC訪問
也可以使用標(biāo)準(zhǔn)的java api實現(xiàn)訪問,連接串為:
jdbc:mysql://service.cn-shanghai.datalakeanalytics.aliyuncs.com:10000/
其他操作語句跟“控制臺訪問”小節(jié)介紹一致。
總結(jié)
通過DLA+OTS,我們能讓用戶快速在表格存儲上體驗極致的分布式SQL計算。
Reference
表格存儲(Table Store):?https://www.aliyun.com/product/ots
Data Lake Analytics:?https://www.aliyun.com/product/datalakeanalytics
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
電子發(fā)燒友App
























































































評論