对 AWS Glue Data Quality 错误进行故障排除 - AWS Glue

对 AWS Glue Data Quality 错误进行故障排除

如果您在 AWS Glue Data Quality 中遇到错误,则可以使用以下解决方案来帮助您查找问题的根源并解决问题。

错误:缺少 AWS Glue Data Quality 模块

错误消息:没有名为“awsgluedq”的模块。

解决方法:当您在不支持的版本中运行 AWS Glue Data Quality 时,就会发生此错误。AWS仅有 Glue 版本 3.0 和更高版本支持 Glue Data Quality。

错误:AWS Lake Formation 权限不足

错误消息:用户类异常:com.amazonaws.services.glue.model.AccessDeniedExceptionimpact_sdg_involvement 上的 Lake Formation 权限不足(服务:AWS Glue;状态码:400;错误代码:AccessDeniedException;请求 ID:465ae693-b7ba-4df0-a4e4-6b17xxxxxxxx;;代理:空)。

解决方法:您需要在 AWS Lake Formation 中提供足够的权限。

错误:规则集的名称不唯一

错误消息:用户类中存在异常:...services.glue.model.AlreadyExistsException:另一个同名的规则集已经存在。

解决方法:规则集是全球性的,必须是唯一的。

错误:带有特殊字符的表

错误消息:用户类异常:org.apache.spark.sql.AnalysisException:无法解析''C''给定输入列:[primary.data_end_time, primary.data_start_time, primary.end_time, primary.last_updated, primary.message, primary.process_date, primary.rowhash, primary.run_by, primary.run_id, primary.start_time, primary.status];line 1 pos 44;.

解决方法:目前存在一个限制,即无法在带有特殊字符(例如“.”)的表上执行 AWS Glue Data Quality。

错误:规则集过大时发生溢出错误

错误消息:用户类异常:java.lang.StackOverflowError。

解决方法:如果您的大型规则集大于 2K 规则,则可能会遇到此问题。将您的规则分解为多个规则集。

错误:整体规则状态为失败

错误条件:我的规则集已成功,但我的整体规则状态为失败。

解决方法:此错误很可能是因为您在发布时选择了将指标发布到 Amazon Cloudwatch 的选项。如果您的数据集位于 VPC 中,则您的 VPC 可能不允许 AWS Glue 向 CloudWatch 发布指标。在这种情况下,您需要为自己的 VPC 设置一个端点才能访问 CloudWatch。

AnalysisException:无法验证默认数据库是否存在

错误条件:AnalysException:无法验证默认数据库是否存在:com.amazonaws.services.glue.model.AccessDeniedException:默认情况下的 Lake Formation 权限不足(服务:AWS Glue;状态码:400;错误代码:AccessDeniedException;请求 ID:XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX;代理:空)

解决方法:在 AWS Glue 作业的目录集成中,AWS Glue 始终尝试使用 AWS Glue GetDatabase API 检查默认数据库是否存在。如果未授予 DESCRIBE Lake Formation 权限或授予了 GetDatabase IAM 权限,则在验证默认数据库是否存在时,作业将失败。

要解决这个问题,请执行以下操作:

  1. 在 Lake Formation 中添加默认数据库的 DESCRIBE 权限。

  2. 在 Lake Formation 中将附加到 AWS Glue 作业的 IAM 角色配置为数据库创建者。这将自动创建默认数据库,并为该角色授予所需的 Lake Formation 权限。

  3. 禁用 --enable-data-catalog 选项。(它在 AWS Glue Studio 中显示为使用 Data Catalog 作为 Hive 元存储)。

    如果作业中不需要 Spark SQL Data Catalog 集成,可以禁用。

错误消息:提供的键映射不适用于给定的数据帧

错误条件:提供的键映射不适用于给定的数据帧。

解决方法:您使用的是 DataSetMatch 规则类型,并且交集键有重复项。您的交集键必须唯一,并且不能为 NULL。如果您无法使用唯一的交集键,请考虑使用其他规则类型(例如 AggregateMatch)来匹配摘要数据。

用户类中的异常:java.lang.RuntimeException:无法获取数据。请查看 CloudWatch 中的日志以获取更多详细信息

错误条件:用户类中的异常:java.lang.RuntimeException:无法获取数据。请查看 CloudWatch 中的日志以获取更多详细信息

解决方法:当您在基于 Amazon S3 的表上创建 DQ 规则并与 Amazon RDS 或 Amazon Redshift 进行比较时,就会发生这种情况。在这些情况下,AWS Glue 无法加载连接。相反,请尝试在 Amazon Redshift 或 Amazon RDS 数据集上设置 DQ 规则。这是一个已知错误。

启动错误:从 S3 下载存储桶时出错

错误条件:启动错误:从 S3 下载存储桶时出错:aws-glue-ml-data-quality-assets-us-east-1, key: jars/aws-glue-ml-data-quality-etl.jar.Access Denied (Service: Amazon S3; Status Code: 403; Please refer logs for details)

解决方法:传递给 AWS Glue Data Quality 的角色权限必须允许从上述 Amazon S3 位置进行读取。此 IAM policy 应附加到该角色:

{ "Sid": "allowS3", "Effect": "Allow", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::aws-glue-ml-data-quality-assets-<region>/*" }

有关详细权限,请参阅 Data Quality authorization。这些库是评估数据集的数据质量所必需的。

InvalidInputException(状态:400):无法解析 DataQuality 规则

错误条件:InvalidInputException(状态:400):无法解析 DataQuality 规则。

解决方法:出现此错误的可能性很多。一种可能性是您的规则可能使用单引号。确保它们用双引号括起来。例如:

Rules = [ ColumnValues "tipo_vinculo" in ["CODO", "DOCO", "COCO", "DODO"] AND "categoria" = 'ES" AND "cod_bandera" = 'CEP'

将其更改为:

Rules = [ (ColumnValues "tipovinculo" in [ "CODO", "DOCO", "COCO", "DODO"]) AND (ColumnValues "categoria" = "ES") AND (ColumnValues "codbandera" = "CEP") ]

错误:Eventbridge 没有根据我设置的计划触发 Glue DQ 作业

错误条件:Eventbridge 没有根据我设置的计划触发 AWS Glue Data Quality 作业。

解决方法:触发作业的角色可能没有正确的权限。确保您用于触发作业的角色具有计划评估运行所需的 IAM 设置中提及的权限。

CustomSQL 错误

错误条件 The output from CustomSQL must contain at least one column that matches the input dataset for AWS Glue Data Quality to provide row level results. The SQL query is a valid query but no columns from the SQL result are present in the Input Dataset. Ensure that matching columns are returned from the SQL

解决方法:SQL 查询有效,但请确保仅从主表中选择列。从主函数中选择聚合函数(例如 sum、count 列)可能会导致此错误。

错误条件 There was a problem when executing your SQL statement: cannot resolve "Col"

解决方法:主表中不存在此列。

错误条件 The columns that are returned from the SQL statement should only belong to the primary table. "In this case, some columns ( Col ) belong to reference table"

解决方法:在 SQL 查询中,当您将主表与其他引用表联接时,请确保您的 select 语句仅包含主表中的列名,以便为主表生成行级结果。