AWS Glue 检查文件内容的正确性

Posted

技术标签:

【中文标题】AWS Glue 检查文件内容的正确性【英文标题】:AWS Glue check file contents correctness 【发布时间】:2020-03-21 15:09:35 【问题描述】:

我在 AWS 中有一个项目,用于将 S3 中的一些文件中的数据插入 Redshift。关键是必须每天安排 ETL 以在 S3 中查找新文件,然后检查这些文件是否正确。但是,这必须使用自定义代码来完成,因为文件可以具有不同的格式,具体取决于它们的类型、提供者等。 我看到 AWS Glue 允许计划、抓取和执行 ETL。但是,我不知道如何为 ETL 创建自己的代码并解析文件以检查正确性,然后再执行从 S3 到 Redshift 的复制指令。你知道这是否可以做到以及如何做到吗?

另一个问题是,如果正确性没问题,系统应该通过一些 API 将数据从 S3 上传到 Web。但如果不是,则应将文件留在 ftp 电子邮件中。再说一遍,您知道 AWS Glue 是否也可以做到这一点以及如何做到这一点?

非常感谢!

【问题讨论】:

【参考方案1】:

您可以编写粘合/火花代码,将其上传到 s3 并创建引用此脚本/库的粘合作业。你想用python写的任何东西都可以用胶水完成。它只是 spark 的一个包装器,它又使用 python....

【讨论】:

我已将 Zeppelin 笔记本连接到 AWS Glue 端点。我可以运行 pyspark 代码和粘合库代码。但是,我需要使用一些 python 库。仅通过使用“import paramiko”导入 paramiko 库,我收到以下错误:无法执行第 5 行:import paramiko Traceback(最近一次调用最后一次):文件“/tmp/zeppelin_pyspark-895507894114377331.py”,第 380 行,在 exec(code, _zcUserQueryNameSpace) File "", line 5, in ModuleNotFoundError: No module named 'paramiko'.如何在 AWS Glue 端点中使用 python 库? 在配置端点时,您应该在 python 库路径中添加您的库。记住......只有纯 python 库才能工作。您可以在线下载该库的wheel文件,然后上传到s3并为python库路径指定该文件 成功了。谢谢。但是,我需要对项目使用 sftp 和 Paramiko,这是 Python 中最知名的库,因为它使用 C 代码进行算术运算。纯python中是否还有其他用于sftp的库?还是我必须创建一个 EMR 才能完成这项工作? 虽然文档没有明确说明,但可能值得尝试创建一个 python shell 粘合作业并在那里导入 paramiko。 python shell 粘合作业支持不是纯 python 库的 pandas,希望它可以与导入 paramiko 一起使用。此外,您还可以使用 pandas 来完成您的工作。 我明白了。在 python 中为文件检查创建一个作业,然后在 pyspark 中运行 ETL

以上是关于AWS Glue 检查文件内容的正确性的主要内容,如果未能解决你的问题,请参考以下文章

AWS Glue 输出文件名

AWS Glue输出文件名

如何查询数组字段(AWS Glue)?

具有下推谓词的 AWS Glue Dynamic_frame 未正确过滤

AWS Glue - boto3 爬虫未创建表

如何在 ETL 处理之前检查 AWS Glue 架构?