AWS Glue Python 作业 VS AWS Glue Spark 作业

问题描述 投票:0回答:1

我有一个用例,我必须创建一个 AWS Glue ETL 作业以将 S3 对象中存储的数据更新到 DDB 中的现有表。需要考虑的几个属性是: 目前该数据集大约有 40 MB 大。 转型可能涉及:

  • 根据时间戳选择对象。
  • 如果创建了重复对象,则更新现有行。
  • 为新创建的对象创建新行。
  • 仅过滤出要存储在目标表中的少数属性。

另一个用例包括有点复杂的转换:

  • 从现有数据中获取新属性,这种转换可能包括根据分区键对行进行分组,然后将一个组的每一行与所有其他组的每一行进行比较

我必须在 Python 作业和 Spark 作业之间做出选择。到处都提到 AWS Glue Python shell 作业更适合中小型数据集以及其他 AWS Glue Spark 作业。有人可以用数字指定我们在选择 AWS Glue Python shell 作业而不是 Spark 作业时应该考虑的数据集的近似值是多少吗?

amazon-s3 amazon-dynamodb etl aws-glue
1个回答
0
投票

你说得对,两者都可以用于数据处理。如果需要一组简单的转换并且不需要水平或垂直缩放计算,还建议仅使用 Python 作业。 AWS 没有提供官方数字。我尝试过使用 python 作业处理几个 GB 的数据,但性能相对低于 Spark 作业。

影响作业性能的因素有很多,例如代码优化、转换顺序、分析等。

Python 作业的已知关键限制之一是:

默认使用0.0625 DPU,可设置最大1 DPU(~16 GB 内存和 4 个 vCPU),而 Spark 作业至少需要 2 个 DPU。那 限制了执行复杂转换的可能性 更高的计算能力。

根据官方文档,还有一个比较图表,描述了一些关键差异:

如果你的工作很简单并且可以使用普通Python来解决,那么你应该选择它。还可以考虑使用 Pandas、PyArrow 等软件包来提高性能。

© www.soinside.com 2019 - 2024. All rights reserved.