三角洲湖を開始する

简化和规模数据工程管道

丹尼·李。开发人员提倡在砖
丹尼·李是一个开发人员提倡在砖。他是一个实际的分布式系统和数据科学工程师网际网路规模的基础设施发展的丰富经验,对本地数据平台,和预测分析系统和云环境。bob体育客户端下载他也有硕士从俄勒冈健康与科学大学生物医学信息学,有强大的数据架构和实现解决方案的企业医疗客户。

系列的细节

这次会议是开始的一部分与三角洲湖系列丹尼李和三角洲湖团队。

会议摘要

工程管道架构使用公共数据表对应于不同的质量水平,逐步添加结构数据:数据摄入(“青铜”表),转换/特性工程(“银”表),和机器学习培训或预测(“黄金”表)。结合起来,我们将这些表作为一个“种”的架构。它允许数据工程师建立管道始于原始数据作为“单一来源的真相”的所有流动。在这次会议中,我们将展示如何构建一个可伸缩的数据使用三角洲湖工程的数据管道。

三角洲湖是一个开源存储层,数据可靠性湖泊。三角洲湖提供ACID事务,可扩展的元数据处理,结合流媒体和批量数据处理。它运行在你的现有数据湖和Apache火花api完全兼容。

在这个会话您将学习:

  • 工程管道架构的数据
  • 数据管道工程场景
  • 数据管道工程最佳实践
  • 三角洲湖如何提高数据工程管道
  • 易于采用三角洲湖为构建数据工程管道

你需要什么:
报名参加Community Edition在这里和访问车间演示材料和样本的笔记本。

视频记录

——【导师】大家好。欢迎来简化和规模数据与三角洲湖工程管道。丹尼我的名字叫李,我是一个开发人员提倡在砖。

今天订阅!

我想让你知道,我们也转播画面这砖的YouTube频道。所以你可以去dbricks。有限公司/ youtube。如果你想去听这个转播画面如果你要跳下来一点早期或如果你想听有点今天晚些时候。这个和其他的三角洲湖在线技术会谈会在砖YouTube频道。

今天的演讲者

好吧,请允许我介绍一下自己在一点之前。我的名字是丹尼·李,如上所述。我是一个开发人员提倡在砖。我是一个实际的分布式系统和数据科学工程师经验在网际网路规模的基础设施,数据平台,预测分析系统。bob体育客户端下载我过去在微软工作,并帮助建立所谓目前HG的见解,与SQL Server的客户工作,现在我已经工作自2005年以来与Apache火花。我给你一个小的背景数据工程经验。一些快速物流。记录和幻灯片后将这个技术讨论,在这个网络研讨会。如上所述,它也会最终发布到YouTube,砖的YouTube频道。因为每个人的沉默,请把你的问题在问答面板中,而不是在聊天面板。 I’ll be looking for questions inside there. And we will also provide a link to anybody that logged in who saved a spot through Zoom or through the YouTube channel. So that will give you all the information you need. This does include, by the way, any of the notebooks that we’re using for this demo. It’s actually included in this presentation, the link, as well, we’re going to provide it inside the YouTube channel, okay?

所以,让我们开始吧。

数据工程师的旅程…

如果你们中的一些人已经参加的一些以前的会议,我们讨论一下数据工程的旅程,或数据工程管道。

我要做的只是快速上门服务,为人们提供上下文,但如果你想更深入到我们上周的三角洲体系结构介绍,基本上,超越λ的架构,介绍了三角洲体系结构。前一周,我们也获取数据准备数据科学与三角洲湖和MLFlow,我们讨论一下这个问题。但快速上下文是,如果你看这个图左边你会看到,这是进入Apache卡夫卡或其他流机制,比如,运动或Azure事件中心或宇宙DB,无关紧要的方法,通常你必须建立一个λ架构因为λ架构允许您处理实时处理在它的顶部和底部的批处理。顶部是在Apache火花或结构流,从卡夫卡的处理数据,然后将该数据转换为统一的数据库视图。这就是人工智能报告。但是这是你不断地流本身。然后还有一批数据,这是你的离开这里。基本上和左边的数据流和写入不断分成一些表,你可以正常的批处理。来验证这些数据实际上你需要建立一个统一的视图,并验证流之间的顶部和左侧流流,处理你做之间结构流,处理你做最终进入表如此这样的和解进程,确保数据实际上是相同的。

一旦你得到你的数据写入这个表,因为它是连续写在那里,你会运行批处理。这个批处理允许你再加工数据到另一个表,它会得到压实每一个小时,因为你的文件的大小,你有很多的小文件产生的流,所以我们要继续压缩这些文件一起,这样我们可以确保更好的性能。基本上,当你有太多的小文件在任何分发系统,基本上它会降低系统的性能。

这里你就可以对这些数据做更新和合并,然后如果有晚到达的数据,你可以继续再加工在下面这个表是正确的在中间。另一个火花批处理过程将需要的数据表,将其统一的视图,这样你就可以做你的AI报告。这是一个传统的λ架构。通常的问题你想问的是,这可以简化吗?所以,这基本上是数据工程师的梦想是什么,对吧?

数据工程师的梦想. .

你想成为能够处理数据不断和增量作为新数据到达成本最低的方法,而不必选择批处理或流。当我们创建了火花流或结构化流,那些几年前,整个美国创建数据帧的前提,当我们称之为静态数据帧和动态数据帧,是,你真的没有想如何处理低延迟数据之间的差别和批处理数据。换句话说,你对待并运行查询完全相同的你是否在针对流媒体数据集运行或运行一个批处理数据集。这是你真的想做什么,所以这样相同的api或相同的SQL语法,你应用是否流数据集或一批数据集。现在,不仅将大大简化代码的维护,但同样重要的是,涉及的思维类型,你精神不需要改变你的思考过程仅仅因为你做事批或流。这梦,然后,主要是在左边,你的卡夫卡,运动,活动中心,数据湖,没关系如果是流源或一批来源,没关系,火花需要它,道具到一些商店,这就是三角洲湖介入,只是一个小提示,然后再次引发处理它,然后你的AI报告。所以,这是你想要做什么。

缺失的是什么?

少了什么尽管为了能够这样做?现在,火花的东西很接近解决所有这些问题,但是你会喜欢,但是有很多事情实际上缺少能够实现这一目标。所以让我们来谈谈这个问题。第一个是阅读能力一致的数据而数据被写。正如我们之前的一些会议,我们讨论ACID事务的概念。酸,回到这个概念是原子性、一致性、隔离性和持久性。酸代表什么,事务的概念是,你希望能够信任,当数据写入存储到磁盘或不管它被写入你确信它实际发生,而且没有腐败的机会。如果你看看传统分布式系统当你写磁盘,无论是作为blob存储或ADLS或Google存储或者S3,它是相同的概念。酸相比,这些都是这些BASSE有化学里面的笑话,但是可以依赖的概念实际上是基本上可用软状态最终一致,并最终最重要的方面是一致的,也就是说,你知道,通常当我们有这些云存储甚至与Hadoop系统默认有三个副本的数据写入磁盘或存储。潜在客户的想法是一个点击节点1和客户端两个点击节点2,基本上,这三个数据的副本。 Well eventually consistent in this environment basically means that I’ve written the data to node one but I haven’t written to note two yet because there’s some delay, but it’s possible that client one, client two hit node one, node two at exactly the same time. So node for client one that hits node one, they’ll see the data. For client two it hits node two, they don’t see the data. All right, this is this concept of eventual consistency. You’re not consistent in whether the data exists or not. Well this is important, this concept of consistency is extremely important if you want to be able to look at streaming and batch data concurrently. Because if you’re streaming data and you’re constantly writing to disk extremely quickly with all these small files, right, the distribute storage that you’re writing to, whether it’s on Prem Hadoop, whether it’s your own environment, whether it’s cloud storage, doesn’t really matter. There’s multiple copies of that data sitting somewhere else, and if, again back to the example I use, client one is hitting node one and client two is hitting node two, and client one sees that data and client two does not see the data, those clients are about to perform some action against the data in which you’ve got inconsistent data. So for example, if I’m gonna do an update or delete or something else, client one sees it, client two does not see it, their actions are gonna be quite different or the results of those actions are going to be quite different. So this ability to have consistent data is extremely important.

第二个上门服务,阅读能力逐步与良好的吞吐量大的表。这是一个非常重要的概念,对吧?表越大,所需的资源就越多。你想有一些机制来处理这些数据一致。你想要回滚能力不好写,你知道的。例如,我试图写磁盘写入数据。假设有5个任务要写这个工作的一部分。第四个任务,第四和第五任务失败。

通常在这种情况下会发生什么?其他三个,可能是第五,将写入磁盘,第四个将回滚和失败。那么会发生什么,这意味着4的5写入存储,而第四个任务,就像一个四、五个之一,实际上最终不能写。好的,所以没写,你现在得到的错误除了您的数据是在一个糟糕的状态。换句话说,你不确定发生了什么变化你的数据,这已经够糟糕的了如果你只是插入数据,因为如果你只是插入数据也许你可以说,我失败的一个检查站或失败的一个队列。我知道我跑了这批ID或在这个时间点上,只是一切滚回来,自己手动删除一切。很酷,但是它有点复杂,尤其是,首先它已经痛来做维护,但即使你没有做它运行更新问题,或运行删除这些数据,一旦你做到了,中途系统的某个地方休息,我怎么回滚更新?我怎么回滚删除吗?所以你想要回滚能力有错误,不管是错误的磁盘级别或错误的源系统或业务日志。不重要的错误在哪里,但如果有一个坏写的一些类型,你可以回滚。

你也希望能够重演历史数据以及新到达的数据。换句话说,把所有历史数据,换句话说,有一个表本身,实际上都看着进来的新数据,因为它的到来和回放历史数据在同一时间。作为数据工程师,所以你看数据从的角度来看,这是我所有的数据在点查询,无论是新的或旧的品牌而不是,让我把新数据,让我把旧的数据,让我将它们合并在一起,让我写一个查询。和同样重要的是我们谈论的那些概念,能够处理后面到达的数据无需实际上推迟下游加工。

所以。答案是什么?

这个问题的答案是什么?答案真的主要是结合结构化流的概念和三角洲湖一起为了创建这个三角洲体系结构。上周我们谈论了很多关于这个,但我们注意到这个会议是关于简化和规模数据工程管道,所以我只是想提供这个快速上下文之前我们进入我们如何做到这一点。但真正的上门服务在这里基本上是统一批处理和流连续的数据流,无限保留历史事件回放和再加工需要它们,你可以有独立的弹性计算和存储。他们可以互相独立的技能,这样你就可以平衡成本。那就是我们想要这样做。让我们试试这个概念与三角洲湖。

的一个

所以我们隐含与数据工程过程基本上是爆发在这个青铜的概念,银,金数据质量水平。所以当你看数据工程管道,我们实际上显示像一个数据库图标,但实际上这是分解成不同的数据质量水平。现在,有些人会问这个问题,我真的需要三个独立的表吗?这三个物理实现吗?迅速的回答是,在某些情况下,是的,在某些情况下,不。这取决于清洁你的源数据。如果你已经处理和净化数据上游,你可能不需要这三个层次。你可能就可以正确的黄金,但如果你把原始数据来源需要摄取并保持数据,因为商店,REST API,你打来的电话其实非持久性。换句话说,它只保存在短时间内的数据。像卡夫卡,假设你设置卡夫卡,运动,或事件只持有数据中心大约一天或几个小时,你需要有数据的地方坐下。 So that’s what this concept of a bronze table is. It’s the raw ingestion. Make sure you have a source where that data resides. Then you go to this concept of silver. Now that you ensure that you’ve written the data to storage, to disk, let me go ahead and filter it. I don’t need all these login calls, or these IP traces or whatever else. Clean it, so in other words there’s data that actually has, with simple business logic I have to remove this description or I have to change this ID or I want to filter out all from this particular geo region. This cleansing concept, so that’s what silver data does Oh, and also augment it. So in other words if I have other sources of data that I want to join with this data, this is where you would normally do that. And then finally you’re at the gold level. The gold level is basically, now that I’ve filtered, cleansed it, and augmented it, I also will possibly aggregate it as well. So in other words I don’t need to look at the eight million transactions that just happened per hour. I can look at them by minute, as opposed to PI second, using that as an example. Because I only need minute latency for the purpose of my reporting. So if I only need minute latency for the purposes of reporting, I can shrink the minutes down to hours, yeah actually, the other way around. I only need hour reporting as opposed to minute reporting. And so, irrelevant of the whatever business logic requires, the idea is that this goal table is smaller, more compact, has exactly what you need for your streaming analytics or your AI reporting to go ahead and piggyback off of. And so this concept of basically these data quality levels for the Delta architecture, which is what you see in terms of these data quality levels, it allows you to incrementally improve the quality of your data until it is ready for consumption. That’s the important call-out.

如果你是一个数据工程师,我想可以,在网上,可以问问你,提高你的手,你们中有多少人数据工程师和你们中有多少人是企业数据仓库的人吗?

数据生命周期

它提醒你什么?基本上这个概念提醒你,你的标准数据生命周期。铜表湖更像是你的数据,你就抛弃了所有的数据,你就好了。然后建立一个临时数据库,或暂存表,基本上允许你继续过滤器,清洗,增加数据。对不起,然后建立一个数据标志,实际上这些业务总量水平。所以这个概念,我们谈论的非常相似,非常接近的数据生命周期。只是与三角洲体系结构不只是一个表在一个数据库中。

的想法,我们正在谈论不同的表应用分发的方式在一个分布式系统。这就是架构,它还允许您同时处理并发流和批处理数据。好吧,那么,我们如何从传统数据生命周期过渡到三角洲湖生命周期?

的一个

就像我们,说生的摄入,青铜是垃圾场的原始数据。你经常会有一个很长的保留,错误,通常是在年。你想避免出错解析,换句话说,它真的只是存储这些数据。这是这一概念的铜牌。

我们知道这个银,你有与一些清理应用中间数据。query-able便于调试,举个例子,如果你是一个数据科学家,你想继续,不一定工作总量与业务水平,但你想去更深的一层或者更多的细节,你可能只是在银上运行你的分析数据。这也是常见的调试。举个例子,我将使用这个作为一个例子,我是一个航空公司,我有数据,我希望能够调试或提供客户支持的人登录我的网站订购一张票。这是过滤和净化增广数据。通常有足够的信息里面你可以调试你的出路,这是所有里面。

一旦你很好,你有业务级聚合,你有干净的消费数据,现在准备读与火花或很快。事实上,星星,我应该删除的明星,但上门服务是δ0.5.0湖,我们能够创建包含manifest文件和与清单文件,雅典娜和转眼间实际上都是能够继续读一个三角洲湖表。所以我们的想法是,三角洲湖不只是火花。当然开始与火花,我要给你看个例子使用它。但其他系统绝对是能够利用三角洲湖,因为他们能够阅读清单文件。

好吧,然后我们在这里的注意,通过三角洲湖流移动数据无论是低延迟或手动触发,它消除了时间表和工作的管理。所以我忘记了如果我在这甲板包括这个特定的幻灯片,但是我喜欢很酷的一个例子讨论了火花和AI峰会去年在旧金山,康卡斯特,和康卡斯特继续降至80,所以工作减少到3因为即使他们在做一个sessionization的过程,并不一定要求他们都流,因为他们能够运行低延迟流工作,他们能够替换所有80 - + +批作业,把它缩小三个工作。酸的组合交易在三角洲湖,他们能够看问题,是否流或批处理以同样的方式,让他们减少他们的工作结构的复杂性,现在他们能保持系统容易得多。这是一个重要方面。即使你不一定利用流媒体,本身,因为你没有一个流的工作在传统的意义上说,你当然可以把它分成小微批次,所以这样你有工作持续运行来减少你建筑的复杂性。现在三角洲湖,为了能够提供你所有的能力,现在基本上恢复你的DML,能力做插入、更新、删除、合并、覆盖。现在,你当然可以插入和金和做覆盖在青铜,这并不一定意味着所有,它只是简单地说明传统青铜级别你要么插入、更新传统,在银你删除数据,这样你就可以把它缩小,和传统的黄金在这一点上,你合并或覆盖数据。但这些摘要,这些数据操纵语言,这些语句可以被应用。它允许你保留,允许你做修正,甚至它还允许GDPR,通用数据隐私法规。这实际上是一个重要的概念在新系统中,如果你持有大量数据CCPA GDPR,这些概念的GRC或治理和合规风险,风险管理和合规,如何确保您的数据的一个重要方面不仅仅是安全的但是你确保这些数据背后的个人私隐。 And so that’s an important aspect which we actually are going to cover next week, by the way. So in next week’s session of tech talk, we are going to be talking about how to address GDPR or CCPA by utilizing Delta Lake. So please do join us next week for that session, as well. So a little shout out to that session. But with Delta Lake the concept is that, you know, I can run, if I need to recompute, if the business logic changes, I can clear the silver, I can clear the gold, I could just run deletes, and then I could restart the streams or reprocess the data. I could scale the environment or scale the systems to go ahead and process more data and then you’re good to go. And so now, let’s talk about demos. The remaining 20 minutes or so, 25 minutes, are purely demo. So now that you’ve been patient enough to let me give you some of the context, let’s go right into the demo part. Okay, all right.

就像我提到的,这个笔记本是供您下载和使用。我只会使用的一小部分,但为了给你一些关于如何构建这些上下文可伸缩的管道。所以我要坚持只是流和处理。这就是我要做的。这笔记本目前砖Community Edition中运行,因为我们这样做,好了,这是更好的,实际上的数据集是砖的数据集,但你可以运行这个自己是木星的笔记本,如果你想,实际上的数据集,我们这里的链接在哪里得到这些数据。所以你可以去运行这个数据在您自己的环境。你不需要运行这个砖,但是如果你这样做,你可以运行这个砖Community Edition的和它是免费的。好了,现在我们有什么,我只是想开始,我们有一些数据和它有一个这样的模式。负载ID,资助金额、支付金额,地址状态。这是我们从Kaggle下载的贷款数据。 Like I said, we included the link there. All right, and so how many records does it have? Right now this particular one has only 14,000 rows inside there. So it’ll be important to call this out later, but that’s a that’s a quick important call-out there. Okay, so I’m gonna go ahead and run this particular function here.

和刷新。

好了,好了。好的,我将运行这个函数。现在我不会潜水太深,但这里的重点是,我将创建,生成和附加数据流。流的目的是,我要把数据为基础的贷款数据,我有,但是我要插入到相同的位置但我要做拼花。最初顶部附近,我要滚动回到这里只是给你一些概念,我创建这个铺的道路。所以我创建了这个特殊的文件夹。铺桌子,所以我的表,这个贷款是基于的数据驻留在这里,这个临时SAS欧盟19演示贷款。所以我要继续运行这个生成函数,基本上,生成和附加数据流。它会把数据放入铺的位置。好,现在当我运行它基本上结构化流就会开始工作。所以我们要等待几秒钟启动。

所以我们好,所以我们会初始化一个流,这里发生的事情是,我给这个砖社区版是一个很酷的小东西,我可以给你输入的处理速度和批处理时间,好的,我们处理的是每秒20.6的记录,所以我们把数据。到目前为止还好。看看被添加到它的任何数据。所以我要继续,只是运行快速计算相同的镶花路径,或贷款拼花表在哪里。所以我要从这里直接运行它,当我运行这个你会发现里面有170行。好的,这个数字似乎有点掉了,我和你谈谈,但是如果我试着运行第二个流?所以这是一个重要的方面,如果我想继续我的数据规模工程管道,我有超过一个源踢。

(打喷嚏)对不起,我希望你没有听到我打喷嚏。道歉。所以我有多个来源,因为它是一个分布式多个REST api或分布式源等等,所以我想要运行第二个流去,完全相同的表。如果我试着对拼花表吗?

所以它会发挥作用,它会试图开始写同样的位置。除了你会注意到,确保批处理时间几乎是第二,但零记录每秒。所以没有关系的。好了,所以第二个流不能写入相同的位置作为第一个流。因此,数据仍然在从第一个流。570跳起来,从这里你可以告诉,所以数据仍然在从这个,但你会发现它不会在这里。只是没有发生。这是为什么发生?因为最终发生的事情是,当你写两个磁盘的数据,有那些ACID事务的概念,每一个写有保护周围的事务保护这些信息。实际发生的是在本质上有锁,如果你想认为传统的企业级数据仓库,或本质上作为一个锁表写入磁盘,所以第一个流可以这么做,但是第二个流不能做。 So what ends up happening more times than not, you end up creating multiple tables and then you have to merge those table together, I.e. increase the operational complexity of your system. But wait, remember how I started off? It said that there are 14,705 rows? And right now there’s certainly less than that. I mean, I’m streaming data in, so it’s probably a little higher now, so we’ll just run it, 870, but certainly not the 14,705 that we talked about. So if I look at the data and look at it, you’ll notice that in addition to loan ID, funded amount, paid amount, and address state, I also have timestamp and value inside here. Okay so the schema changed. Well that’s our problem here. So I’m gonna stop the streams as I explain this concept.

主要发生的是,因为我们有流媒体查询,其中一个因为第二个不会工作,写进铺表,因为它是一个结构化的流媒体工作,自动构建流媒体工作,包括时间戳和价值的附加列。举个例子,如果我回头看看这里的代码,所以我就打开这里,流数据实际上是在这里。

所以我阅读这些数据,我问贷款的ID,资助金额,支付金额和地址状态。我继续做一个写流,基本上,你会注意到一个流数据点写流格式表格格式,这是拼花的输入参数之一。检查点位置的选择是…它只是一个位置,所以我们可以确保我们的流运行正确,所以现在我们可以跳过。我们做点触发,每10秒我们要去处理数据,即写数据,然后进入表路径,表路径是一样的拼花我们最初上市的路径。这太好了。你会注意到我从未指定时间戳和价值,所以这是自动添加流过程的一部分。所以因为我实际上自动添加这些列,这个时间戳和价值,所发生的是,我有两种不同的模式。我一个模式这是旧的,只有四列,然后我们有了一个新的模式有六列,因为我有六列,本质上我基本上覆盖了我的原始表。这就是为什么我查询数据时,我只看到了850年或不到一千。我没有看到我原来的14000。 So this is a problem of Parquet There’s no concept of schema enforcement to ensure that the data actually coming in is actually going to be the schema that’s already existing inside the table. And there there’s no interoperability, between not just back to streaming workloads, I can’t actually even have two streaming workloads write into the same table concurrently, which sort of sucks. So let me just restart this process over again. I’m just gonna go ahead and clear out the data, and I’m gonna republish the data, so I’m just gonna run that process.

一旦完成了,我要和运行此步骤中,只有一个基本的创建这个三角洲表。换句话说这是最初的镶花文件。对不起,我们这里铺文件。我要现在继续运行这个,而不是拼花的道路,我要做三角洲路径。所以我要和存储这个差值表。这就是这条线。

所以你可以告诉,很容易从铺切换到三角洲。换句话说,我读与三角洲拼花,然后我写。所以相同的格式,读点格式拼花,写点格式三角洲。如果我想读一个表,它会读点格式δ。非常简单。现在我已经创建了这个三角洲表。我还创建了一个临时发生了视图,以备不时之需。让我们看看数据一次。

好的,我们应该追溯到14705年正如你看到的,我们想看看模式很快。

好的,那么模式实际上是四列。所以我回到我曾经是现在,但唯一的区别是,我有一个δ表而不是拼花表,我要做的一件事是,我也会创建一个增量贷款仍然流。所以我有一个贷款增量表,这是为批处理查询。我还将创建一个δ流,流媒体查询,但是他们都去相同的位置,δ路径。所以它是相同的文件系统是否我运行一个批处理查询或者运行一个流媒体查询,同样的事情。好,现在我明白了,这是给我的快速计算,啊,14705让我们继续和尝试再次运行该查询。所以一样,但不记得我有六列四列。所以这一个,我有六列,不是四列,但你猜怎么着,因为我使用了一个三角洲表,我现在看到了一个模式不匹配。它告诉你,如果我想要一起合并模式可以使用点选项单词模式真的。换句话说如果我想这些额外的列包括所有我要做的就是改变我用包括选项的代码,我可以允许两个附加列进入我的数据。 But I don’t, for now, want to do that, but it’s a good call out. So in other words, if I have good business justification or good business reasons to do so, there you go. But it’s calling you out right here. Here’s your table schema, these four columns, loan ID funded amount, paid amount, address state, and here’s my current data schema. I’ve got the timestamp and value. So it’s warning me that there’s a problem here. All right, so let’s instead just simply go fix this. So in this case, what I’m doing is that the stream data, because I know the stream data automatically includes the timestamp and value because it’s streaming, let me just go ahead and specifically specify dot select where I’m only going to include the four columns. Now that I’ve only done that, when I write this data down to my Delta path location, it’ll only write it with four columns, not six.

三角洲湖,因为这是一个伟大之处有两种执行模式的概念,即我们在潜在腐败防止数据的数据,我们也允许模式演化。如果你有一个很好的理由,你想改变随着时间的推移,我们可以合并新模式,特别是如果你想要包括时间戳和价值,我们可以合并旧模式的新模式,但不会腐败的数据。旧的模式依然存在。这就是很酷。现在让我们继续运行。需要几秒钟才能发挥作用,但现在我们有流查询。

让我们继续踢。繁荣,现在我们有了一个仪表板。这是努力的过程记录,现在是试图把里面的数据。现在运行的是54岁或55记录每秒,这是很酷的。让我们回到这里,你会注意到马上改变,数量15255。和随着时间的推移,流在起作用,它可以把更多的数据,很明显它会增加。但是也是很酷的是,因为我使用了一个三角洲湖表,我可以继续运行一遍。换句话说,我有另一个流。这是我流查询3。同样的概念,同样的代码,我只是会跑步,为了的论点,这是代表两个不同的来源,但是他们有相同的模式,相同的数据,都在努力写这个东西在同一时间。果然,马上,流查询3是跳跃到每秒147条记录,如果你回头你会发现数字继续稳步增加。 So, this is what we mean by simplifying what you create. It’s simplifying your data engineering pipelines. The fact is that, irrelevant of a single source, multiple sources, whatever, if I decide that I need to put everything down into a single table, which is what this example is, I can because I have multiple streaming jobs that can hit the table concurrently, and because I have ACID transactions, I’m protecting the data underneath this at the entire time. And let’s go ahead and run this. Remember I said that we were looking at loans underscore Delta underscore read stream, that’s actually telling me what the read stream looks like, but I can also look at the batch. So in other words, the loans for Delta. This is a batch table that’s looking at the exact same source. And again now I have a batch query read, which is telling me right now it’s 23,455. I’ve got two streaming writes all happening at the same time. So this is how powerful it is, that you can actually, because I can have multiple streams read and write, multiple batches read and write, now I can actually simplify everything because everything’s shown in a single view. I can then organize my jobs to be streaming jobs as opposed to just a bunch of batch jobs. Then instead of having 20 batch jobs, I could potentially run a bunch of single micro batch or streaming job to actually simplify things.

让我们看看下面的文件系统。记住,就像我说的,我们会停止所有的流,然后让我们看看它。这是δ路径之前,我们在谈。

你在这里会基本上,如果你会注意到,它将只是一群镶花的文件。所以我们走。一样你习惯使用拼花。主要的区别是有δ日志文件夹。否则,所有原来的拼花。所有这些小拼花的文件流,你可能看到这么大,大,原始数据的原始铺文件。

所以如果你看日志,日志是什么?基本上这是展示你所有的不同版本的数据,所以每一个插入一个JSON, JSON描述,告诉你到底发生了什么在事务。很酷的。事实上,让我去选择这个是为了好玩。

你打开的JSON文件看看它。所以它告诉你时间戳,提交信息。是谁做的,比如我,什么什么类型的信息,如流媒体更新,和所有的交易,这个交易发生,所有相关联的值。的塞里面。其实里面有什么,JSON。所以在封面,我们创建这个酸事务基本上保护下面的数据覆盖。实际上让它看起来更好一点,我们创建这个历史,所以你就去描述历史,然后你看到所有的版本的数据,因此所有的流的版本中,所有在这里。

所以我跳进了这个之前,让我很快回到幻灯片。让我这样做,哦,对不起,我们走了。

连接这些点…

让我们这些点连接起来,因为我们有大约七分钟演讲,我仍然想离开一段时间问答。让我把这些点连接起来。我能够阅读一致的数据吗?与三角洲湖,我能因为我有快照隔离在作者和读者之间,就像你看到我能够继续运行多个流写和阅读所有在同一时间。我能够逐步从一个大表吗?是的,我能。实际上,我优化文件来源与可扩展的元数据处理。这实际上可扩展的元数据处理,让我回去给你很快。对不起,我要得到这个权利。你会发现这里有这个检查点拼花。

所以每十JSON里面有一个点拼花。所以有一个问题,刚在问我,你知道,拼花是什么?他们设法知道。所以他们看到JSON,但是仍然想拼花。现在让我回答这个问题。这里的拼花主要是继续说,好吧,每次十交易之后,我要把这个拼花。而不是试图读取每一个JSON文件,我要,火花能够读取铺文件,以后,如果我关闭集群然后我会重新启动集群在稍后的日期,而不是试图读每一个JSON文件,我要看拼花的文件。这将使事情变得更简单。它已经在格式,它会流到内存和繁荣。基本上,而不是阅读31 JSON文件,我要读三个拼花文件然后我将阅读速度的一个额外的JSON当前事务是什么。

好完美。

好的,所以我能够回滚?是的,你可以。其实我只有时间旅行的概念。我没有时间在今天的会议继续给你们时间旅行,但如果你看看前面的YouTube。现在YouTube上,对不起,以前的技术讨论科学数据准备数据,我们实际上显示很多关于辊背上和时间旅行。这个主意,因为你可以看到表的历史,不仅仅是你看到的历史,该表的数据仍然驻留在那里。这意味着我可以回滚到之前的数据视图,这是很酷。

比如我可以回滚到十九版本的数据。所以为了这个论点,我可以做一些类似,我忘记如何写声明的版本。这就是当你想做的东西生活。幸运的是我有版本声明下面,所以我要复制它。

对不起。

好消息,我这里显示的是我给你们完整的笔记本,完整的笔记本电脑显示你背上滚和里面的一切,这是很酷。但是让我继续,时间旅行正确。

你可能知道,剩下的时间,我可能会跳过这个,但实际上让我继续完成我在谈论什么,然后我会回到演示。酷。回到这里。很抱歉。

好的,那么我们也可以回放历史数据,通过相同的管道流back-filled历史数据,有点好。换句话说,无论是历史数据或流媒体数据,我可以合并这两个概念在一起没有任何问题。这很重要,因为我希望能够看一下数据没有任何问题。我希望能够看一下数据,无关紧要的如果是新数据或旧数据,我希望能够看着它没有会说。我要建立一个单独的表为批处理流媒体和一个单独的表中。不,相反,我可以继续,看相同的表都我的批处理数据和流数据同时,有点好。这是一个重要的概念。好吧,然后也同样重要的是,我希望能够任何后面到达的数据流,并将其添加到表,因为他们得到补充道。这基本上是这个概念的,我有数据进来。数据时,我希望能够继续更新数据或我想能够做的删除表。 Well guess what, with Delta Lake I’m actually able to do that now because the I have ACID transactions protecting this data the entire time. Because I’m able to protect the data without any problem, then sure enough I’m able to go ahead and reprocess it, and this goes back to why we talked about the silver, gold, blue, silver, sorry, bronze, silver, gold concept because that way I can go ahead and look at the data, reprocess the data from the original bronze concept, and delete it and reprocess it all over again if I had to. All right, so altogether this allows Delta Lake to basically put everything, allow us to put everything together. How we can build this Delta architecture, is because Delta Lake allows us to do all of these things to allow us to simplify our data engineering pipeline. So some quick questions. Who’s using Delta Lake?

使用1000年代的全球组织中

有大量的组织中,大量的顾客。上个月,实际上有两个艾字节处理,不是一个,两个eb仅在上个月就处理。所以我谈到了康卡斯特普遍情况。还有许多其他的客户场景,您可以查看火花和AI峰会,实际上这些信息。哦,好了,我做了包括幻灯片。

康卡斯特公司

举个例子,康卡斯特sessionization三角洲湖。

别的工作,因为他们为了提高可靠性这些别的工作,他们需要使用三角洲湖更可靠。他们不仅得到了84个工作岗位减少到3,他们也有数据延迟和同样重要,如果不是更重要的是,他们有10倍计算。而不是640年的情况下,他们真的能够敲下来到64年,这是很酷。

那么如何使用三角洲湖吗?使用它,您可以添加一个火花包,您可以使用Maven,或像我说dataframe点格式拼花,而是转向doc格式和bam现在你用δ。

开始使用火花与三角洲api

所以你也可以建立自己的三角洲湖现在如果你想。然后我想做现在的穿越小窍门,我记得版本控制。

它帮助如果我继续保存。

帮助如果我去三角洲。

这是应该与三角洲表,所以我想在这种情况下,我把它搞砸了。所以我的坏。我会给你一个不同版本的代码基在第二个当我有机会继续,切换到API。实际上看起来像SQL上下文不工作,所以我的坏的,哈哈。

然而我们将回到这里的会话。

笔记本从今天的会议

所以,你想用这个笔记本。这个笔记本是相对简单的。你只要下载dbricks.co / sais-eu19-delta的笔记本。我们要把这个链接在YouTube频道链接,如果有人注册了,他们会继续登录。所以我认为不管怎样你会好了。那么做,我觉得你可以去试试,试着给他做一份。

三角洲湖连接器

好吧,我想叫了一些快速的其他东西。三角洲湖,你可以在这里看到,正迅速成为一个标准,所以因为它迅速成为一个标准的这里有一个问题,会使用蜂巢吗?是的,事实上现在我们正在与社区基本上继续找出如何使用蜂巢。这是现在在私人预览。现在私人的预览,我们很快就会使其公共预览版,但我们的想法是,我们能够继续,让它可以在蜂巢。我们也可以,给我一秒,就像我在三角洲湖0.50博客提到的,我们实际上能够继续使用转眼间和雅典娜和展示它。我们也与红移和雪花,这是当前数字我们现在。不久我们将会有更多的,但你可以告诉这里的数量实际上是一个伟大的连接器已经能够与三角洲湖,很甜。

三角洲湖合作伙伴和供应bob体育外网下载商

还好,三角洲湖提供者。这些合作伙伴bob体育外网下载和供应商已经开始和三角洲湖。你可以继续,正如你可以看到,处理画面。Attunity,您还可以使用Privacera talend, Streamsets, Qlik, WANDisco, informatica,除此之外,谷歌Dataproc。谷歌Dataproc最近宣布了一个能够继续与三角洲湖。我们期待越来越多的公告出来不久。

所以基本上,慢慢来,我们要能够展示。

三角洲湖的用户

然后,用户的三角洲湖。这只是一个小样本,小的例子,但有很多很酷的客户目前使用三角洲湖的例子。是否他们使用砖或不使用砖,不管他们都使用三角洲湖,这是一个很酷的事情。

今天订阅!

所以说,我要离开几分钟去回答一些问题,但是如果你想听这个会话,你可以通过使用dbricks现在订阅。有限公司/ youtube或再倾听,在所有这一切,我想继续,重新运行演示,因为我一直在搞砸了。所以你发现原来我,让我们在这里看到的,至少23000在我的贷款增量表,所以我要继续运行这个代码片段。这个会说版本19是什么样子,所以现在我要运行。

这是在19版的流。

所以我实际上下降到22455。是什么样子的时候版本0 ?我要运行一遍。这是最初只是创建表时,第一次,这是14705年。这是时间旅行的概念,我在说什么。所以我这里延误深表歉意,但或多或少的概念,你可以运行时间旅行回滚,还很方便GDPR目的也是,就像我说的,一个伟大的segue我们下周继续讨论,我们对如何解决GDPR和会话CCPA使用三角洲湖?所以一些问题了。让我继续尝试回答这些问题。如果你有问题,就像我说的,把他们的问答。我要回答的第一个问题是,我可以用三角洲湖OLTP工作负载? And the answer quick answer is it is not designed for OLTP purposes, it’s really designed for the purpose of data warehousing or BI-type queries, the data warehousing and data workload.

OLTP如果你想使用它,我可以建议一个实际TP系统。我们并不试图简化的过程。我们试图简化这个过程,你可以分析数据并继续运行机器学习。我相信还有另一个问题,我们可以使用蜂巢创建这个吗?如上所述,蜂巢连接器目前私人预览。它将成为公开的。

我可以用本地三角洲湖吗?这是个很好的问题,你完全可以用δon-prem湖。三角洲湖本身实际上是,基本上,对于所有意图和目的,只是一个jar添加到你的火花的过程。举个例子,你去藏包你可以主要包括jar或包括Maven坐标,或者基本上使用Maven如果你编译或SVT或其他,但关键是,一旦你这么做了,现在包括三角洲jar。相反的如果你有内部引发环境,你完全可以这样做,包括jar,最新的三角洲湖工作,匹配你的火花版本和Scala版本,然后你差不多好了。

我要完成这个答案,怎么可能我们可以在生产中使用这个吗?事实上这个项目实际上是三角洲湖在生产中已经过去两年了。当我们最初创建三角洲、三角洲的背景故事是我们试图建立它解决一些哦,像,我犯了一个错误,错误的人做成他们的数据,和/或我们在努力解决这个问题,我们有流。因为我们遇到了这些问题,我们建立三角洲作为砖项目的最初,这是一种附加的火花。但由于它的受欢迎程度将所有的问题问,由于人们真正想看到的一切,我们意识到这个项目很有意义,不仅对于社区或火花,对于这个问题,砖,但不仅引发社会的数据工程社区作为一个整体。这就是为什么我们的开源项目,去年。所以它是一个开源项目可bob下载地址以使用on-prem,你可以用它为自己的环境,EMR, HG洞察力,你只需要确保所有的匹配。仅仅只要你使用正确的版本的火花,你排队的火花版本和Scala版本,您将能够使用它。现在说这些,如果你想了解更多关于我们如何来到这里,就像我们可以使用生产之BOB低频彩类的东西,实际上的另一件事我想问你要做的就是去dbricks。有限公司/ youtube,砖的youtube频道,看看三角洲湖的起源。这就是我采访Burak•,砖高级软件工程师,他实际上是创建这个项目的一部分。 So you can learn a little bit more about the back story behind it, as well. Okay, well that’s it for today. I realized that there are other questions. I apologize I couldn’t get into all of them, but I want to be a cognizant of the timing here. So I do thank you for your time, for attending the session. Please do, number one, be patient with me for my mistake in trying to get that particular time travel query done for you, but at least I got it done, so thank goodness for that. Number two, you’ve got comments. Go ahead and ping me directly at my Twitter handle, @dennylee, or just as likely, go ahead and go to the Databricks YouTube channel and go ahead and chime in, and put your comments directly on the YouTube channel. I will regularly go login and answer those questions. And finally, also go to Delta.io, that’s the Delta Lake page. So the latest videos, the latest notebooks, tutorials, all of them are actually there.

高级:深入三角洲湖

潜水通过三角洲湖的内部,一个流行的开源技术支持ACID事务,执行时间旅行、模式和更多的数据之上的湖泊。bob下载地址

動画を見る