我有一份用 GLue 制作 ETL 的工作,我需要在这个脚本的最后发送一封包含一些“数据质量”的电子邮件,将 DataFrame Spark 转换为 pandas 并使用 matplotlib 绘制一些图表。我尝试使用 AWS SES,但我认为我无权使用,所以我需要一些帮助来发送这封电子邮件,我可以使用什么库来实现此目的? 另一个问题是,如何将此图保存在图像扩展中并放在这封电子邮件的正文中?
我尝试使用 AWS SES 发送电子邮件,但创建身份时出现错误,不允许我这样做。所以我迷路了:(
该错误告诉我,我没有执行此操作的权限。
这不仅仅是一个问题,这似乎是一个完整的项目:D。
你应该问自己的第一个问题是:“你真的想用胶水来做这个吗?”
请记住,如果您正在处理大量数据,将 Spark 数据框转换为 pandas 数据框可能已经成为一个问题。如果你不是,那你为什么要首先使用 Spark?
除此之外,我将把我的答案分为三个部分。
您应该能够使用 SES 发送电子邮件,但请注意,要向未经验证的用户发送电子邮件,您需要向 AWS 发出明确的请求。 为此,您需要在脚本中导入
boto3
这里有一个主题向您解释了如何操作。
然后您可以使用 SES SDK 发送带有您想要的任何 html 正文的电子邮件。
为此,您仍然需要 boto3 sdk。不过,其想法并不是直接从 awsglue 发送电子邮件,而是将图表保存到 S3,然后使用 AWS Lambda 发送电子邮件。
您可能认为这可能会花费更多,但考虑到 AWS Glue 作业的运行成本,我不会押注它。
为此,您需要:
这将为您的解决方案提供更多灵活性,但实现起来会更复杂一些。
首先。如果数据量不是那么大,请考虑使用带有 pandas 的 AWS Lambda 或基于 Fargate 的 AWS Batch 作业。直接使用pandas,跳过spark部分。
如果您要处理大量数据,您仍然可以转换和过滤掉所有不需要的数据,最终只得到图表严格需要的数据。 然后,您可以使用 Spark 直接将此结果作为 CSV 或 parquet 文件存储到 S3(无需导入 boto3)。
从那里,您将能够执行与第 2 点中描述的基本相同的过程,但在 AWS lambda 中使用 pandas 和 boto3 ,将按顺序:
请注意,通过电子邮件发送图像并不是那么简单。您可以在此处找到有关该问题的其他讨论。
如果您不向我们提供有关您在身份政策中遇到的错误的更多详细信息,我想我们几乎不可能帮助您解决此问题。无论哪种方式,您都可以在网上找到大量有关如何执行此操作的示例,我将在下面放置一些资源。
希望这对您有所帮助。祝你好运:)