我有一个用例,我必须创建一个 AWS Glue ETL 作业以将 S3 对象中存储的数据更新到 DDB 中的现有表。需要考虑的几个属性是: 目前该数据集大约有 40 MB 大。 转型可能涉及:
另一个用例包括有点复杂的转换:
我必须在 Python 作业和 Spark 作业之间做出选择。到处都提到 AWS Glue Python shell 作业更适合中小型数据集以及其他 AWS Glue Spark 作业。有人可以用数字指定我们在选择 AWS Glue Python shell 作业而不是 Spark 作业时应该考虑的数据集的近似值是多少吗?
你说得对,两者都可以用于数据处理。如果需要一组简单的转换并且不需要水平或垂直缩放计算,还建议仅使用 Python 作业。 AWS 没有提供官方数字。我尝试过使用 python 作业处理几个 GB 的数据,但性能相对低于 Spark 作业。
影响作业性能的因素有很多,例如代码优化、转换顺序、分析等。
Python 作业的已知关键限制之一是:
默认使用0.0625 DPU,可设置最大1 DPU(~16 GB 内存和 4 个 vCPU),而 Spark 作业至少需要 2 个 DPU。那 限制了执行复杂转换的可能性 更高的计算能力。
根据官方文档,还有一个比较图表,描述了一些关键差异:
如果你的工作很简单并且可以使用普通Python来解决,那么你应该选择它。还可以考虑使用 Pandas、PyArrow 等软件包来提高性能。