注意:以下翻译的准确性尚未经过验证。这是使用 AIP ↗ 从原始英文文本进行的机器翻译。

管道类型

在 Foundry 中可以创建三种主要类型的管道,每种类型根据以下几个标准提供不同的权衡:

  • 延迟。管道从开始到结束运行需要多长时间?
  • 复杂性。编写管道和随时间维护管道的难度有多大?
  • 计算成本。管道在计算工时方面的实际成本是多少?
  • 对数据规模变化的适应性。随着时间的推移,管道中将流入多少额外数据?

这三种类型的管道是:

  • 批处理管道在每次运行时完全重新计算每个已更改的数据集。
  • 增量管道仅处理自上次运行以来已更改的新数据。
  • 流式管道持续运行并在数据到达平台时处理新数据。

下面,我们将讨论每种类型的管道、其权衡以及如何开始编写此类型的管道。为方便起见,以下是根据上述权衡标准的管道类型总结表。

标准批处理增量流式
延迟非常低
复杂性
计算成本
对数据规模变化的适应性

批处理

批处理管道中,每当上游数据发生变化时,管道中的所有数据集都会被完全重新计算。因为所有内容都被重新计算,管道的端到端性能在时间上是非常一致的,管道的代码和维护复杂性也很小。为了让更多用户能够参与批处理管道的编写,提供了一系列广泛的语言和工具,包括 SQL。

根据上述标准检查批处理管道:

  • 批处理管道的延迟可能非常高,因为无论数据是否自上次同步以来发生变化,所有数据都必须在它进入平台时处理。然而,如果整体数据规模较小,延迟可能会较低。
  • 批处理管道的复杂性非常低。虽然通常仍然需要理解表操作概念,如筛选、合并和聚合,但不需要更多的知识。
  • 批处理管道的计算成本可能很高,因为在每次搭建管道时都会进行大量重复计算。同样,如果整体数据规模较小,这个因素可以忽略。
  • 对数据规模变化的适应性较低。如果管道中流入大量新数据,例如当输入数据集代表高量事件时,批处理管道将变得不可管理地昂贵并且运行时间过长。

在大多数情况下,您应在 Foundry 中通过创建批处理管道开始管道开发,并在管道的应用案例被验证后扩展以支持增量计算。在许多情况下,您可以无限期地使用批处理管道,特别是如果您的数据规模较低(例如,少于数千万行)。

如果您预计将来需要使管道增量化,我们建议使用 Python 或 Java 进行批处理管道开发,因为这些语言支持增量计算。

通过学习如何在 Pipeline Builder 中创建批处理管道,或通过其他语言的教程开始:

增量

增量管道中,仅计算自上次搭建以来已更改的数据行或文件。这适合处理事件数据和其他随着时间推移有大量数据更改的数据集。除了减少总体计算量外,与批处理管道相比,管道的端到端延迟可以显著降低。仅提供 Python 和 Java API 用于增量计算。

根据上述标准检查增量管道:

  • 增量管道的延迟可以非常低——在几分钟之内。根据我们的经验,这足以满足绝大多数组织的要求。
  • 增量管道的复杂性是中到高的。编写和维护增量管道需要理解数据如何流入 Foundry 数据集事务,如何处理输入数据集非增量更新的情况,以及如何随着时间的推移保持高性能。
  • 增量管道的计算成本可以低于高规模数据集上的批处理管道,因为实际发生的计算量可以最小化。
  • 对数据规模变化的适应性较高。因为仅处理新数据,增量管道避免了在大数据集上重新进行计算的需要。

要了解有关增量管道的更多信息,请参考以下资源:

流式

流式管道中,您的代码会持续运行以处理任何流入 Foundry 的新数据,从而实现最低的延迟水平,但会带来最高的复杂性和计算成本。通常,考虑流式管道时,更像是管理一个微服务而不是管理一个计算任务——您需要非常仔细地考虑正常运行时间、弹性和有状态操作,以成功运行流式管道。

根据上述标准检查流式管道:

  • 流式管道的延迟可以非常低。如果您对数据在不到一分钟的时间内可用于应用案例有强烈要求,那么流式管道可能是一个不错的选择。
  • 流式管道的复杂性非常高。编写这些管道需要避免一系列广泛的模式,例如有状态操作,这些模式可能在未来意外导致不稳定。此外,流式管道对故障的容忍度通常较低,因为停机时间可能导致依赖持续新鲜数据的应用案例将任何中断视为停机。
  • 流式管道的计算成本可能非常高,因为流式管道的性质要求计算资源始终可用以处理新输入数据。
  • 对数据规模变化的适应性较高。流式管道被设计用于支持高吞吐量,通常可以处理比批处理甚至增量管道更高的数据规模变化。

在大多数情况下,除非您的应用案例对延迟要求非常低,否则最好避免创建流式管道。增量管道通常可以实现分钟级端到端延迟,以满足大多数需求,而无需承担流式管道的额外复杂性和计算成本。

要了解有关流式管道的更多信息,请参考以下资源:

有关流式管道的更多文档将很快推出。如果您有兴趣构建流式管道,请联系您的 Palantir 代表。