DLA-Presto二月更新

简介: 大家过年好啊,阿里云数据湖分析DLA-Presto二月迭代轻磅发布,请查收。分区投影: 帮您解决分区爆炸后查询慢的问题。Cassandra Connector: 针对小表的性能优化比目前开源版本提高60多倍。控制ETL结果文件数: 解决您的小文件多的问题。CU支持指定默认Hint: 如果一个hint每个SQL都要写,那么我们配置到CU级别吧。

大家过年好啊,阿里云数据湖分析DLA-Presto二月迭代轻磅发布,请查收。

  • 分区投影: 帮您解决分区爆炸后查询慢的问题。
  • Cassandra Connector: 针对小表的性能优化比目前开源版本提高60多倍。
  • 控制ETL结果文件数: 解决您的小文件多的问题。
  • CU支持指定默认Hint: 如果一个hint每个SQL都要写,那么我们配置到CU级别吧。

分区投影

在大数据中,提升性能的一个最常见的方式是对数据划分合理的分区,分区粒度越细,我们进行细粒度查询的时候性能就越好,但是如果分区数太多,分区元数据查询本身性能也会下降。因此我们支持了一种叫做“分区映射”的功能,分区映射让用户指定分区的规则,然后具体每个SQL查询的分区会直接通过SQL语句中的查询条件结合用户创建表时候指定的规则直接计算出来,从而不用去查询元数据,避免元数据爆炸带来的性能问题。比如我们创建如下的表:

create external table projection_test (
  field1 int
) 
partitioned by (
  a string, 
  b string
) 
LOCATION 'oss://oss-cn-hangzhou-xxx/xxx/projection_test' 
tblproperties(
  'projection.enabled' = 'true',
  'projection.a.type' = 'injected',
  'projection.a.miss' = 'LIST',
  'projection.b.type' = 'date',
  'projection.b.range' = '2021-02-01, NOW',
  'projection.b.format' = 'yyyy-MM-dd',
  'projection.b.interval.unit' = 'days',
  'projection.b.interval' = '1',
  'storage.location.template' = 'oss://oss-cn-hangzhou-xxx/xxx/projection_test/${a}/${b}/'
)

然后我们去查询如下的语句:

select * from projection_test where a = 'hello' and b = '2021-02-03'

那么引擎会去扫描的文件路径就是:

oss://oss-cn-hangzhou-xxx/xxx/projection_test/hello/2021-02-03/

关于分区映射更详细的信息欢迎参见我们的官方文档。

Cassandra Connector性能优化

Cassandra Connector默认的实现对于小表的查询不优化,比如你表里面只有10条数,你去select需要花1分钟时间,这背后的原因在于虽然数据量少,但是Cassandra还是会提前切分很多TokenRange,默认的TokenRange就有几百个,而Presto就会发起几百个Split去查询数据,使得性能很差,因此我们支持了一个参数让用户可以指定split数,使得我们对于小表的查询可以优化到1秒内,大大提升性能:

/*+ cluster=vc-test, cassandra.full-table-scan-split-count=1 */
select first_name, last_name from cassandra_it_db.test_user

这里我们只用一个split去查询数据。

同时我们对于Cassandra支持了 MSCK REPAIR DATABASE 的命令,使得您可以一个命令把Cassandra中所有的元数据加载到DLA里面来:

MSCK REPAIR DATABASE cassandra_it_db

写入数据的时候控制写入的文件个数

在DLA-Presto中,我们要往一个OSS表中写入数据的时候会使用下面的语句:

INSERT into target_table SELECT * FROM source_table

结果文件的个数取决于两个因素: 参与写数据的Worker的个数(table_write_worker_count)以及每个Worker上参与写数据的线程个数(task_writer_count), 之前这两个参数是没有办法通过客户端来设置的,现在我们把这两个参数都暴露出来了。

比如我们如果想写入 target_table 时只生成一个文件,那么可以用下面的语句:

/*+cluster=vc-test,table-write-worker-count=1,task-writer-count=1*/
INSERT into target_table SELECT * FROM source_table
注意这里我们指定了cluster的hint,因为这个特性只在CU版本中才可以使用。

注意实际产生的文件数还取决于其他一些因素,比如你的数据量,因此上面的参数可以大体控制文件数的规模,但是有时候文件数不完全是 table-write-worker-count * task-writer-count。

支持为CU指定默认的hint

CU中有一些场景我们想指定默认的hint,比如上面提到的针对Cassandra小表的性能优化,需要添加一个 cassandra.full-table-scan-split-count=1 的hint,但是我们又不想每个SQL语句都写这个,那么我们可以把他配置在CU级别,目前这个功能还没有完全界面化开放给用户,如果有需要可以联系我们,我们后台配置。如果这个功能大家使用的多,我们后续会考虑开放配置界面给用户。

其他

我们还有其他一些更新包括:

  • 增加对AdbPG存储弹性版本的支持。
  • 优化Alluxio对于多块盘的支持,在重启的时候可以从多块盘恢复缓存数据。
  • 修复表名为数字时查询报错的问题。

最后对于产品如果有更多的意见建议欢迎加入我们的钉钉用户群。

dingding_dla.jpeg

如果对咱们底层的Presto这个开源软件感兴趣也欢迎关注我们的Presto News公众号:

WechatIMG26.jpeg

相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
相关文章
|
2月前
|
监控 关系型数据库 MySQL
Flink CDC产品常见问题之flink-cdc任务抓取全量的mysql数据不生效如何解决
Flink CDC(Change Data Capture)是一个基于Apache Flink的实时数据变更捕获库,用于实现数据库的实时同步和变更流的处理;在本汇总中,我们组织了关于Flink CDC产品在实践中用户经常提出的问题及其解答,目的是辅助用户更好地理解和应用这一技术,优化实时数据处理流程。
|
3月前
|
SQL 消息中间件 Kafka
Flink部署问题之hive表没有数据如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
|
5月前
|
SQL 分布式计算 MaxCompute
Apache Flink目前不支持直接写入MaxCompute,但是可以通过Hive Catalog将Flink的数据写入Hive表
Apache Flink目前不支持直接写入MaxCompute,但是可以通过Hive Catalog将Flink的数据写入Hive表
59 3
|
SQL 分布式计算 HIVE
|
SQL JSON 分布式计算
spark/Flink 导入导出starrocks
spark/Flink 导入导出starrocks
spark/Flink 导入导出starrocks
|
SQL 分布式计算 Java
Apache Hudi表自动同步至阿里云数据湖分析DLA
Hudi 0.6.0版本之前只支持将Hudi表同步到Hive或者兼容Hive的MetaStore中,对于云上其他使用与Hive不同SQL语法MetaStore则无法支持,为解决这个问题,近期社区对原先的同步模块hudi-hive-sync进行了抽象改造,以支持将Hudi表同步到其他类型MetaStore中,如阿里云的数据湖分析DLA(https://www.aliyun.com/product/datalakeanalytics中。
314 0
Apache Hudi表自动同步至阿里云数据湖分析DLA
|
SQL 分布式计算 DataWorks
Hive 数据如何同步至 MaxCompute|学习笔记
快速学习 Hive 数据如何同步至 MaxCompute
269 0
Hive 数据如何同步至 MaxCompute|学习笔记
|
SQL 关系型数据库 MySQL
使用presto查询同步到hive的hudi数据
本文介绍如何通过presto查询同步到hive的hudi数据
使用presto查询同步到hive的hudi数据
|
消息中间件 分布式计算 关系型数据库
阿里云 E-MapReduce ClickHouse 操作指南 04 期 — 数据导入
阿里云 E-MapReduce(简称 EMR )是运行在阿里云平台上的一种大数据处理的系统解决方案。ClickHouse 作为开源的列式存储数据库,主要用于在线分析处理查询(OLAP),能够使用 SQL 查询实时生成分析数据报告。而阿里云 EMR ClickHouse 则提供了开源 OLAP 分析引擎 ClickHouse 的云上托管服务。
阿里云 E-MapReduce ClickHouse 操作指南 04 期 — 数据导入
|
存储 SQL 运维
阿里云 E-MapReduce ClickHouse 操作指南 01期 — ClickHouse 概述
阿里云 E-MapReduce(简称EMR)是运行在阿里云平台上的一种大数据处理的系统解决方案。ClickHouse 作为开源的列式存储数据库,主要用于在线分析处理查询(OLAP),能够使用 SQL 查询实时生成分析数据报告。而阿里云 EMR ClickHouse 则提供了开源 OLAP 分析引擎 ClickHouse 的云上托管服务。
阿里云 E-MapReduce ClickHouse 操作指南 01期 — ClickHouse 概述