对 AWS Glue Data Quality 错误进行故障排除
如果您在 AWS Glue Data Quality 中遇到错误,则可以使用以下解决方案来帮助您查找问题的根源并解决问题。
目录
- 错误:缺少 AWS Glue Data Quality 模块
- 错误:AWS Lake Formation 权限不足
- 错误:规则集的名称不唯一
- 错误:带有特殊字符的表
- 错误:规则集过大时发生溢出错误
- 错误:整体规则状态为失败
- AnalysisException:无法验证默认数据库是否存在
- 错误消息:提供的键映射不适用于给定的数据帧
- 用户类中的异常:java.lang.RuntimeException:无法获取数据。请查看 CloudWatch 中的日志以获取更多详细信息
- 启动错误:从 S3 下载存储桶时出错
- InvalidInputException(状态:400):无法解析 DataQuality 规则
- 错误:Eventbridge 没有根据我设置的计划触发 Glue DQ 作业
- CustomSQL 错误
错误:缺少 AWS Glue Data Quality 模块
错误消息:没有名为“awsgluedq”的模块。
解决方法:当您在不支持的版本中运行 AWS Glue Data Quality 时,就会发生此错误。AWS仅有 Glue 版本 3.0 和更高版本支持 Glue Data Quality。
错误:AWS Lake Formation 权限不足
错误消息:用户类异常:com.amazonaws.services.glue.model.AccessDeniedException
impact_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
权限,则在验证默认数据库是否存在时,作业将失败。
要解决这个问题,请执行以下操作:
-
在 Lake Formation 中添加默认数据库的
DESCRIBE
权限。 -
在 Lake Formation 中将附加到 AWS Glue 作业的 IAM 角色配置为数据库创建者。这将自动创建默认数据库,并为该角色授予所需的 Lake Formation 权限。
-
禁用
--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 语句仅包含主表中的列名,以便为主表生成行级结果。