跳转到主要内容
公司博客上”>
             <noscript>
              <img data-gatsby-image-ssr=

引入δ湖泊大规模数据的时间旅行

分享这篇文章

O ' reilly的早期预览版的新电子书一步一步指导你需要开始使用三角洲湖


数据的版本控制繁殖实验,回滚和审计数据

我们很高兴介绍时间旅行的能力砖三角洲湖,下一代统一分析引擎之上的Apbob体育亚洲版ache火花,我们所有的用户。这个新特性,三角洲自动版本的大数据存储在你的数据湖,你可以访问任何数据的历史版本。这个时态数据管理简化你的数据管道便于审计、回滚数据以防意外坏写或删除,和繁殖实验和报告。组织终于可以标准化清洁、集中、版本化在自己的云存储大数据存储库为您分析。

共同的挑战和变化的数据

  • 审计数据的变化:审计数据的变化是至关重要的两方面的数据合规以及简单的调试,了解数据随时间发生了变化。组织从传统数据系统大数据技术和云在这样的场景中挣扎。
  • 繁殖实验和报告:在模型训练数据科学家运行各种实验用不同参数对给定的数据集。当科学家们重新审视他们的实验一段时间后复制模型,一般情况下,源数据被修改了上游管道。很多时候,他们被不知道的上游数据更改,因此难以复制他们的实验。一些科学家和工程师组织的最佳实践通过创建数据的多个副本,从而增加了存储成本。这同样适用于分析师生成报告。
  • 回滚:数据管道有时可以为下游消费者编写错误数据。这可能发生,因为问题从基础设施不稳定到混乱的数据错误的管道。做简单的管道附加目录或一个表,回滚可以很容易地解决基于日期的分区。更新和删除,这可能变得非常复杂,数据工程师通常需要工程师一个复杂的管道来处理这样的场景。

引入时间旅行

δ的时间旅行能力简化构建数据管道上面的用例。如表或目录编写成δ,每个操作都是自动版本。您可以访问数据的不同版本两种不同的方式:

1。使用时间戳

Scala的语法:

您可以提供时间戳或日期的字符串作为一个选项DataFrame读者:

val df = spark.read格式(“δ”).option (“timestampAsOf”,“2019-01-01”).load (“/道路/,/我的/表”)

在Python中:

df =火花。读\格式(“δ”)\.option (“timestampAsOf”,“2019-01-01”)\.load (“/道路/,/我的/表”)

SQL语法:

选择(*)my_table时间戳作为“2019-01-01”选择(*)my_table时间戳作为date_sub (当前日期(),1)选择(*)my_table时间戳作为“2019-01-01 01:30:00.000”

如果读者代码库,您没有访问,如果你输入参数传递给库读取数据,你仍然可以穿越时间的表通过时间戳yyyyMMddHHmmssSSS格式的路径:

val inputPath =/ /我的/ " /路径(电子邮件保护)val df = loadData (inputPath)/ /函数库,你没有访问权def loadData (inputPath:字符串):DataFrame = {spark.read.format (“δ”).load (inputPath)}
inputPath =/ /我的/ " /路径(电子邮件保护)df = loadData (inputPath)#函数库,你没有访问权defloadData(inputPath):返回spark.read\格式(“δ”)\.load (inputPath)}

2。使用一个版本号
在三角洲,每写一个版本号,您可以使用版本号穿越时间。

Scala的语法:

val df = spark.read格式(“δ”).option (“versionAsOf”,“5238”).load (“/道路/,/我的/表”)
              val df = spark.read格式(“δ”).load (/ /我的/ " /路径(电子邮件保护))

Python语法:

df =火花。读\格式(“δ”)\.option (“versionAsOf”,“5238”)\.load (“/道路/,/我的/表”)
              df =火花。读\格式(“δ”)\.load (/ /我的/ " /路径(电子邮件保护))

SQL语法:

选择(*)my_table版本作为5238年选择(*)my_table@v5238选择(*)delta.”/路径//我的/@v5238

审计数据的变化

你可以看看表的历史变化使用描述历史命令或通过UI。

繁殖实验和报告

时间旅行也扮演着重要的角色在机器学习和数据的科学。模型和实验的重现性是一个关键的考虑数据科学家,因为他们经常创建100年代之前的模型把一个投入生产,和费时的过程想回到早期的模型。然而,由于数据管理通常是独立于数据科学工具,这是很难完成的。

砖解决了这个通过集成三角洲的穿越能力与再现性问题MLflow,一个开源bob下载地址平台的机器bob体育客户端下载学习生命周期。可再生的机器学习培训,您可以简单地记录一个时间戳的URL的路径作为MLflow参数跟踪版本的数据被用于每个培训工作。这使您回到提前设置和数据复制模型。你既不需要配合上游团队的数据也不担心克隆不同的实验数据。这是统一的力量分析,数据科学与数据工程紧密bob体育亚洲版结了婚。

回滚

时间旅行也很容易做回滚的坏写道。例如,如果您的GDPR管道工作有一个错误,不小心删除用户信息,您可以很容易地修复管道:

插入my_table选择*my_table时间戳作为date_sub (当前日期(),1)在哪里用户标识=111年

你也可以修复错误的更新如下:

合并my_table目标使用my_table时间戳作为date_sub (当前日期(),1)来源source.userId=target.userId匹配然后更新*

固定的看法不断更新跨多个下游三角洲表工作

与查询,您现在可以销不断更新的快照多个下游三角洲表工作。考虑一种情况不断更新,三角洲表说每15秒,下游有一个工作,定期从δ表读取和更新不同的目的地。在这样的场景中,通常需要一个一致的视图的源三角洲表以便所有目的地表反映相同的状态。你现在可以轻松地处理这样的场景如下:

版本= spark.sql (“选择马克斯(版本)(描述历史my_table)”).collect ()#将使用最新版本的表下面的所有操作数据= spark.table ((电子邮件保护)% s”%的版本(0][0]data.where (“event_type = e1”).write.jdbc (“表1”)data.where (“event_type = e2”).write.jdbc (“表”)data.where (“event_type = e10”).write.jdbc (“table10”)

查询时间序列分析变得简单

时间旅行也简化了时间序列分析。例如,如果你想找出多少新客户添加过去一周,您的查询可以非常简单:

选择(截然不同的userId)- - - - - -(选择(截然不同的userId)my_table时间戳作为date_sub (当前日期(),7))my_table

玩这个视频,请点击这里,接受饼干

结论

时间旅行在三角洲大大提高开发人员的生产力。它可以帮助:

  • 数据科学家更好地管理他们的实验
  • 数据工程师简化管道和回滚糟糕写道
  • 数据分析师做简单的报告

组织终于可以标准化清洁、集中、版本化的大数据存储库在自己的云存储分析。我们很高兴看到你能完成这个新特性。

可用的功能是作为公共预览为所有用户。BOB低频彩的特性。看它的实际应用,注册一个免费试用砖。

对开源三角洲湖感兴趣吗?bob下载地址
访问在线三角洲湖中心要了解BOB低频彩更多,请下载最新的代码,并加入三角洲湖社区。
免费试着砖

相关的帖子

看到所有公司博客上的帖子