【问题标题】:Using AWS to execute on-demand ETL使用 AWS 执行按需 ETL
【发布时间】:2015-10-05 17:44:32
【问题描述】:

我想使用 AWS 架构执行按需 ETL 作业。

这个 ETL 流程将每天运行,我不想一直为 EC2 实例付费。例如,这个 ETL 作业可以用 python 编写。

我知道在 EMR 中,我可以按需构建集群并执行 hadoop 作业。

运行简单的按需 ETL 作业的最佳架构是什么?

【问题讨论】:

标签: python amazon-web-services etl emr amazon-emr


【解决方案1】:

最简单的方法是启动 Amazon EC2 实例并触发 ETL 作业作为 User Data 的一部分。通过用户数据传递的脚本会在实例启动时自动执行。

如果您想获得创意,可以使用 Spot Pricing 启动实例。使用高现货价格启动(以确保其运行),但您可能只需要根据当前现货市场支付低价格。

【讨论】:

  • “用户数据限制为 16 KB”怎么样?
  • 该脚本可以从 Amazon S3 或代码存储库下载代码,然后执行代码。这个“代码”可以是另一个脚本,也可以是一个成熟的应用程序。这样,它可以比用户数据本身更大。
【解决方案2】:

(我是趣博乐的员工) 如果您打算使用 Hadoop 运行 Python 脚本,那么 Qubole 会为您管理集群。它会在提交作业时启动您的集群,并在集群长时间空闲时关闭。 更多详细信息请参见常见问题解答:http://docs.qubole.com/en/latest/faqs/hadoop-clusters/clusters-brought-shutdown.html

【讨论】:

  • 我暂时不会使用hadoop
【解决方案3】:

现在您可以将脚本放在 AWS Lambda 上进行 ETL。它支持其他 AWS 组件上的调度程序和触发器。它是按需提供的,仅在执行 Lambda 函数时才会向您收费。

【讨论】:

    【解决方案4】:

    对于按需 ETL 作业,您可以使用 AWS Lambda 触发 lambda 函数,该函数将包含您的 ETL 作业的开始作业代码。 AWS Lambda 可以通过其他 AWS 服务触发,例如:S3、CloudWatch(根据提到的时间触发)、SNS 等。

        You can use boto3 (http://boto3.readthedocs.io/en/latest/) SDK if you are planning to use python based AWS Lambda function to access the AWS services which also include AWS Glue.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-30
      • 2021-01-25
      • 1970-01-01
      • 2021-12-22
      • 2017-11-05
      • 1970-01-01
      相关资源
      最近更新 更多