云原生数据湖分析(DLA) 支持表格存储并发导出功能,性能大幅提升 !

简介: 云原生数据湖分析(DLA) 支持表格存储并发导出功能

1. 背景介绍

表格存储(TableStore)的数据表是一种典型的 NoSQL 数据结构,可以高效地支持大规模数据的存储和读写需求。表格存储的多元索引提供了 Search 接口, 它支持所有的查询功能,以及排序、统计聚合等分析能力。并且,执行结果也会按照指定的顺序返回。但是,在很多情况下我们更关心的是查询性能,希望将命中的全部数据能以更快的速度返回,而不关心整个结果集的顺序。因此,DLA 接入了 TableStore 的 ParallelScan 接口,以提高数据查询速度。

2. 并发导出数据(ParallelScan)简介

多元索引提供了通用的查询接口(Search)和并发导出接口(ParallelScan)。这两个接口的功能基本上是相同的,但是 ParallelScan 接口为了提高某些方面的性能和吞吐能力舍弃了部分功能。相对于 Search 接口,ParallelScan 主要有以下一些特点:

  • 1.结果稳定

ParallelScan 任务是有状态的,在一个 Session 请求中获取到的结果是确定的。其执行结果由第一次发起请求时的数据状态所决定,如果在任务执行过程中插入了新的数据或者修改了原有的数据不会对任务查询结果造成影响。

  • 2.新增会话(Session)概念

引入会话概念,使用 SessionID 来保证查询的结果集是稳定的。每次任务执行前首先需要通过 computeSplits 接口获取 sessionID 和最大并发数。然后发起多个 ParallelScan 请求读取数据,同时在请求中指定当前的 sessionID 和并发 ID。

  • 3.最大并发数

ParallelScan 支持的单请求的最大并发数由 computeSplits 接口返回,数据越多,支持的并发数就越大。

  • 4.性能

ParallelScan 接口单并发扫描数据的性能有很大提升。当增加并发数时,性能可以继续提高(调整并发数需要咨询表格存储的同学)。

  • 5.成本

ParallelScan 接口请求消耗的资源更少,因此其价格也更便宜。所以,对于大数据量的导出需求,建议使用 ParallelScan 功能。

  • 6.查询列限制

ParallelScan 只支持查询多元索引中已建立的索引列,不能查询多元索引中没有的列,即一条 SQL 语句只能 SELECT 多元索引中的列。

3.测试分析

3.1 测试环境

我们使用 DLA CU 版快速搭建一个 Presto 集群,其配置信息如下:

  • Worker 数量 5 个
  • Worker 规格 4 Core 8G

3.2 测试数据集

TPC-H 是美国交易处理效能委员会(TPC,Transaction Processing Performance Council) 组织制定的用来模拟决策支持类应用的一个测试集。因此,我们将表格存储中的 TPC-H 数据集导入到 DLA 数据湖中进行分析处理。其中,表 lineitem 约 200G 数据,有 6 亿行数据。前面提到 ParallelScan API 只能查询多元索引中的数据,所以我们需要先创建一个多元索引,将需要的字段添加到索引中。

3.3 测试分析

我们在测试环境下对表 lineitem 执行以下 SQL 进行查询数据,其中 KEY 随着查询数据量而不断变化

select L_PARTKEY from ots_db.lineitem where L_PARTKEY < KEY

从下图可以清晰地看到,使用 ParallelScan API 的查询性能是非常好的。随着查询数据量的逐渐增加,使用 Search API 查询的耗时剧烈增加,这是由其底层设计所造成,导出的数据越多就会变得越慢。索引查询(Search 接口)的耗时增加非常明显。而 ParallelScan 接口的耗时则一直比较低,并且随着导出数据量的不变增大其性能优势也更加突出。

图片 2.png

相对于普通查询,ParallelScan API 的优势也是比较明显的。从下面这张图可以看出,同等条件下普通查询的耗时要远大于 ParallelScan API 的查询。细心的读者可能会发现普通查询的性能比较“稳定”,这是由于普通查询每次都会扫描全量的表数据,所以无论我们导出多少数据其耗时都是基本上相等的。

ots-1.png

4.DLA ParallelScan 的使用及注意事项

在 DLA 中使用ParallelScan 也是非常简单的,只需要在执行 SQL 时添加 ots-index-parallel-scan-mode=true Hint 即可, 如:

/*+ots-index-parallel-scan-mode=true*/select count(L_PARTKEY) from YOUR_TABLE where L_PARTKEY < 10000

注意:

  • 1.ParallelScan 只能查询多元索引中存在的字段
  • 2.ParallelScan 在导出数据量较大时效果比较明显
  • 3.ParallelScan 默认情况下查询出来的数据是无序的
  • 4.默认情况下不会使用 ParallelScan 模式,需要通过 Hint 来启用

5.小结

通过以上说明和实验,本文介绍了 DLA 查询表格存储的方式,并进行了性能分析和对比。 Search 接口可以快速扫描多元索引的少量数据,而 ParallelScan 比较适用于扫描多元索引的大量数据集。

关于我们

数据湖分析Data Lake Analytics简介

欢迎大家使用云原生数据湖分析(DLA),DLA不仅仅便宜,且快,且方便,专为阿里云数据湖分析方案而生

  • 支持自建、托管RDS、NoSQL、OSS(JSON、CSV、Parquet等格式)多种数据源分析
  • 支持按量 按照扫描量 的计费方式,准入门槛0元,提供的Serverless的弹性服务为按需收费,不需要购买固定的资源,完全契合业务潮汐带来的资源波动,满足弹性的分析需求,同时极大地降低了运维成本和使用成本
  • 平台底层托管大集群且自动弹性,在一定数据量情况下,分析性能比自建小集群高出400%
  • 支持一键 把 MySQL、PG、SqlServer、PolarDb数据库 拖到DLA,再分析,解决原MySQL不敢分析的问题。 DLA 分析性能TPC-H 10G情况 比原MySQL 8c16g 等高出10倍,数据量越大,MySQL性能越差,在1TB数据量下,原MySQL基本跑不出来

产品文档:https://www.aliyun.com/product/datalakeanalytics
帮助文档:https://help.aliyun.com/document_detail/70378.html
MySQL&PG&SqlServer一键同步数据到DLA:https://help.aliyun.com/document_detail/126559.html
新客户1元试用:https://common-buy.aliyun.com/?commodityCode=openanalytics_post

欢迎大家进群咨询了解

image.png

相关实践学习
阿里云表格存储使用教程
表格存储(Table Store)是构建在阿里云飞天分布式系统之上的分布式NoSQL数据存储服务,根据99.99%的高可用以及11个9的数据可靠性的标准设计。表格存储通过数据分片和负载均衡技术,实现数据规模与访问并发上的无缝扩展,提供海量结构化数据的存储和实时访问。 产品详情:https://www.aliyun.com/product/ots
相关文章
|
1月前
|
存储 监控 Cloud Native
云原生系列Go语言篇-并发 Part 2
既然已经讲解了Go为并发所提供的基础工具,我们就来学习一些并发的最佳实践和模式吧。
59 0
|
1月前
电子好书发您分享《阿里云云原生数据湖体系全解读》
电子好书发您分享《阿里云云原生数据湖体系全解读》
135 2
|
9月前
|
分布式计算 Kubernetes 流计算
Iceberg+Amoro+CloudEon体验云原生数据湖
通过使用CloudEon、Iceberg、Flink、Spark和Amoro,您可以轻松地在Kubernetes上构建一个强大的大数据基础环境。
361 0
|
25天前
|
存储 分布式计算 DataWorks
【阿里云云原生专栏】云原生下的数据湖建设:阿里云MaxCompute与DataWorks解决方案
【5月更文挑战第26天】在数字化时代,数据成为企业创新的关键。阿里云MaxCompute和DataWorks提供了一种构建高效、可扩展数据湖的解决方案。数据湖允许存储和分析大量多格式数据,具备高灵活性和扩展性。MaxCompute是PB级数据仓库服务,擅长结构化数据处理;DataWorks则是一站式大数据协同平台,支持数据集成、ETL和治理。通过DataWorks收集数据,MaxCompute存储和处理,企业可以实现高效的数据分析和挖掘,从而提升业务洞察和竞争力。
383 0
|
1月前
|
存储 Cloud Native 关系型数据库
PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
【5月更文挑战第14天】PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
247 2
|
1月前
|
Cloud Native Java 程序员
[云原生] Go并发基础
[云原生] Go并发基础
|
7月前
|
存储 人工智能 Cloud Native
耳朵经济快速增长背后,喜马拉雅数据价值如何释放 | 创新场景
喜马拉雅和阿里云的合作,正走在整个互联网行业的最前沿,在新的数据底座之上,喜马拉雅的AI、大数据应用也将大放光彩。本文摘自《云栖战略参考》
46578 5
耳朵经济快速增长背后,喜马拉雅数据价值如何释放 | 创新场景
|
1月前
|
存储 消息中间件 SQL
基于 Apache Hudi 构建分析型数据湖
基于 Apache Hudi 构建分析型数据湖
38 4
|
1月前
|
存储 SQL 数据管理
一个理想的数据湖应具备哪些功能?
一个理想的数据湖应具备哪些功能?
100 3
|
1月前
|
存储 SQL 算法
图加速数据湖分析-GeaFlow和Apache Hudi集成
图加速数据湖分析-GeaFlow和Apache Hudi集成
33 3

热门文章

最新文章