关于数据摄取的详细指南

531 阅读10分钟

什么是数据摄取?

数据摄取是任何现代数据栈的一个重要步骤。其核心是将数据从各种数据源转移到最终目的地的过程,在那里它可以被存储用于分析目的。这些数据可以以多种不同的格式出现,并从各种外部来源产生(例如,网站数据、应用程序数据、数据库、SaaS工具等)。

为什么数据摄取很重要?

数据摄取过程很重要,因为它将数据从A点转移到B点。如果没有数据摄取管道,数据就会被锁定在它的源头,这是不可行的。理解数据摄取的最简单方法是把它看成是一条管道。就像石油从油井被输送到炼油厂一样,数据从源头被输送到分析平台。数据摄取很重要,因为它给业务团队提供了从数据中提取价值的能力,否则将无法获得这些数据。

数据摄取是用来做什么的?

摄取层的最终目标是为分析提供动力。在大多数情况下,数据摄取是用来将数据从不同的来源转移到一个特定的数据平台,无论是像Snowflake这样的数据仓库,数据湖,甚至是像Databricks这样的数据湖馆。一旦数据被整合到这些云平台,数据工程师试图通过建立强大的数据模型来解读它,以支持商业智能(BI)仪表盘和报告,使关键利益相关者能够使用这些信息来推动业务成果。

数据摄取的类型

一般来说,只有两种类型的数据摄取方法,实时和基于批处理。

实时处理的重点是在数据产生后立即收集数据,并创建一个连续的输出流。实时摄取对于时间敏感的用例极为重要,因为新信息对决策至关重要。举例来说,像埃克森美孚和雪佛龙这样的大型石油公司需要监控他们的设备,以确保他们的机器没有钻进岩石,所以他们产生了大量的物联网(Internet of Things)数据。同样,像CapitalOne、Discover、Coinbase、BankofAmerica等大型金融机构需要能够识别欺诈性行为。这只是两个用例,但它们都在很大程度上依赖于实时数据摄取。

批量处理的重点是在稍后的时间点进行批量摄取(即在预定的时间间隔或特定的触发事件后加载大量的数据)。当不需要实时数据时,这种数据摄取方法是非常有益的。当涉及到处理在设定的时间段内收集的大量数据时,它也更加便宜和高效。

在许多情况下,公司选择利用批处理和实时数据摄取的组合,以确保数据在低延迟下持续可用。一般来说,应该尽可能少地使用实时数据,因为与基于批处理的数据相比,它要复杂和昂贵得多。对于什么是 "实时数据",每个公司都有一个稍微不同的标准。对一些公司来说,它是每10秒一次,对另一些公司来说,它是每5或10分钟一次。然而,实时数据摄取实际上只需要在次分钟的使用情况下进行。对于任何等于或大于五分钟的情况,基于批处理的数据摄取应该工作得很好。

数据摄取过程

数据摄取的核心定义是相对狭窄的,因为它只是指将数据从一个系统移动到另一个系统,所以通过数据集成的总体视角来理解数据摄取会更好。数据整合不是只关注将数据从一个系统转移到另一个系统,而是关注将来自外部系统的数据整合到一个集中的视图中进行分析。然而,在实现这一目标之前,需要对数据进行提取、加载和转换。对于摄取技术,有两个核心过程被用来解决这个问题,ETL和ELT。

ETL(提取、转换、加载)是一种较早的数据摄取方法。所有ETL解决方案都有三个组成部分。提取的重点是在数据生成后对其进行汇总。转换是用来将数据处理成一致的可用格式,以利于分析。加载是指将数据直接输入到分析平台或数据库的过程。

ELT与ETL相似,但它代表了提取、加载和转换。这个过程几乎是相同的,但核心的区别在于,数据是以原始和未改变的格式被摄入的。然后在分析层中对数据进行转换,再用于分析。这种数据摄取方法已经成为所有现代数据堆栈的标准,因为它比传统的ETL更快、更便宜。此外,它将分析层(即云数据仓库)确立为所有数据和业务逻辑的单一真理来源。

数据输入的挑战

根据一个组织的业务需求和不同数据源的总数,在内部处理数据摄取可能是有意义的。然而,随着数据量的增加,这几乎是不可能维持的,特别是在今天,平均每个组织有超过100个SaaS应用程序。构建一个自建的自定义数据管道会带来一些摄取方面的挑战,因为它的构建很耗时,而且资源密集。Fivetran实际上在他们的数据集成指南中构建数据管道的成本提供了一个非常好的估计

除了费用之外,数据摄取管道还要求公司与第三方API集成,这又带来了一些挑战。更糟糕的是,数据工程团队不得不不断检查上游或下游的变化,因为API在不断变化。随着数据生态系统的不断变化,这是相当困难的,因为几乎不可能对任何东西进行未来验证。

除此之外,公司还必须担心数据隐私和数据保护法规,如GDPR和HIPAA。安全性也是一个主要问题,必须采取强有力的措施来抵御试图窃取敏感数据的外部攻击。即使所有这些都被处理好了,工程师仍然要决定数据如何被格式化,无论是结构化、半结构化还是非结构化。加载数据的频率,以及加载数据的数量也是一个问题。

数据输入工具

上面讨论的大部分(如果不是全部)挑战都可以通过一个实际的数据摄取工具来避免。专门的摄取工具通过自动化建立和维护数据管道的手工过程来解决所讨论的问题。今天,市场上有各种各样的ELT解决方案和ETL工具,无论是像Azure Data Factory这样的云原生产品,还是像Informatica这样的ETL工具,或者像Fivetran、Airbyte或Stitch这样的专用SaaS工具,都可以用于ELT。

当涉及到实时数据摄取时,像Apache Kafka、Amazon Kinesis和Snowplow这样的工具往往在市场上占主导地位,因为它们是专门为解决实时流工作负载而设计。

如何开始进行数据摄取

开始使用数据摄取的最简单方法是在数据采集、数据集成和数据分析之间实现一个一致的端到端流程。目前市场上有大量的产品,它们都声称要实现现代数据栈的不同部分,但Fivetran绝对是目前最好的数据摄取工具。作为一个基于SaaS的ELT解决方案,Fivetran提供全面管理的数据连接器,与众多源系统和SaaS应用程序连接,自动处理幕后的一切,使企业可以专注于推动业务成果。

值得注意的是,Fivetran不提供任何转换能力,它的核心竞争力在于提取和加载数据,所以需要一个转换工具来将数据格式化为可用的状态。这正是dbt(数据构建工具)发挥作用的地方;dbt是一个数据转换和数据建模工具,运行在数据仓库之上,它通常被认为是简单和复杂转换的标准。对于实时流数据,Snowplow是一个不错的选择。Snowplow是一个行为数据平台,使得收集和摄取事件到仓库变得非常容易。

对于现代企业来说,一个典型的数据栈通常是这样的。

Fivetran和Snowplow被用来收集和摄取数据到一个数据平台,而dbt被用来转换和建模这些数据以便分析。这些转换后的数据会被推送到报告工具和BI仪表盘中进行分析,这样企业的利益相关者就可以利用它来做出高级别的决策。

数据摄取之后是什么?

数据摄取只关注于将数据移入分析环境,以支持高级分析用例。但有一个问题,所有这些信息只有那些知道如何编写SQL的技术用户才能访问,而且在仪表盘/报告中是不可操作的。通常,这些信息包括诸如LTV、ARR、产品合格线索、购物车放弃率、订阅类型、购物车中的物品、会话长度、最后登录日期、发送的消息等。

将这些数据民主化,并让营销、销售和支持等业务团队能够访问这些数据是具有挑战性的,但这很重要,因为这些团队是客户之间的第一线。

  • 销售团队想知道哪些线索需要优先处理。
  • 营销团队希望为广告平台建立自定义受众。
  • 支持团队需要知道哪些票是最优先的。

不幸的是,像Fivetran这样的传统ELT工具只能从源头读取并写入仓库,因此将信息移出分析层可能是相当具有挑战性的,因为它需要工程师建立一个全新的数据管道或自定义集成。

多亏了反向ETL,终于有了一个更简单的解决方案。反向ETL类似于ETL和ELT,但它是一个功能完全不同的过程,因为它从仓库中读取并写入外部资源。

这篇文章对反向ETL和ELT之间的技术差异进行了很好的分解。

反向ETL侧重于激活数据仓库中的数据,将其同步回业务用户的工具中。反向ETL工具运行在数据仓库的顶部,不需要存储任何数据,而且很容易使用SQL或现有模型将数据同步到任何目的地。用户只需定义数据并将其映射到最终目的地的适当列/字段。