Apache Spark + Delta Lake 概念

Posted

技术标签:

【中文标题】Apache Spark + Delta Lake 概念【英文标题】:Apache Spark + Delta Lake concepts 【发布时间】:2019-10-06 06:01:51 【问题描述】:

我对 Spark + Delta 有很多疑问。

1) Databricks 提出了 3 层(青铜、银、金),但推荐在哪一层用于机器学习,为什么?我想他们建议在黄金层中清理并准备好数据。

2)如果我们抽象这三层的概念,我们可以认为青铜层是数据湖,白银层是数据库,黄金层是数据仓库吗?我的意思是在功能方面,.

3) Delta 架构是一个商业术语,还是 Kappa 架构的演变,还是 Lambda 和 Kappa 架构的新趋势架构? (Delta + Lambda 架构)与 Kappa 架构有什么区别?

4) 在许多情况下,Delta + Spark 的规模比大多数数据库要大得多,而且通常要便宜得多,如果我们调整得当,我们可以获得快 2 倍的查询结果。我知道将实际趋势数据仓库与 Feature/Agg 数据存储进行比较非常复杂,但我想知道如何进行这种比较?

5) 我曾经使用 Kafka、Kinesis 或 Event Hub 进行流式处理,我的问题是如果我们用 Delta Lake 表替换这些工具会发生什么样的问题(我已经知道一切都取决于很多事情,但我想对此有一个大致的了解)。

【问题讨论】:

【参考方案1】:

1) 由您的数据科学家决定。他们应该对在白银和黄金地区工作感到自在,一些更高级的数据科学家将希望返回原始数据并解析可能未包含在白银/黄金表中的其他信息。

2) 青铜级 = 原生格式/delta Lake 格式的原始数据。 Silver = delta Lake 中经过消毒和清洁的数据。 Gold = 通过 delta Lake 访问或推送到数据仓库的数据,具体取决于业务需求。

3) Delta 架构是 lambda 架构的简单版本。 Delta 架构目前是一个商业术语,我们将看看未来是否会发生变化。

4) Delta Lake + Spark 是最具扩展性的数据存储机制,价格合理。欢迎您根据业务需求测试性能。 Delta Lake 的存储成本将远低于任何数据仓库。您对数据访问和延迟的要求将是一个更大的问题。

5) Kafka、Kinesis 或 Eventhub 是将数据从边缘获取到数据湖的来源。 Delta Lake 可以充当流应用程序的源和汇。使用 delta 作为源实际上很少有问题。 delta Lake 源依赖于 blob 存储,因此我们实际上解决了基础设施问题的许多问题,但添加了 blob 存储的一致性问题。 Delta Lake 作为流式作业的来源比 kafka/kinesis/event hub 更具可扩展性,但您仍然需要这些工具将数据从边缘获取到 delta Lake。

【讨论】:

Kappa 和 Delta 架构有什么区别?您知道我可以调查哪些数据访问和延迟要求以进行比较吗?为什么我们仍然需要工具作为 kafka/kinesis/event hub? 我没有使用过 Kappa 架构,所以我无权发表意见。 Delta 架构允许您进行流式处理、批处理或两者兼而有之。使用 Kafka/Kinesis/Event Hub 的原因是,您通常需要一些灵活的消息队列,以便在摄取之前将数据从数据生产者(例如您的手机)推送到某种事件总线/集线器。 在 5) 中您谈到了一致性问题,而 Delta Lake 文档说他们提供 ACID(一致性),所以这不是真的吗? 这些是分开的。 Blob 存储最终具有一致性。并且在读/写数据时有一致性。 Delta Lake 目前仅适用于 hdfs。有关更多信息,请参阅此处对底层存储系统的要求:github.com/delta-io/delta Delta Lake 发布了 0.2.0,它支持云存储 Amazon S3 和 Azure Blob Storage,并提高了并发性。【参考方案2】:

    奖章表是根据我们的客户使用 Delta Lake 的方式推荐的。您不必完全遵循它;但是,它确实与人们设计 EDW 的方式非常吻合。至于机器学习和使用哪个表。这将是从事机器学习的人们的选择。有些人可能想要访问青铜表,因为那是原始数据,没有对其进行任何处理。其他人可能想要 Silver 表,因为它被认为是干净的,尽管增加了。通常,Gold 表非常精致,专门用于回答明确定义的业务问题。

    不完全是。青铜表是原始事件数据,例如每个事件或测量一行,等等。Silver 表也处于事件/测量级别,但它们非常精细,可以用于查询、报告、仪表板等。Gold 表可以是事实和维度表、聚合表,或策划的数据集。重要的是要记住,Delta 并不是要用作跨国 OLTP 系统。它确实适用于 OLAP 工作负载。

    Delta 架构是我们给 Delta Lake 的特定实现起的名称。它本身不是一个商业术语,但希望它成为一个商业术语。那里有足够的信息来比较和对比 Kappa 和 Lambda 架构。 Delta 架构在 Delta 文档和 Databricks 博客、技术讲座、YouTube 视频等中得到了很好的定义。

    我想问一下你想比较的是什么?速度、功能、产品……?

    Delta Lake 并未尝试替换任何消息传递发布/订阅系统,它们有不同的用例。 Delta Lake 可以连接到您作为订阅者和发布者提到的每个产品。不要忘记 Delta Lake 是一个开放的存储层,可为数据湖带来符合 ACID 的事务、高性能和高可靠性。

路易斯。

【讨论】:

我想知道 Databricks 版本的部署速度有多快,以及 OPTIMIZE 功能? 您所说的“...部署,具有优化功能”是什么意思? 大楼,docs.databricks.com/delta/optimizations/file-mgmt.html Cristian,运行优化(压缩)过程所需的时间取决于几个因素:1. 正在优化的数据的总体大小,2. 正在压缩的 Delta 文件的数量,以及3. 运行优化的集群的大小和组成。

以上是关于Apache Spark + Delta Lake 概念的主要内容,如果未能解决你的问题,请参考以下文章

pyspark delta-lake 元存储

Pyspark Delta Lake 捕获表不是 delta 表异常

将 Delta Lake 包添加到 AWS EMR Notebook

深入剖析 Delta Lake: schema validation

数据湖06:Delta Lake原理和功能概述

数据湖06:Delta Lake原理和功能概述