OLAP on TableStore:基于Data Lake Analytics的Serverless SQL大数据分析

本文涉及的产品
简介: TableStore(简称OTS)是阿里云的一款分布式表格系统,为用户提供schema-free的分布式表格服务。随着越来越多用户对OLAP有强烈的需求,我们提供在表格存储上接入Data Lake Analytics(简称DLA)服务的方式,提供一种快速的OLAP解决方案。
+关注继续查看

背景介绍

TableStore(简称OTS)是阿里云的一款分布式表格系统,为用户提供schema-free的分布式表格服务。随着越来越多用户对OLAP有强烈的需求,我们提供在表格存储上接入Data Lake Analytics(简称DLA)服务的方式,提供一种快速的OLAP解决方案。DLA是阿里云上的一款的通用SQL查询引擎,通过在OTS连通DLA服务,使用通用的SQL语言(兼容mysql5.7绝大部分查询语法),在表格存储上做灵活的数据分析任务。

架构视图

arch.png

如上图所示,整体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)使用控制台,快速创建测试表格:

    ots_create_table.jpg

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

    insert_data.jpg

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账号,不能混用,如下图所示:

service_open.jpg

service_open2.jpg

注意:账号创建完成之后,会收到相关邮件(邮箱为阿里云的注册邮箱),内含该region的DLA账号和密码,注意查收。
  1. 选择region,授权DLA访问OTS上的用户实例数据,如下图所示:
    assumeRole.jpg
  2. 服务开通之后,有3中SQL访问方式:控制台、mysql client,JDBC。

控制台访问

点击数据库连接,使用邮件中的该region的用户名和密码,连接进入控制台。

console_access.jpg

进入控制台后,需要为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映射。

create_db.jpg

上述语句,将在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查询结果出现非预期的错误。

create_table.jpg

例如:用户的OTS实例sh_tpch上包含test001表格,其中只有一列pk0。上面的命令就完成了在DLA的实例sh_tpch001上,创建映射表test001。使用show命令能查看该表创建成功:

show_table.jpg

3)使用select语句执行sql查询:

1. 查出所有数据:
select * from test001;

select_0.jpg

2. 执行count统计:
select count(*) from test001;

select_1.jpg

3. 执行sum统计:
select sum(pk0) from test001;

select_2.jpg

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';

async_exec.jpg
show_async_result.jpg

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

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
SQL 存储 自然语言处理
表格存储最佳实践:使用多元索引加速 SQL 查询
表格存储(Tablestore)在 2022 年 5 月正式发布了 SQL 商业化版本,业务上只需要在数据表上建立映射关系,就可以基于 SQL 引擎方便地对表格存储中的数据进行访问和计算,大大地降低了用户的学习成本。
635 0
|
存储 SQL NoSQL
表格存储 Tablestore SQL 商业版介绍
表格存储(Tablestore)是阿里云自研的多模型结构化数据存储,提供海量结构化数据存储以及快速的查询和分析服务。表格存储的分布式存储和强大的索引引擎能够支持 PB 级存储、千万 TPS 以及毫秒级延迟的服务能力。使用表格存储你可以方便的存储和查询你的海量数据。 表格存储在 21 年 9 月正式公测了 SQL 功能,使得你在享受表格存储全托管,灵活的存储能力之外,可以让你的业务迁移更加平顺。经
1078 0
表格存储 Tablestore SQL 商业版介绍
|
SQL 存储 Java
表格存储 SQL 查询多元索引
多元索引是表格存储产品中一个重要的功能,多元索引使用倒排索引技术为表格存储提供了非主键列上的快速检索功能,另外也提供了统计聚合功能。表格存储近期开放了SQL查询功能,SQL引擎默认从原始表格中读取数据,非主键列上的查询需要扫描全表。
表格存储 SQL 查询多元索引
|
存储 SQL NoSQL
表格存储 SQL 功能快速上手
# 功能介绍 表格存储(Tablestore)是阿里云自研的多模型结构化数据存储,提供海量结构化数据存储以及快速的查询和分析服务。表格存储的分布式存储和强大的索引引擎能够支持 PB 级存储、千万 TPS 以及毫秒级延迟的服务能力。使用表格存储你可以方便的存储和查询你的海量数据。​ 表格存储正式发布了 SQL 功能,满足用户业务平滑迁移到表格存储并可以继续通过 SQL 方式访问表格存储,表格存储
1311 0
|
SQL 存储 Cloud Native
表格存储 SQL 操作实战
表格存储做为一款结构化存储系统,近期发布了新功能 SQL,大幅简化了查询的门槛,用户无需学习繁琐的 SDK,也不用区分表,索引等不同的接口,可以像访问传统的 MySQL 这类数据库一样,使用 SQL 的方式访问云原生的结构化大数据存储。下面我们就来具体实操下,看看查询用起来顺不顺手。
430 0
|
SQL 存储 JSON
表格存储 SQL 数据类型详解
本文主要介绍 Tablestore SQL中的数据类型与 MySQL 数据类型之间的映射关系。 ​ ## 背景介绍 ### Tablestore 数据类型 Tablestore 中的数据类型支持如下表所示,其中主键列支持的数据类型包括String、Integer和Binary,属性列支持的数据类型包括String、Integer、Double、Boolean和Binary。 - 主键列支持的数
261 0
|
SQL 存储 测试技术
表格存储 SQL 元数据操作实战
本文主要介绍表格存储 SQL 支持的元数据操作。 ## 背景说明 如下表所示,目前表格存储 SQL 支持的元数据操作主要分为两大类:DDL操作和Admin操作。其中DDL操作包括:CREATE TABLE, DROP MAPPING TABLE, DESCRIBE TABLE。Admin操作包括:SHOW INDEX, SHOW TABLES。更多的元数据操作将在后续的版本迭代中支持,敬请期待。
185 0
|
存储 SQL 运维
使用 Flink SQL 访问 Tablestore 源表
    本文将介绍如何使用使用 Flink SQL 通过流处理的方式访问 Tablestore 源表。 在流计算场景下,用户可以基于[通道服务](https://help.aliyun.com/document_detail/102489.html),利用CDC(数据变更捕获)技术,通过 Flink 完成流式消费和计算。 Flink on Tablesto
1055 0
|
SQL 分布式计算 大数据
9.29直播预告|数据湖分析DLA之Serverless SQL(兼容Presto)技术解析
本次分享将向您介绍DLA SQL基于Presto引擎做的一系列优化比如多Coordinator、租户隔离、Coonector方面的优化细节,以及为何DLA SQL比您自建Presto性价比更高的奥秘。
825 0
9.29直播预告|数据湖分析DLA之Serverless SQL(兼容Presto)技术解析
|
SQL 存储 分布式计算
实战 | 利用Delta Lake使Spark SQL支持跨表CRUD操作
本文介绍eBay Carmel团队利用Delta Lake,使Spark SQL支持Teradata的Update/Delete语法。主要从源码角度介绍了CRUD操作的具体实现和优化,以及delta表的管理工作。希望对同业人员有所启发和帮助。
实战 | 利用Delta Lake使Spark SQL支持跨表CRUD操作
热门文章
最新文章
相关产品
函数计算
推荐文章
更多