云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

全站加速_韩国云主机_免费申请

小七 141 0

为大型数据湖引入Delta时间旅行

用于复制实验、回滚和审核数据的数据版本控制我们很高兴在Databricks Delta中为我们的所有用户引入时间旅行功能,Databricks Delta是建立在ApacheSpark之上的下一代统一分析引擎。有了这个新功能,Delta可以自动对存储在数据湖中的大数据进行版本设置,并且可以访问该数据的任何历史版本。这种临时数据管理简化了您的数据管道,使其更易于审核、在意外的错误写入或删除时回滚数据,以及重现实验和报告。您的组织最终可以在自己的云存储中为您的分析标准化一个干净、集中、版本化的大数据存储库。数据变化带来的常见挑战审核数据更改:审核数据更改对于数据遵从性和了解数据如何随时间变化的简单调试都至关重要。从传统数据系统转向大数据技术的组织,以及云在这种情况下的挣扎。复制实验和报告:在模型训练期间,数据科学家在给定的数据集上用不同的参数运行各种实验。当科学家们在一段时间后重新访问他们的实验来重现模型时,通常源数据已经被上游管道修改过。很多时候,他们没有意识到上游数据的变化,因此很难重现他们的实验。一些科学家和组织通过创建数据的多个副本来设计最佳实践,从而增加了存储成本。对于生成报告的分析师来说也是如此。回滚:数据管道有时会为下游用户写入错误的数据。这可能是由于基础设施不稳定、数据混乱、管道中的错误等问题造成的。对于对目录或表执行简单追加的管道,可以通过基于日期的分区轻松地解决回滚问题。通过更新和删除,这可能变得非常复杂,数据工程师通常必须设计一个复杂的管道来处理这种情况。引入时间旅行Delta的时间旅行功能简化了为上述用例构建数据管道。当您写入Delta表或目录时,每个操作都会自动进行版本控制。您可以通过两种不同的方式访问数据的不同版本:1使用时间戳Scala语法:您可以提供时间戳或日期字符串作为数据帧读取器的选项:值df=火花。阅读.格式("delta").选项("时间间隔","2019-01-01").load("/path/to/my/table")在Python中:df=火花。阅读\.格式("delta")\.选项("时间间隔","2019-01-01")\.load("/path/to/my/table")SQL语法:从"2019-01-01"的my峎表时间戳中选择count(*)从my_table TIMESTAMP AS OF date_sub(current_date(),1)中选择count(*)从"2019-01-01 01 01:30:00.000"的my斨表时间戳中选择count(*)如果读卡器代码位于您无权访问的库中,并且您正在将输入参数传递给库以读取数据,则仍可以通过将yyyymmddhhmmssss格式的时间戳传递到以下路径来返回表:val inputPath="/path/to/my"/表@20190101000000000"val df=加载数据(输入路径)//函数库中您无权访问的函数def loadData(inputPath:String):数据帧={火花。阅读.格式("delta").load(输入路径)}inputPath="/path/to/my"/表@20190101000000000"df=加载数据(输入路径)#函数库中您无权访问的函数def加载数据(输入路径):返回火花。阅读\.格式("delta")\.load(输入路径)}2使用版本号在Delta中,每次写入都有一个版本号,您也可以使用这个版本号及时返回。Scala语法:值df=火花。阅读.格式("delta").选项("版本号","5238").load("/path/to/my/table")值df=火花。阅读.格式("delta").load("/path/to/my/表@v5238")Python语法:df=火花。阅读\.格式("delta")\.选项("版本号","5238")\.load("/path/to/my/table")df=火花。阅读\.格式("delta")\.load("/path/to/my/表@v5238")SQL语法:从自5238起的my_table VERSION中选择count(*)从中选择计数(*)我的桌子@v5238选择count(*)FROM delta.`/path/to/my/表@v5238`审核数据更改您可以使用DESCRIBE history命令或通过UI查看表更改的历史记录。复制实验和报告时间旅行在机器学习和数据科学中也扮演着重要的角色。模型和实验的再现性是数据科学家的一个关键考虑因素,因为他们通常在投入生产前创建100多个模型,在这个耗时的过程中,他们希望回到早期的模型。然而,由于数据管理通常与数据科学工具分离,这确实很难实现。Databricks通过将Delta的时间旅行功能与MLflow(一个用于机器学习生命周期的开源平台)集成,解决了这个再现性问题。对于可再现的机器学习培训,您可以简单地将带有时间戳的URL作为MLflow参数记录到路径,以跟踪每个培训作业使用的数据版本。这使您能够返回到以前的设置和数据集来重现早期的模型。你不需要在数据上与上游团队进行协调,也不必担心为不同的实验克隆数据。这就是统一分析的力量,数据科学与数据工程紧密结合。回滚时间旅行还使得在出现错误写操作时很容易执行回滚。例如,如果您的GDPR管道作业有一个错误,意外地删除了用户信息,则可以轻松地修复管道:插入我的表从my_table TIMESTAMP AS OF date_sub(current_date(),1)中选择*其中userId=111您也可以按如下方式修复不正确的更新:合并到我的目标U使用my_table TIMESTAMP AS date_sub(current_date(),1)源打开源.userId= 目标.userId匹配后更新集*跨多个下游作业连续更新增量表的固定视图通过AS-OF查询,现在可以为多个下游作业固定连续更新的Delta表的快照。考虑这样一种情况:一个Delta表被连续更新,比如每15秒,有一个下游作业周期性地从这个Delta表读取数据并更新不同的目的地。在这种情况下,通常需要源增量表的一致视图,以便所有目标表都反映相同的状态。现在,您可以轻松地处理以下情况:版本=火花.sql("从(描述历史记录我的表)"中选择最大值(版本)。collect()#将对下面的所有操作使用该表的最新版本数据=火花表("我的表@v%s%版本[0][0]数据。何处("事件类型=e1")。写入.jdbc("表1")数据。何处("事件类型=e2")。写入.jdbc("表2")...数据。何处("事件类型=e10")。写入.jdbc("表10")时间序列分析查询变得简单时间旅行也简化了时间序列分析。例如,如果您想知道上周新增了多少客户,您的查询可以是这样一个非常简单的查询:选择count(distinct userId)-(选择计数(不同的用户标识)从my_table time stamp AS OF date_sub(current_date(),7))从我的桌子上 结论Delta的时间旅行极大地提高了开发人员的生产率。它有助于:数据科学家更好地管理他们的实验数据工程师简化他们的管道并回滚不好的写操作数据分析师可以轻松地进行报告组织最终可以在自己的云存储中标准化一个干净、集中、版本化的大数据存储库,用于分析。我们很高兴看到你将能够完成这个新功能。该功能可作为公共预览供所有用户使用。了解有关该功能的更多信息。要想看到它的实际应用,请注册免费试用Databricks。 对开源的三角洲湖感兴趣吗?访问Delta Lake在线中心了解更多信息,下载最新代码并加入Delta Lake社区。 免费试用Databricks。今天就开始吧