银层都是高质量,多样化,和可访问的数据集。这些可能不符合一个特定的用例,如服务生产报告在低延迟,但他们已经洁净了,改变了,和策划,以便数据科学家和分析师可以轻松和自信地使用这些表快速执行预处理,探索性分析和工程特性,这样他们就可以把剩余时间花在机器学习和洞察力。
最大的生产力杀手这些消费者不仅仅是数据访问和预处理,但信心他们正在使用的数据的质量。出于这个原因,我们将使用DLT,确保这些数据集符合特定的质量标准,并明确标注数据集。两个数据消费者和决策者可以使用生成的编目和质量监控,来自的正确使用约束和评论。
- 打开你的管道笔记本和创建一个新的细胞。
- 将下面的代码复制到一个新的细胞:
创建流媒体直播表sales_orders_cleaned (约束valid_order_number期望(order_number是不零)在违反下降行)分区通过(order_date)评论“清洁和有效的销售订单order_number (s)和分区order_datetime。”TBLPROPERTIES(“质量”=“银”)作为选择f.customer_id,f.customer_name,f。number_of_line_items,时间戳(from_unixtime ((投(f.order_datetime作为长))))作为order_datetime,日期(from_unixtime ((投(f.order_datetime作为长))))作为order_date,f。order_number f。ordered_products c。状态,c。城市,c。朗,c。lat, c。units_purchased, c.loyalty_segment从流(LIVE.sales_orders_raw) f左加入生活。客户c在c.customer_id=f.customer_id和c.customer_name=f.customer_name
- 返回到管道“销售订单管道”在左边的导航条,导航到工作选择“三角洲住表”并选择管道上一步创建的
- 旁边的下拉选择启动/停止开关,然后选择“完整的刷新”
约束:约束允许您定义数据质量的期望。他们声明,解决任何火花过滤谓词,以及承担失败的动作。一个动作可以保留,下降,失败,或隔离。为更多的细节在这里看到的。所有的约束都记录到启用流线型的质量监控。
Tblproperties:的键值对列表可以是三角洲湖属性,DLT管道属性,或任意的。任意tblproperties就像标记可用于数据编目。在这个例子中,“质量”:“银”是一个任意的函数作为一个标签的属性。
备注:一个字符串简要描述表的目的,在未来使用数据编目
黄金数据集:完成与流媒体/连续vs触发
许多聚合不能执行增量和必须执行完整的再加工,即使新的数据处理增量上游聚合的铜和银层。然而,有重要的价值在获得实时或“快速”尚未聚合的数据。与传统的λ架构需要一个复杂的双重基础设施过程快速和慢速数据,Lakehouse架构允许一个单一的管道实时增量的“快速”的铜和银层,和一批更新金层(由强一致性保证三角洲湖存储)。
在实践中,这种模式可能是具有挑战性的程序性ETL中需要部署独立的流和批处理作业和每个单独维护。为了解决这个问题,DLT允许你选择管道中的每个数据集是否完整或增量,以最小的更改其他的管道。这使它容易规模管道涉及的铜和银实时数据与黄金组合聚合层。
泡沫:一些引发聚合可以逐步执行,如计数、min,马克斯和总和。在一些简单的情况下,它可能是有意义的黄金数据集的增量。然而,即使是简单的数量和金额可能会变得效率低下,不建议如果您使用多个分组(例如GROUP BY col1, col2 col3)。
在这种情况下我们的黄金表,我们在创建完整的金银聚合数据表的表由城市:
- 打开你的管道笔记本和创建一个新的细胞。
- 将下面的代码复制到一个新的细胞:
创建生活表sales_order_in_la评论“销售订单在洛杉矶。”TBLPROPERTIES(“质量”=“黄金”)作为选择城市、order_date customer_id、customer_name ordered_products_explode.curr,总和(ordered_products_explode.price)作为销售,总和(ordered_products_explode.qty)作为qantity,数(ordered_products_explode.id)作为product_count从(选择的城市,日期(order_datetime)作为order_date、customer_id customer_name,爆炸(ordered_products)作为ordered_products_explode从LIVE.sales_orders_cleaned在哪里城市=“洛杉矶”)集团通过order_date、城市、customer_id customer_name ordered_products_explode.curr;创建生活表sales_order_in_chicago在芝加哥发表评论“销售订单”。TBLPROPERTIES(“质量”=“黄金”)作为选择城市、order_date customer_id customer_name,ordered_products_explode.curr,总和(ordered_products_explode.price)作为销售,总和(ordered_products_explode.qty)作为qantity,数(ordered_products_explode.id)作为product_count从(选择的城市,日期(order_datetime)作为order_date、customer_id customer_name,爆炸(ordered_products)作为ordered_products_explode从LIVE.sales_orders_cleaned在哪里城市=“芝加哥”)集团通过order_date、城市、customer_id customer_name ordered_products_explode.curr;
- 返回到管道“销售订单管道”在左边的导航条,导航到工作选择“三角洲住表”并选择管道上一步创建的
- 旁边的下拉选择启动/停止开关,并选择“刷新”
连续vs引发管道模式
DLT,而单个数据集可以增量或完成,整个管道可能引发或连续的。当连续管道开始,它将自旋向上的基础设施和管道继续摄取新的数据,直到停止手动或通过API。引发管道将消耗源一旦和所有新数据将自动旋转下的基础设施。引起管道通常会安排运行在生产中使用一个协调器或砖多任务的工作。
之间切换触发和连续模式,打开你的管道,并选择“编辑设置”。连续will be a boolean in the JSON. Setting "continuous": false" is equivalent to setting the pipeline to Triggered mode.
这使您可以灵活地慢慢成熟为连续处理模式没有显著重构您的代码。这是一个常见的模式组织开始实现实时的见解的价值不用花费高额成本的不断运行的云基础设施。经验丰富的火花工程师可以使用以下矩阵了解DLT的功能:
读: |
写: |
连续模式 |
触发模式 |
完整的 |
完整的 |
再加工一个预定义的时间间隔 |
单再加工(删除和替换) |
完整的 |
增量 |
不可能的 |
不可能的 |
增量 |
完整的 |
再加工一个预定义的时间间隔 |
再加工物化流的结果 |
增量 |
增量 |
流使用默认触发 |
Trigger.once()流 |
Productionization
我们已经定义了管道。我们可以总结以下步骤:
- 设置一个目标数据库方便消费者查询管线的数据集
- 将管道设置为生产方式
- 如果您选择使用触发模式,您可以安排管道使用多任务工作
管道可观测性和数据质量监控
在砖试试这个笔记本
事件日志
DLT发出所有管道管道中的日志一个预定义的三角洲湖表的存储位置,可用于监测、血统和数据质量报告。可以导入这个通用的日志分析笔记本检查事件日志,或使用dbutils访问三角洲表{{你的存储位置}}/系统/事件。
大多数有用的信息在日志表的“详细信息”栏。这里有不同类型的行为,将导致DLT发出一个日志,和一些相关的领域内的事件,你会发现在“细节”:
- user_action:事件发生时采取行动就像创建管道
- flow_definition:事件发生时管道部署或更新,并有血统,模式和执行计划的信息
- output_dataset和input_datasets——输出表/视图及其上游表(s) /视图(s)
- flow_type——这是一个完整的或附加流
- explain_text——引发解释计划
- flow_progress:事件发生时数据流开始跑步或者结束处理一批数据
- 指标——目前包含num_output_rows
- data_quality -包含一个数组的数据质量规则的结果这个特定的数据集
- dropped_records
- 预期
- 名称、数据集、passed_records failed_records
数据质量监控(需要砖SQL)
因为DLT日志公开为一个三角洲表,和日志包含数据预期指标,很容易生成报告监测数据质量与BI工具的选择。我们建议使用砖的SQL因为它是与三角洲和砖平台紧密集成,提供极快的查询速度通过易于管理计算端点。bob体育客户端下载