共計(jì) 3854 個(gè)字符,預(yù)計(jì)需要花費(fèi) 10 分鐘才能閱讀完成。
這篇文章給大家介紹如何進(jìn)行基于 Data Lake Analytics 的 Serverless SQL 大數(shù)據(jù)分析,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
背景介紹
TableStore(簡(jiǎn)稱 OTS)是阿里云的一款分布式表格系統(tǒng),為用戶提供 schema-free 的分布式表格服務(wù)。隨著越來(lái)越多用戶對(duì) OLAP 有強(qiáng)烈的需求,我們提供在表格存儲(chǔ)上接入 Data Lake Analytics(簡(jiǎn)稱 DLA)服務(wù)的方式,提供一種快速的 OLAP 解決方案。DLA 是阿里云上的一款的通用 SQL 查詢引擎,通過(guò)在 OTS 連通 DLA 服務(wù),使用通用的 SQL 語(yǔ)言(兼容 mysql5.7 絕大部分查詢語(yǔ)法),在表格存儲(chǔ)上做靈活的數(shù)據(jù)分析任務(wù)。
架構(gòu)視圖
如上圖所示,整體 OLAP 查詢架構(gòu)涉及 3 款阿里云產(chǎn)品:DLA,OTS,OSS。其中 DLA 負(fù)責(zé)分布式 SQL 查詢計(jì)算,在實(shí)際運(yùn)行過(guò)程中,會(huì)將用戶 sql 查詢請(qǐng)求進(jìn)行任務(wù)拆解,產(chǎn)生若干可并行化的子任務(wù),提升數(shù)據(jù)計(jì)算和查詢能力。OTS 為數(shù)據(jù)存儲(chǔ)層,用于接收 DLA 的各類子查詢?nèi)蝿?wù)。如果用戶已經(jīng)有存量的數(shù)據(jù)在 OTS 上,可以直接在 DLA 上建立映射視圖,實(shí)現(xiàn)快速體驗(yàn) SQL 計(jì)算帶來(lái)的便捷。OSS 為分布式對(duì)象存儲(chǔ)系統(tǒng),主要用于用戶查詢結(jié)果數(shù)據(jù)的保存。
因此用戶要想快速體驗(yàn) SQL on OTS,必須在開通 OTS 的前提下,完成 DLA 和 OSS 服務(wù)的開通。通過(guò)上述 3 個(gè)云產(chǎn)品的配合,用戶就能在 OTS 上快速執(zhí)行 SQL 計(jì)算。目前開通 OSS 服務(wù)的主要原因是 DLA 默認(rèn)回查詢結(jié)果集數(shù)據(jù)寫回到 OSS 存儲(chǔ),因此需要引入一個(gè)額外的存儲(chǔ)依賴,但僅依賴用戶開通 OSS 服務(wù),不需要用戶預(yù)先創(chuàng)建 OSS 存儲(chǔ)實(shí)例。
目前開服公測(cè)的區(qū)域是上海區(qū),對(duì)應(yīng)的實(shí)例是該 region 內(nèi)所有的容量型實(shí)例。在開通 DLA 服務(wù)時(shí),需要先填寫公測(cè)申請(qǐng),通過(guò)之后按照“接入方式”小節(jié)的步驟,能快速完成接入體驗(yàn)。
接入方式
整個(gè)主要包含 OTS、OSS、DLA 的服務(wù)接入。需要注意的一點(diǎn)是,完成接入之后,就會(huì)按照實(shí)際查詢產(chǎn)生相應(yīng)的費(fèi)用。如在這個(gè)過(guò)程中,用戶賬號(hào)是欠費(fèi)的,將會(huì)發(fā)生查詢失敗。
OTS 服務(wù)開通
如果用戶已經(jīng)開通的 OTS 服務(wù),并且上面已經(jīng)包含存量的實(shí)例,表格數(shù)據(jù),則忽略該步驟。
對(duì)于首次使用 OTS 的用戶,可按照下述方式開通 OTS:
登錄 https://www.aliyun.com;
進(jìn)入“產(chǎn)品”- 云計(jì)算基礎(chǔ) – 數(shù)據(jù)庫(kù) –“表格存儲(chǔ) TableStore”;
按照上面的文檔說(shuō)明,快速建立實(shí)例和表格,進(jìn)行體驗(yàn);
1)使用控制臺(tái),快速創(chuàng)建測(cè)試表格:
2)使用控制臺(tái),快速插入測(cè)試數(shù)據(jù):
OSS 服務(wù)開通
登錄 https://www.aliyun.com;
進(jìn)入“產(chǎn)品”- 云計(jì)算基礎(chǔ) – 存儲(chǔ)服務(wù) –“對(duì)象存儲(chǔ) OSS”;
直接點(diǎn)擊服務(wù)開通即可。
OSS 服務(wù)開通后,不需要?jiǎng)?chuàng)景對(duì)象實(shí)例,DLA 接入時(shí),會(huì)自動(dòng)為用戶在 OSS 服務(wù)中,創(chuàng)建用于存儲(chǔ)查詢結(jié)果數(shù)據(jù)的對(duì)象存儲(chǔ)實(shí)例,用戶不需要關(guān)心。
DLA 服務(wù)開通
登錄 https://www.aliyun.com;
進(jìn)入“產(chǎn)品”- 大數(shù)據(jù) – 大數(shù)據(jù)計(jì)算 –“Data Lake Analytics”;
直接點(diǎn)擊服務(wù)開通;
注意:處于公測(cè)階段時(shí),開通服務(wù)需要做公測(cè)申請(qǐng),填寫好相關(guān)信息即可。
DLA on OTS 接入
按照下列步驟,在 DLA 上建立 OTS 的映射:
開通 DLA 服務(wù)之后,可以選擇不同 region,選擇開通對(duì)應(yīng) region 的 DLA 服務(wù)實(shí)例(如現(xiàn)在華東 2 的上海區(qū)域)。不同的 region,對(duì)應(yīng)不同的賬號(hào),不同 region 的 DLA 賬號(hào),不能混用,


注意:賬號(hào)創(chuàng)建完成之后,會(huì)收到相關(guān)郵件 (郵箱為阿里云的注冊(cè)郵箱),內(nèi)含該 region 的 DLA 賬號(hào)和密碼,注意查收。
選擇 region,授權(quán) DLA 訪問(wèn) OTS 上的用戶實(shí)例數(shù)據(jù)。
服務(wù)開通之后,有 3 中 SQL 訪問(wèn)方式:控制臺(tái)、mysql client,JDBC。
控制臺(tái)訪問(wèn)
點(diǎn)擊數(shù)據(jù)庫(kù)連接,使用郵件中的該 region 的用戶名和密碼,連接進(jìn)入控制臺(tái)。
進(jìn)入控制臺(tái)后,需要為 OTS 上的實(shí)例表格數(shù)據(jù)建立映射信息。場(chǎng)景舉例:假設(shè)用戶在上海 region 已經(jīng)有一個(gè)名為 sh_tpch 的實(shí)例,該實(shí)例包含表格 test001, 里面包含 2 行測(cè)試數(shù)據(jù)。對(duì)該實(shí)例建立映射的步驟包括:
1)將 ots 的實(shí)例映射成 DLA 的一個(gè) DataBase 實(shí)例:
在建立 DLA 的 Database 映射前,首先需要在 OTS 上創(chuàng)建一個(gè)表格存儲(chǔ)的實(shí)例 instance,如:
創(chuàng)建一個(gè)實(shí)例,名為 sh-tpch,對(duì)應(yīng)的 endpoint 為 https://sh-tpch.cn-shanghai.ots.aliyuncs.com。
完成測(cè)試實(shí)例創(chuàng)建后,執(zhí)行下列語(yǔ)句建立 Database 映射:
CREATE SCHEMA sh_tpch001 with DBPROPERTIES(LOCATION = https://sh-tpch.cn-shanghai.ots.aliyuncs.com , catalog= ots , instance = sh-tpch
注意:使用 mysql client 時(shí),可以使用 create database 或 create schema 語(yǔ)句進(jìn)行創(chuàng)建 db 映射;但是在控制臺(tái),目前只支持 create schema 語(yǔ)句創(chuàng)建 db 映射。
上述語(yǔ)句,將在 DLA 上創(chuàng)建一個(gè)名為 sh_tpch001 的 database,對(duì)應(yīng)的實(shí)例是 ots 的 sh-tpch.cn-shanghai.ots.aliyuncs.com 集群下名為 sh-tpch 的實(shí)例。通過(guò)上面的語(yǔ)句,就能產(chǎn)生一個(gè) ots 的實(shí)例映射。
2)在 tp_tpch001 的 DB 下,建立表格的映射:
在建立 DLA 的表格映射前,首先需要在 OTS 創(chuàng)建測(cè)試表,流程參考 OTS 服務(wù)開通 小節(jié)。
測(cè)試表格創(chuàng)建完成后,執(zhí)行下列語(yǔ)句建立表格映射:
CREATE TABLE test001 (pk0 int , primary key(pk0));
注意:主要建立 DLA 映射表時(shí),指定的 Primary Key 必須跟 OTS 表格定義 Primary Key 列表一致。因?yàn)?Primary Key 必須能是唯一的定位一行,一旦映射表的 Primary Key 列表與 OTS 表格的 PK 不一致,則可能會(huì)導(dǎo)致 SQL 查詢結(jié)果出現(xiàn)非預(yù)期的錯(cuò)誤。
例如:用戶的 OTS 實(shí)例 sh_tpch 上包含 test001 表格,其中只有一列 pk0。上面的命令就完成了在 DLA 的實(shí)例 sh_tpch001 上,創(chuàng)建映射表 test001。使用 show 命令能查看該表創(chuàng)建成功。
3) 使用 select 語(yǔ)句執(zhí)行 sql 查詢:
1. 查出所有數(shù)據(jù):select * from test001;
2. 執(zhí)行 count 統(tǒng)計(jì):select count(*) from test001;
3. 執(zhí)行 sum 統(tǒng)計(jì):select sum(pk0) from test001;
4)更為豐富執(zhí)行語(yǔ)句,請(qǐng)查看如下的幫助說(shuō)明文檔:
create schema 語(yǔ)句:https://help.aliyun.com/document_detail/72005.html
create table 語(yǔ)句:https://help.aliyun.com/document_detail/72006.html
select 語(yǔ)句:https://help.aliyun.com/document_detail/71044.html
show 語(yǔ)句:https://help.aliyun.com/document_detail/72011.html
drop table 語(yǔ)句:https://help.aliyun.com/document_detail/72008.html
drop schema 語(yǔ)句:https://help.aliyun.com/document_detail/72007.html
5)在做 SQL 執(zhí)行時(shí),可以選擇同步執(zhí)行結(jié)果,返回滿足條件的前 10000 條記錄;如果要獲大結(jié)果集數(shù)據(jù),需要選擇異步執(zhí)行,并使用 show query_id 的方式異步獲取結(jié)果:
show query_task where id = 59a05af7_1531893489231
mysql 訪問(wèn)
使用標(biāo)準(zhǔn)的 mysql client 也能快速連通 DLA 的數(shù)據(jù)實(shí)例。其中連接語(yǔ)句為:
mysql -h service.cn-shanghai.datalakeanalytics.aliyuncs.com -P 10000 -u username -p password -c -A
其他操作語(yǔ)句跟“控制臺(tái)訪問(wèn)”小節(jié)介紹一致。
JDBC 訪問(wèn)
也可以使用標(biāo)準(zhǔn)的 java api 實(shí)現(xiàn)訪問(wèn),連接串為:
jdbc:mysql://service.cn-shanghai.datalakeanalytics.aliyuncs.com:10000/
關(guān)于如何進(jìn)行基于 Data Lake Analytics 的 Serverless SQL 大數(shù)據(jù)分析就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。