Delta Lake 0.5.0 正式发布,支持包括 Hive/Presto 等多种查询引擎

简介: Delta Lake 0.5.0 于2019年12月13日正式发布,这个版本支持多种查询引擎查询 Delta Lake 的数据,比如常见的 Hive、Presto 查询引擎。并发操作得到改进。

Delta Lake 0.5.0 于2019年12月13日正式发布,正式版本可以到 这里 下载使用。这个版本支持多种查询引擎查询 Delta Lake 的数据,比如常见的 Hive、Presto 查询引擎。并发操作得到改进。当然,这个版本还是不支持直接使用 SQL 去增删改查 Delta Lake 的数据,这个可能得等到明年1月的 Apache Spark 3.0.0 的发布。好了,下面我们来详细介绍这个版本的关键特性。

通过使用 manifest 文件来支持多种查询引擎

在之前版本的 Delta Lake,只支持使用 Spark 去查询 Delta Lake 的数据,使得它的使用场景有点限制。但是通过引入了 manifest 文件(参见 #76),我们可以使用 Presto/Amazon Athena 等查询引擎去查询 Delta Lake 的数据。Amazon Athena 是一种交互式查询服务,让您能够轻松使用标准 SQL 直接分析 Amazon S3 中的数据,其内部是使用 Presto 实现的。

manifest 文件的生成可以使用 Scala, Java, Python 以及 SQL 去实现,具体可以参见 Delta Lake 的最新文档:Presto and Athena to Delta Lake Integration

除了支持 Presto/Amazon Athena,还支持 Redshift Spectrum(Amazon Redshift 是一种快速、完全托管的 PB 级数据仓库服务,它使得用现有商业智能工具对您的所有数据进行高效分析变得简单而实惠,Amazon Redshift 不能直接分析 S3 上的数据,他需要将 S3 上的数据拷贝到 Amazon Redshift 才行;而 Redshift Spectrum 是 Amazon Redshift 的一项新功能,它支持直接分析 S3 上的数据。)、Snowflake(这个是美国的一家公司的数据湖产品,支持分析 S3 上的数据) 以及 Hive(只支持查 Delta Lake 的数据,不支持 metastore)。

但是毕竟不是通过 manifest 文件实现的,所以有一些 Delta Lake 原生的功能暂不支持,比如数据一致性可能不能保证,底层的模式发生变化上层查询引擎会不感知,得重新建立。具体可以参见 limitations

更好的并发操作支持

现在我们可以同时运行更多的 Delta Lake 操作。这个实现是通过将 Delta Lake 乐观并发控制的冲突检测变得更细粒度解决的。这使得我们可以在 Delta Lake 表上运行更加复杂的工作流:

  • 在添加新分区时,同时删除旧分区;
  • 在不相交的分区上并发地运行更新(updates)和合并(merges);
  • 在数据压缩的时候同时对 Delta Lake 添加数据。

具体参见 并发控制

改进了对文件压缩的支持

在压缩数据的时候现在可以通过DataFrameWriter的选项 dataChange 设置为 false 来重新编写文件。通过这个选项允许压缩操作与其他批处理和流操作并发运行。关于如何使用可以参见 压缩文件

改进了纯插入合并( insert-only merge)的性能

Delta Lake 现在为只有插入子句而没有更新子句的合并操作提供了更优化的性能。此外,Delta Lake 确保这种 insert-only merge 操作只会向表中追加(append)新数据。举个例子,常见的 ETL 操作将收集到的数据追加到 Delta Lake 表中,然而,这些源常常会生成重复的日志记录,需要下端来删除这些重复的数据,而有了这个功能,我们可以避免插入重复的记录。具体可以参见 这里

通过 SQL 将 Parquet 表转换成 Delta Lake 表

在 Delta Lake 0.4.0 版本,已经支持使用 Scala, Java 以及 Python 来实现这个目的。为了使用更加方便,Delta Lake 0.5.0 版本支持直接通过 SQL 将 Parquet 表转换成 Delta Lake 表,具体如下:

Convert unpartitioned parquet table at path 'path/to/table'
CONVERT TO DELTA parquet.`path/to/table`
 
Convert partitioned parquet table at path 'path/to/table' and partitioned by integer column named 'part'
CONVERT TO DELTA parquet.`path/to/table` PARTITIONED BY (part int)

更加完整的文档可以参见 convert-to-delta


本文转载自过往记忆
原文链接: 【Delta Lake 0.5.0 正式发布,支持包括 Hive/Presto 等多种查询引擎】


阿里巴巴开源大数据技术团队成立Apache Spark中国技术社区,定期推送精彩案例,技术专家直播,问答区数个Spark技术同学每日在线答疑,只为营造纯粹的Spark氛围,欢迎钉钉扫码加入!
二维码.JPG

相关实践学习
数据湖构建DLF快速入门
本教程通过使⽤数据湖构建DLF产品对于淘宝用户行为样例数据的分析,介绍数据湖构建DLF产品的数据发现和数据探索功能。
快速掌握阿里云 E-MapReduce
E-MapReduce 是构建于阿里云 ECS 弹性虚拟机之上,利用开源大数据生态系统,包括 Hadoop、Spark、HBase,为用户提供集群、作业、数据等管理的一站式大数据处理分析服务。 本课程主要介绍阿里云 E-MapReduce 的使用方法。
相关文章
|
7月前
|
SQL 分布式计算 Hadoop
Hive使用Impala组件查询(1)
Hive使用Impala组件查询(1)
158 0
|
6月前
|
SQL 存储 分布式数据库
【通过Hive清洗、处理和计算原始数据,Hive清洗处理后的结果,将存入Hbase,海量数据随机查询场景从HBase查询数据 】
【通过Hive清洗、处理和计算原始数据,Hive清洗处理后的结果,将存入Hbase,海量数据随机查询场景从HBase查询数据 】
|
SQL HIVE
Hive分区+根据分区查询
Hive分区+根据分区查询
|
27天前
|
SQL 数据可视化 Apache
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
阿里云数据库 SelectDB 内核 Doris 的 SQL 方言转换工具, Doris SQL Convertor 致力于提供高效、稳定的 SQL 迁移解决方案,满足用户多样化的业务需求。兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移。
阿里云数据库内核 Apache Doris 兼容 Presto、Trino、ClickHouse、Hive 等近十种 SQL 方言,助力业务平滑迁移
|
1月前
|
SQL 关系型数据库 MySQL
Flink CDC + Hudi + Hive + Presto构建实时数据湖最佳实践
Flink CDC + Hudi + Hive + Presto构建实时数据湖最佳实践
134 0
|
4月前
|
SQL 存储 关系型数据库
Presto【实践 01】Presto查询性能优化(数据存储+SQL优化+无缝替换Hive表+注意事项)及9个实践问题分享
Presto【实践 01】Presto查询性能优化(数据存储+SQL优化+无缝替换Hive表+注意事项)及9个实践问题分享
87 0
|
4月前
|
SQL 分布式计算 Java
Hive【Hive(三)查询语句】
Hive【Hive(三)查询语句】
|
7月前
|
SQL 存储 大数据
大数据Hive Join连接查询
大数据Hive Join连接查询
42 0
|
7月前
|
SQL 存储 Java
Hive使用Impala组件查询(2)
Hive使用Impala组件查询(2)
85 0
|
8月前
|
SQL 分布式计算 HIVE
Hive学习---3、DML(Data Manipulation Language)数据操作、查询(二)
Hive学习---3、DML(Data Manipulation Language)数据操作、查询(二)