amazon-web-services - 如何在 ETL 处理之前检查 AWS Glue Schema?

标签 amazon-web-services aws-glue

我想在使用 AWS Glue 进行 ETL 处理之前验证架构。我试图在 Glue 中做所有事情以避免使用 Airflow 或其他工具。

流程是 S3 原始数据 -> 在 Glue 中爬取 S3 数据 -> 执行模式检查 -> 使用 AWS Glue 的基本 ETL(目前是基本选择 *) -> 输出到 S3 -> 执行临时查询作为检查在使用 EC2 安装的 ETL 软件进一步处理之前。我的想法是,如果一个步骤失败,我想发送一份通知(电子邮件或其他方式),说明失败的原因和位置。

示例数据文件:来自 this link 的第一个表(OrderDate、地区、...)

选项 1:AWS Glue ETL 脚本执行脚本中字段的映射。如果字段类型无效(例如日期列中有一个 int),脚本会“失败”并停止吗?我没有在脚本中看到仅在处理之前验证架构的方法。

PySpark 中的示例脚本行:

applymapping1 = ApplyMapping.apply(frame = datasource0, mappings = [("orderdate", "string", "orderdate", "date"), ("region", "string", "region", "string"), ("rep", "string", "rep", "string"), ("item", "string", "item", "string"), ("units", "long", "units", "int"), ("unitcost", "double", "unitcost", "double"), ("total", "double", "total", "double")], transformation_ctx = "applymapping1")

选项 2:我正在阅读 Glue Classifiers。我建立了一个测试 CSV 分类器。我不确定如何将它应用于我的实际爬网数据,因为没有选项可以将它们链接在一起。如果分类器失败,ETL 脚本还会运行吗?

样本分类器:Sample Classifier

工作流需要触发器,触发器需要 ETL 脚本,所以我不确定如何添加分类器。我假设分类器是在抓取发生时强加的,但不清楚如何。

最佳答案

选项 1:

不,它不会失败。架构将成为结构,例如

struct : choice
|   |-- int
|   |-- date 

您可以使用dynamicframe.resolveChoice() 方法来解析数据类型。

检查:

  1. https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-python-samples-medicaid.html
  2. https://github.com/aws-samples/aws-glue-samples/blob/master/examples/resolve_choice.md

选项 2:

在爬虫本身,你可以设置分类器。在爬取数据时,爬虫将使用分类器。

如果分类器失败,爬虫可能会失败...与 ETL 脚本无关。

关于amazon-web-services - 如何在 ETL 处理之前检查 AWS Glue Schema?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58433200/

相关文章:

java - 如何在 GitHub 上隐藏 MySQL 连接字符串 - 用户名和密码 (Java)

amazon-web-services - 连接到不同 aws 区域中可用的 Redis

amazon-web-services - AWS Glue 目录 API : Parameters field in metadata of different structures

amazon-web-services - 使用 spark 从胶水目录中读取而不是使用动态框架(胶水上下文)

amazon-web-services - AWS Glue 爬虫有什么作用

amazon-web-services - Amazon EC2/SES SMTP 超时

amazon-web-services - 如何快速调试 SageMaker 训练脚本?

amazon-web-services - 自动删除 SQS 队列

amazon-redshift - AWS Glue:如何使用各种模式处理嵌套JSON

python - AWS Glue 将结构转换为动态框架