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绝大部分查询语法),在表格存储上作灵活的数据分析任务。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服务开通

若是用户已经开通的OTS服务,而且上面已经包含存量的实例,表格数据,则忽略该步骤。api

对于首次使用OTS的用户,可按照下述方式开通OTS:架构

  1. 登陆https://www.aliyun.com
  2. 进入“产品”->"云计算基础"->"数据库"->“表格存储 TableStore”;
  3. 按照上面的文档说明,快速创建实例和表格,进行体验;
    1)使用控制台,快速建立测试表格:


2)使用控制台,快速插入测试数据:异步

 

OSS服务开通

  1. 登陆https://www.aliyun.com
  2. 进入“产品”->"云计算基础"->"存储服务"->“对象存储 OSS”;
  3. 直接点击服务开通便可。

OSS服务开通后,不须要创景对象实例,DLA接入时,会自动为用户在OSS服务中,建立用于存储查询结果数据的对象存储实例,用户不须要关心。分布式

DLA服务开通

  1. 登陆https://www.aliyun.com
  2. 进入“产品”->"大数据"->"大数据计算"->“Data Lake Analytics”;
  3. 直接点击服务开通;

注意:处于公测阶段时,开通服务须要作公测申请,填写好相关信息便可。测试

DLA on OTS接入

按照下列步骤,在DLA上创建OTS的映射:

  1. 开通DLA服务以后,能够选择不一样region,选择开通对应region的DLA服务实例(如如今华东2的上海区域)。不一样的region,对应不一样的帐号,不一样region的DLA帐号,不能混用,以下图所示:

 

 

 

 

注意:帐号建立完成以后,会收到相关邮件(邮箱为阿里云的注册邮箱),内含该region的DLA帐号和密码,注意查收。
  1. 选择region,受权DLA访问OTS上的用户实例数据,以下图所示:

 

  1. 服务开通以后,有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计算。

 

原文连接

本文为云栖社区原创内容,未经容许不得转载。

相关文章
相关标签/搜索