Apache Spark Delta Lake写数据行使及实现道理代码理会
在 Delta Lake 中,假如是新增文件则会在事宜日记中行使 AddFile 类记录相干的信息,AddFile 耐久化到事宜日记内里的内容如下:
可以看出 AddFile 内里记录了新增文件的生涯路径,分区信息,新增的文件巨细,修改时刻等信息。假如是删除文件,也会在事宜日记内里记录这个删除操纵,对应的就是行使 RemoveFile 类存储,RemoveFile 耐久化到事宜日记内里的内容如下:
RemoveFile 内里生涯了删除文件的路径,删除时刻等信息。假如新增一个文件,再删除一个文件,那么最新的事宜日记快照内里只会生涯删除这个文件的记录。从这内里也可以看出, Delta Lake 删除、新增 ACID 是针对文件级此外。 上面的写操纵必定会发生新的文件,以是写操纵之后就必要拿到新增的文件(val newFiles = txn.writeFiles(data, Some(options)) )newFiles(AddFile) 和必要删除的文件(RemoveFile)。针对那些文件必要删除必要做一些判定,首要分两种环境(详细拜见 write 要领内里的):
最后 write 要领返回新增的文件和必要删除的文件(newFiles ++ deletedFiles),这些文件最终必要记录到事宜日记内里去。关于事宜日记是怎样写进去的请拜见这篇文章的具体说明。
(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |