【问题标题】:AWS pandas etl job that is too big for lambda and too small for Spark - what to use?AWS pandas etl 作业对 lambda 来说太大而对 Spark 来说太小 - 使用什么?
【发布时间】:2020-09-08 21:26:30
【问题描述】:

我需要运行一项每日 etl 作业,该作业必须下载一些 CSV 文件并运行一些 pandas 处理。该文件足够大,足以让 lambda 在处理过程中失败,但 spark 似乎有点矫枉过正。胶水不允许熊猫。什么对日常处理有意义?我目前正在考虑以下选项

  • 对 pandas read_csv 的 chunksize 做一些解决方法
  • 即使数据不是很大,也可以作为 spark 作业运行,对于 lambda 来说太大了
  • 尝试作为 Sagemaker 处理作业运行
  • 在 EC2 实例上作为脚本运行

Ec2 肯定会工作,但感觉这应该由一些专门的 AWS 服务来处理。但哪种 (AWS) 工具适合这项工作?

【问题讨论】:

    标签: amazon-web-services


    【解决方案1】:

    SageMaker Training 和 SageMaker Processing 绝对是小到大规模数据处理的相关服务,包括任意 pandas 执行。我对 SageMaker 培训有一点偏好。尽管名称如此,但没有什么能强迫您在 SageMaker 培训中进行 ML 培训!它有以下好处:

    1. 可以使用 Spot
    2. 它很好地集成到 AWS 的其余部分(好 控制台体验、自定义指标 + Cloudwatch 中的日志)
    3. 您甚至可以创造性地尝试使用贝叶斯调优来调整作业执行时间或成本!

    在您的情况下,我建议使用开源 SageMaker Sklearn training container,它的好处是安装了 pandas、高级 SDK 并且可以在本地进行测试。

    【讨论】:

    • 谢谢,这是有道理的——尤其是因为我们将 Sagemaker 用于我们的生产模型...我只是喜欢在将数据发送到批处理之前由 stepfunction 控制的 lambdas 的可见性.从未考虑使用 sagemaker 培训作为预处理。如果我使用 sagemaker 处理进行预处理和后处理,我可以将它们打包到 Sagemaker 推理管道中吗?所以我会将预处理、批量转换、后处理全部汇总到一个触发的 sagemaker 管道中?是否存在内存或超时限制,或者它是否完全可扩展?谢谢!!
    • aws.amazon.com/about-aws/whats-new/2020/08/… - 看起来我可以将 lambdas 换成 Sagemaker 处理作业并以相同的方式运行 stepfunctions
    • @LXandor 是的 Step Functions 是个好主意。也可以使用推理管道,但它要求每个容器都遵守 SageMaker 调用设计,因此可能不如处理/训练作业中的自定义代码灵活。通常,我相信您会受到从容器到容器通信的有效负载大小的限制。它适用于对单个请求进行实时推理,或用于批量转换任务(将文件拆分为许多小负载)
    【解决方案2】:

    在此类场景中,您可以使用 AWS Glue python shell 作业。您现在可以使用 AWS Glue 中的 Python 脚本来运行通常属于 ETL(提取、转换和加载)工作流程的中小型通用任务.

    请参阅此doc 以了解有关如何使用 pandas 添加 python shell 作业的更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      • 2013-06-07
      • 1970-01-01
      • 2020-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多