繁体   English   中英

复杂数据管道迁移计划问题

[英]Complex Data Pipeline Migration Plan Question

我的计划:

  1. 将所有数据处理移至Spark(最好是PySpark),而最终输出(面向消费者)的数据仅移至Redshift。 星火似乎连接到所有不同的来源以及(DB迪纳摩,S3,红移)。 根据客户需求输出到Redshift / S3等。 这避免了具有多个红移集群,碎/过度使用内部不支持的ETL工具,跨集群,视图和表等相同的数据(它是当前的设置)的副本。
  2. 使用Luigi构建Web UI,以每日监控管道并可视化依赖关系树,并计划ETL。 电子邮件通知也应该是失败的一种选择。 一种替代方法是AWS数据管道,但是Luigi似乎对于涉及许多依赖项的情况具有更好的UI(某些树的深度为5级,但也许可以通过使用更好的Spark代码来避免这种情况)。

问题:

  1. Luigi是否与Spark集成(我以前只使用过PySpark,而没有使用Luigi,所以这对我来说是一个学习曲线)。 该计划是计划“应用程序”,我相信Spark实际上也具有ETL,所以不确定Luigi如何在这里集成吗?
  2. 如何解释某些管道可能是“实时”的事实-例如,我是否需要每小时每小时启动一次Spark / EMR作业?

我也乐于接受这样做的想法/建议/更好的方法!

要直接回答您的问题,

1)是的,与其他任何库一样,Luigi在PySpark上的表现也不错。 我们当然可以毫无问题地运行它-唯一的警告是,您必须对import稍加注意,并将它们包含在Luigi类的函数中,因为在后台,它正在旋转新的Python实例。

2)有多种方法可以使Luigi吞入数据流,但这很难完成。 实际上,您将回到运行一个小时的cron周期来仅调用管道和流程以及新数据的过程。 这种情况反映了Spotify在Luigi上的用例,在该用例中,他们每天执行工作来计算顶级艺术家等。

正如@RonD所建议的那样,如果我现在正在建立新的管道,我将跳过Luigi并直接进入AirFlow。 如果没有其他问题,请查看发布历史记录。 很长一段时间以来,Luigi并没有做过很多工作(因为它适用于主要开发人员)。 而Apache正在积极培育AirFlow。

代替Luigi,使用Apache Airflow进行工作流程编排(代码用Python编写)。 它内置了许多运算符和挂钩,您可以在其中调用DAG(工作流)。 例如,创建任务以调用操作员来启动EMR集群,另一个任务是运行位于集群s3中的PySpark脚本,另一个任务是监视运行状态。 您也可以使用任务来设置依赖项等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM