我们有一个系统,我们的主要数据存储(和“通用真实来源”)是Postgres,但我们实时和夜间聚合复制这些数据。我们目前复制到Elasticsearch,Redis,Redshift(仅限每晚),并且还添加了Neo4j。
我们的ETL管道已经足够广泛,我们开始关注像Airflow和Luigi这样的工具,但从我最初的研究中可以看出,这些工具几乎完全是为了批量加载。
是否有任何工具可以处理ETL过程,该过程既可以处理大批量ETL过程,也可以处理即时,高容量,单个记录的复制? Airflow或Luigi处理这个并且我错过了吗?
谢谢!
答案 0 :(得分:1)
我在不同的ETL引擎上并不是一个疯狂的专家,但我已经用Pentaho Kettle完成了许多工作,我对它的表现非常满意。特别是如果您调整转换以利用并行处理。
我主要使用它来处理集成(实时)和夜间作业,这些作业执行ETL来驱动我们的报告数据库,但我非常确定你可以设置它来执行许多实时任务。 / p>
我确实设置了一些Web服务,这些服务在我们的后端实时调用了各种各样的东西,但它实际上没有任何负载,听起来你做的比我们做的更重要。是。然后它再次具备了集群ETL服务器的功能,并扩展了我从未真正使用过的东西。
如果你花时间设置它,我觉得水壶可以做这些事情。总的来说我喜欢这个工具。在GUI TBH中工作是一种乐趣。如果您不熟悉或怀疑从GUI执行ETL的能力,您应该检查它。你可能会感到惊讶。
答案 1 :(得分:0)
就Luigi而言,您最终可能会采用微批处理方法,在短时间内运行作业。例如,您可以每分钟触发一个cron作业,以检查Postgres表中的新记录并处理该批处理。您可以为每个项目创建任务,以便您的处理流程本身围绕单个项目。在高容量时,比如每秒超过几百次更新,这是一个真正的挑战。
Apache Spark具有可扩展的批处理模式和微批处理模式,以及一些可以适应ETL的基本流水线操作符。但是,在支持基础设施方面,解决方案的复杂程度上升了很多。