天天看點

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 on TableStore:基于Data Lake Analytics的Serverless SQL大資料分析

如上圖所示,整體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:

  1. 登入 https://www.aliyun.com
  2. 進入“産品”->"雲計算基礎"->"資料庫"->“表格存儲 TableStore”;
  3. 按照上面的文檔說明,快速建立執行個體和表格,進行體驗;
    1)使用控制台,快速建立測試表格:           
    OLAP on TableStore:基于Data Lake Analytics的Serverless SQL大資料分析
    2)使用控制台,快速插入測試資料:           
    OLAP on TableStore:基于Data Lake Analytics的Serverless SQL大資料分析

OSS服務開通

  1. 進入“産品”->"雲計算基礎"->"存儲服務"->“對象存儲 OSS”;
  2. 直接點選服務開通即可。

OSS服務開通後,不需要創景對象執行個體,DLA接入時,會自動為使用者在OSS服務中,建立用于存儲查詢結果資料的對象存儲執行個體,使用者不需要關心。

DLA服務開通

  1. 進入“産品”->"大資料"->"大資料計算"->“Data Lake Analytics”;
  2. 直接點選服務開通;

注意:處于公測階段時,開通服務需要做公測申請,填寫好相關資訊即可。

DLA on OTS接入

按照下列步驟,在DLA上建立OTS的映射:

  1. 開通DLA服務之後,可以選擇不同region,選擇開通對應region的DLA服務執行個體(如現在華東2的上海區域)。不同的region,對應不同的賬号,不同region的DLA賬号,不能混用,如下圖所示:
OLAP on TableStore:基于Data Lake Analytics的Serverless SQL大資料分析
OLAP on TableStore:基于Data Lake Analytics的Serverless SQL大資料分析
注意:賬号建立完成之後,會收到相關郵件(郵箱為阿裡雲的注冊郵箱),内含該region的DLA賬号和密碼,注意查收。
           
  1. 選擇region,授權DLA通路OTS上的使用者執行個體資料,如下圖所示:
    OLAP on TableStore:基于Data Lake Analytics的Serverless SQL大資料分析
  2. 服務開通之後,有3中SQL通路方式:控制台、mysql client,JDBC。

控制台通路

點選資料庫連接配接,使用郵件中的該region的使用者名和密碼,連接配接進入控制台。

OLAP on TableStore:基于Data Lake Analytics的Serverless SQL大資料分析

進入控制台後,需要為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映射。           
OLAP on TableStore:基于Data Lake Analytics的Serverless SQL大資料分析

上述語句,将在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查詢結果出現非預期的錯誤。           
OLAP on TableStore:基于Data Lake Analytics的Serverless SQL大資料分析

例如:使用者的OTS執行個體sh_tpch上包含test001表格,其中隻有一列pk0。上面的指令就完成了在DLA的執行個體sh_tpch001上,建立映射表test001。使用show指令能檢視該表建立成功:

OLAP on TableStore:基于Data Lake Analytics的Serverless SQL大資料分析

3)使用select語句執行sql查詢:

1. 查出所有資料:
select * from test001;           
OLAP on TableStore:基于Data Lake Analytics的Serverless SQL大資料分析
2. 執行count統計:
select count(*) from test001;           
OLAP on TableStore:基于Data Lake Analytics的Serverless SQL大資料分析
3. 執行sum統計:
select sum(pk0) from test001;           
OLAP on TableStore:基于Data Lake Analytics的Serverless SQL大資料分析

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';           
OLAP on TableStore:基于Data Lake Analytics的Serverless SQL大資料分析
OLAP on TableStore:基于Data Lake Analytics的Serverless SQL大資料分析

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計算。

Reference

表格存儲(Table Store):

https://www.aliyun.com/product/ots

Data Lake Analytics:

https://www.aliyun.com/product/datalakeanalytics

聯系我們

如接入過程或sql查詢出現任何問題,可以釘釘聯系:蔡傑明(鐘牙)

OTS外部使用者釘釘交流群:表格存儲公開交流群, 群号:11789671