云原生数据湖分析(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
AI 代码解读

从下图可以清晰地看到,使用 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
AI 代码解读

注意:

  • 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

相关实践学习
消息队列+Serverless+Tablestore:实现高弹性的电商订单系统
基于消息队列以及函数计算,快速部署一个高弹性的商品订单系统,能够应对抢购场景下的高并发情况。
阿里云表格存储使用教程
表格存储(Table Store)是构建在阿里云飞天分布式系统之上的分布式NoSQL数据存储服务,根据99.99%的高可用以及11个9的数据可靠性的标准设计。表格存储通过数据分片和负载均衡技术,实现数据规模与访问并发上的无缝扩展,提供海量结构化数据的存储和实时访问。 产品详情:https://www.aliyun.com/product/ots
目录
打赏
0
0
0
0
23
分享
相关文章
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
MPP架构数据仓库使用问题之ADB PG云原生版本的扩缩容性能怎么样
阿里云云原生数据库 PolarDB MySQL Serverless:卓越的性能与无与伦比的弹性
阿里云原生数据库 PolarDB MySQL Serverless 拥有卓越性能和无与伦比的弹性。通过实验体验,深入了解其基本管理和配置、智能弹性伸缩特性和全局一致性特性。实验包括主节点和只读节点的弹性压测以及全局一致性测试,旨在亲身体验 PolarDB 的强大性能。通过实验,可以更好地在实际业务场景中应用 PolarDB,并根据需求进行性能优化和调整。
794 2
让PolarDB更了解您--PolarDB云原生数据库核心功能体验馆
让PolarDB更了解您——PolarDB云原生数据库核心功能体验馆,由阿里云数据库产品事业部负责人宋震分享。内容涵盖PolarDB技术布局、开源进展及体验馆三大部分。技术布局包括云计算加速数据库演进、数据处理需求带来的变革、软硬协同优化等;开源部分介绍了兼容MySQL和PostgreSQL的两款产品;体验馆则通过实际操作让用户直观感受Serverless、无感切换、SQL2Map等功能。
115 7
云原生之旅:从容器到微服务的演进之路Java 内存管理:垃圾收集器与性能调优
【8月更文挑战第30天】在数字化时代的浪潮中,企业如何乘风破浪?云原生技术提供了一个强有力的桨。本文将带你从容器技术的基石出发,探索微服务架构的奥秘,最终实现在云端自由翱翔的梦想。我们将一起见证代码如何转化为业务的翅膀,让你的应用在云海中高飞。
从数据存储到分析:构建高效开源数据湖仓解决方案
今年开源大数据迈向湖仓一体(Lake House)时代,重点介绍Open Lake解决方案。该方案基于云原生架构,兼容开源生态,提供开箱即用的数据湖仓产品。其核心优势在于统一数据管理和存储,支持实时与批处理分析,打破多计算产品的数据壁垒。通过阿里云的Data Lake Formation和Apache Paimon等技术,用户可高效搭建、管理并分析大规模数据,实现BI和AI融合,满足多样化数据分析需求。
Iceberg+Amoro+CloudEon体验云原生数据湖
通过使用CloudEon、Iceberg、Flink、Spark和Amoro,您可以轻松地在Kubernetes上构建一个强大的大数据基础环境。
569 0
核心系统转型问题之API网关在云原生分布式核心系统中的功能如何解决
核心系统转型问题之API网关在云原生分布式核心系统中的功能如何解决
探索云原生技术:Kubernetes入门与实践探索Windows操作系统的隐藏功能
【8月更文挑战第31天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性、效率和可靠性的关键。本文将带你了解云原生的核心组件之一——Kubernetes(K8s),通过浅显易懂的语言和实际代码示例,引导你步入这一强大工具的世界。无论你是初学者还是有经验的开发者,本篇都将为你打开一扇通向高效资源管理与自动化部署的大门。
耳朵经济快速增长背后,喜马拉雅数据价值如何释放 | 创新场景
喜马拉雅和阿里云的合作,正走在整个互联网行业的最前沿,在新的数据底座之上,喜马拉雅的AI、大数据应用也将大放光彩。本文摘自《云栖战略参考》
46951 5
耳朵经济快速增长背后,喜马拉雅数据价值如何释放 | 创新场景
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等