在同一工具下同步所有数据操作

Synchronize all data opearions under the same tool

在我的公司,我们有 Pentaho Kettle 每天做我们的 ETL 工作(一台机器足以处理我们所有的数据),这意味着:

我们正计划使用更高级的工具重做它,这将使我们能够:

我想到的是 Luigi 或 Airflow 作为工作流管理器,并使用 python 进行基于代码的 ETL?由于我们的整个基础设施都在 AWS 云上,我看到 AWS Glue 现在也作为一个选项出现(我不知道它是否仅用于 etl,或者也可以用于我们计划包括的其他流程)

还有其他解决办法吗?有没有人有使用这些的经验(特别是他们如何使用 redshift、s3,可能在未来触发 spark/kinesis 工作负载)?

如果是,可以使用哪些库,以及开始和学习的好地方?

抱歉,回答这样的问题几乎是不可能的。每个公司和团队都不一样。对我们有用的不一定对你有用。

不过,我可以提供一些一般性建议:

发挥你的长处。如果您的团队中全是强大的 C# 编码人员,请不要选择 python。如果您了解 SQL 服务器的内在和外在并选择他们的 ETL 工具。

规划中。这是最重要的一步。确保您已经全面分析并记录了新 ETL 解决方案的工作原理。预先识别和解决所有复杂问题将导致更短的开发时间和更整洁的解决方案。更好地了解细节也将帮助您评估所提供的各种工具和框架。在此过程结束时,您应该知道:

  • 开发需要多长时间。
  • 您需要 ETL 工具的哪些功能。
  • ETL 将如何 organised/monitored/updated。
  • 主要的里程碑是什么。

如果计划得当,使用什么技术都没有关系。

原型和测试。如果您是第一次使用工具或框架,这一点尤其重要。至少在采用一种方法之前测试主要功能。我曾经工作过的一家公司在 ETL 解决方案上花费了数万英镑。安装后的第二天,我们发现它不支持我们的 CRM 工具。找不到解决方法,我们被迫购买第二个 ETL 工具。非常昂贵的错误。

不要瞄准移动的目标。理想情况下,新旧 ETL 系统应使用完全相同的源数据并填充完全相同的报告表。这极大地简化了测试。这允许你双运行。这允许您在需要时回退到旧的解决方案。为第二版保存新奇的东西。

代码。在完成所有其他步骤之前不要编写任何代码(prototypes/tests 放在一边)。当您完全理解问题时,代码(几乎)会自行编写。

为了上下文;我为一家大型跨国公司管理着一个 30 亿条记录的数据仓库。我已经犯了 我警告你不要犯的每一个 错误。