-1

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

  • 从不同的,主要是关系数据库、电子表格和 API 读取数据
  • 应用转换,并将数据插入 Redshift
  • 对外部 SAAS 工具进行 API 调用

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

  • 比每天一次更频繁地更新 dw
  • 更容易获取数据并将数据推送到我们使用的 SAAS API(在 Pentaho 中处理和组合 JSON 很痛苦)
  • 启用在工作流中触发其他工作负载(例如 python 脚本)
  • 同步在 EC2 机器上运行的机器学习管道
  • 准备好在一年内实现 5 倍的数据规模(其中 1 台机器可能还不够)

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

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

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

4

1 回答 1

3

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

但是,我可以提供一些一般性建议:

发挥自己的优势。如果您的团队充满了强大的 C# 编码人员,请不要选择 python。如果您对 SQL Server 了如指掌,请选择他们的 ETL 工具。

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

  • 开发需要多长时间。
  • 您需要 ETL 工具提供的功能。
  • 如何组织/监控/更新 ETL。
  • 主要里程碑是什么。

如果你计划得当,你使用什么技术并不重要。

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

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

代码。在完成所有其他步骤(原型/测试除外)之前,不要编写任何代码。当您完全理解问题时,代码(几乎)会自行编写。

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

于 2017-08-29T13:03:33.020 回答