3

我们有一个系统,其中我们的主要数据存储(和“通用数据源”)是 Postgres,但我们实时以及每晚汇总复制该数据。我们目前复制到 Elasticsearch、Redis、Redshift(仅限每晚),并且还在添加 Neo4j。

我们的 ETL 管道已经变得足够广泛,以至于我们开始研究AirflowLuigi等工具,但从我最初的研究中可以看出,这些工具几乎完全用于批量加载。

是否有任何工具可以处理既可以处理大批量 ETL 过程也可以处理动态、大容量、单个记录复制的 ETL 过程?Airflow 或 Luigi 会处理这个问题,而我只是错过了它吗?

谢谢!

4

2 回答 2

1

我不是不同 ETL 引擎的疯狂专家,但我已经对 Pentaho Kettle 做了很多工作,并且对它的性能非常满意。特别是如果您调整转换以利用并行处理。

我主要将它用于处理集成(实时)和执行 ETL 以驱动我们的报告数据库的夜间作业,但我很确定您可以将其设置为执行许多实时任务。

我确实设置了 Web 服务,在我们的后端实时调用各种东西,但它几乎没有任何负载,听起来你正在做一些比我们更重要的事情。再一次,它具有集群 ETL 服务器和扩展我从未真正玩过的东西的功能。

如果您花时间正确设置它,我觉得水壶可以做这些事情。总的来说,我喜欢这个工具。在 GUI TBH 中工作是一种乐趣。如果您不熟悉或怀疑从 GUI 执行 ETL 的能力,您应该检查一下。你可能会感到惊讶。

于 2016-10-13T19:36:21.340 回答
1

就 Luigi 而言,您最终可能会采用微批处理方法,在短时间内运行作业。例如,您可以每分钟触发一次 cron 作业以检查 Postgres 表中的新记录并处理该批处理。您可以为每个项目创建一个任务,以便您的处理流程本身围绕单个项目。在大容量情况下,例如每秒数百次更新,这是一个真正的挑战。

Apache Spark 具有可扩展的批处理模式和微批处理模式,以及一些可以适应 ETL 的基本流水线操作符。但是,解决方案在支持基础设施方面的复杂程度会上升很多。

于 2016-10-17T12:54:20.603 回答