关注 spark技术分享,
撸spark源码 玩spark最佳实践

Delta常见问题

什么是 Delta

Delta Lake 是一个计算层和一个一种存储格式,完全兼容 Spark APIs, 提供了高稳定性的数据和查询性能来支撑一些大数据处理场景,在流式和批处理已经交互查询甚至机器学习中都可以很方便的使用Delta,一些特性如下

支持 ACID 事务

使用乐观锁进行事务控制,这种方式在数据湖场景下面很适用,因为多次写入/修改相同的文件很少发生。在存在冲突的情况下,Delta Lake 会抛出并发修改异常以便用户能够处理它们并重试其作业。Delta Lake 还提供强大的可序列化隔离级别,允许工程师持续写入目录或表,并允许消费者继续从同一目录或表中读取。读者将看到阅读开始时存在的最新快照。

Schema 管理

spark 在写入 Delta 的时候,会对 schema 进行校验,Delta 会自动对数据 进行 校验 DataFrame 和 table 中的schema 是否一致 ,如果一个字段在table存在,在DataFrame中不存在,那么在写入的时候会指定为 null, 如果一个字段 在DataFrame中存在,在table中不存在,那么在写入的时候会抛出异常,Delta 可以使用DDL显式添加字段,也可以动态更新 schema。

可扩展元数据处理

Delta Lake 将表或目录的元数据信息存储在事务日志中,而不是 Metastore 中。这允许 Delta Lake 在恒定时间内列出大型目录中的文件,同时在读取数据时非常高效。

Time travel

Delta 会保留多个版本的数据,在写入文件时候,会产生一个新版本的数据集,你可以指定版本号或者时间戳访问访问历史版本的数据,Delta Lake 根据事务日志中的信息构建该时间戳或版本的完整快照。这允许用户重现之前的数据,并在需要时将表还原为旧版本的数据。

统一的流批处理,深度整合 Structured streaming 框架,100%兼容spark APIs。从 Delata 迁移到其他 format 只需要修改一下 format 就可以了。How is Delta Lake related to Apache Spark?

Delta 和 spark 的关系

Delta 基于spark 构建,100%兼容spark APIs。

Delta 使用什么格式存储数据

Delta 使用版本化的parquet 格式存储数据,还有一些 transaction log 文件用来跟踪所有commit 文件变化,和保证ACID事务性。

How can I read and write data with Delta Lake?

You can use your favorite Apache Spark APIs to read and write data with Delta Lake. See Read a table and Write to a table.

Can I stream data directly into Delta Lake tables?

是否可以流式写入 Delta Lake table

是的,你可以使用 Structured Streaming 直接写入 Delta Lake tables

Can I stream data from Delta Lake tables?

是否可以流式读取 Delta Lake tables

可以使用 Structured Streaming 流式读取Delta Lake tables 中的数据

Does Delta Lake support writes or reads using the Spark Streaming DStream API?

Delta Lake 是否支持 Spark Streaming

Delta 不支持 spark streaming 中的DStream, 对应实时场景,我们推荐使用 Structured Streaming , Delta Lake 原生支持 Structured Streaming 。

对于spark 的老代码,是否很容易得迁移到 Delta Lake

从 Delata 迁移到其他 format 只需要修改一下 format 就可以了

Does Delta Lake support multi-table transactions?

Delta lake是否支持多个表的事务?

不支持,只支持对一个表的事务

赞(0) 打赏
未经允许不得转载:spark技术分享 » Delta常见问题
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

关注公众号:spark技术分享

联系我们联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏