databricks - 我可以强制刷新 Databricks Delta 表,以便磁盘副本具有最新/一致的数据吗?
问题描述
我正在从 Azure 数据工厂访问 Databricks Delta 表,它没有与 Databricks 表的本机连接器。因此,作为一种解决方法,我使用 LOCATION 关键字创建表以将它们存储在 Azure Data Lake 中。然后,由于我知道表格文件的位置,我只需从数据工厂读取底层 Parquet 文件。这工作正常。
但是……如果 Delta 事务日志中有缓存信息还没有写入磁盘怎么办?比如说,一个应用程序更新了表中的一行,而磁盘还没有反映这个事实。那么我从数据工厂中读取的内容将是错误的。
那么,两个问题...
- 这会发生吗?在被写出之前,更改是否会在日志中保留一段时间?
- 我可以强制刷新事务日志,以便我知道磁盘副本已更新吗?
解决方案
在这个主题上也有人问过类似的问题(例如,请参见此处)。
对于 delta 表,您需要 delta-lake 支持(因为 delta 日志正在捕获真实情况)。因此,到目前为止,您必须使用 Databricks 活动在 delta 表上使用 Azure 数据工厂进行进一步处理(您还可以将数据集复制到 parquet,以使数据可用于尚不支持 delta-lake 的其他服务)。从理论上讲,您可以使用 0 的保留期进行清理,但不建议这样做,并且可能会导致数据不一致。
根据Azure 反馈论坛,计划在未来对此提供支持。
推荐阅读
- amazon-web-services - 将 aws iam 用户限制到特定区域 (eu-west-1)
- javascript - 输入掩码允许字母数字文本
- javascript - 通过 props 传递的更新数组
- c# - 如何获取超链接文本
- spring - 在查询字符串中传递的 url 的 spring 云网关身份验证
- angular - 如何对带有收藏夹的材料表进行排序?
- shell - Shell 命令 grep 来自包含 .GZ 文件的 .TAR 文件的记录
- sql - SQL 中的差距分析(财务)
- c# - VS2017 在加载任何项目时崩溃,并出现“FileNotFoundEx: System.Runtime.CompilerServices.Unsafe, V=4.0.4.1”
- asp.net - asp.NET MVC 身份登录页面 - 这指向哪里?