Salesforce 工程:Delta Lake 中的全局同步和排序
作者:Denny Lee
在 Salesforce,我们维护一个平台来捕获客户活动——各种销售事件,例如电子邮件、会议和视频。这些事件要么被下游产品实时消费,要么存储在我们的数据湖中,该数据湖是使用Delta Lake构建的。这个数据湖支持由像Einstein Analytics这样的下游组件创建最新仪表板,并为使用Sales Cloud Einstein智能转化潜在客户并创造新商机的客户训练机器学习模型。
Delta Lake 提供的一项强大功能是ACID 事务。当多个独立的写入流修改同一个 Delta 表时,此功能对于维护数据完整性至关重要。在实际运行中,我们观察到频繁的冲突提交错误,导致我们的管道失败。我们意识到,虽然ACID 事务可以维护数据完整性,但没有机制来解决写入冲突。在本博客中,我们分享了一种解决方案,以确保多个进程流在对共享 Delta Lake 执行并发写入时实现全局同步和排序。通过这种机制,我们通过消除冲突提交错误并维护数据完整性,大大提高了管道的稳定性。