对表错误进行故障排除
使用本节中的信息对 Athena for Spark 的表错误进行故障排除。
创建表时无法创建路径错误
错误消息:IllegalArgumentException: Cannot create a path from an empty string.
(IllegalArgumentException:无法从空字符串创建路径。)
原因:当您在 Athena 中使用 Apache Spark 在 AWS Glue 数据库中创建表并且数据库的 LOCATION
属性为空时,可能会发生此错误。
建议的解决方法:有关更多信息和解决方案,请参阅 创建表时出现非法参数异常。
查询 AWS Glue 表时出现 AccessDeniedException
错误消息:pyspark.sql.utils.AnalysisException: Unable to verify existence of default database: com.amazonaws.services.glue.model.AccessDeniedException: User: arn:aws:sts::
[pyspark.sql.utils.AnalysisException:无法验证默认数据库是否存在:com.amazonaws.services.glue.model.AccessDeniedException:用户:arn:aws:sts::aws-account-id:assumed-role/AWSAthenaSparkExecutionRole-unique-identifier/AthenaExecutor-unique-identifier 无权执行:资源上的 glue:GetDatabase:arn:aws:glue:aws-region:aws-account-id:catalog:因为没有基于身份的策略允许 glue:GetDatabase 操作(服务:AWSGlue;状态代码:400;错误代码:AccessDeniedException;请求 ID:request-id;代理:null)]aws-account-id
:assumed-role/AWSAthenaSparkExecutionRole-unique-identifier
/AthenaExecutor-unique-identifier
is not authorized to perform: glue:GetDatabase on resource: arn:aws:glue:aws-region
:aws-account-id
:catalog because no identity-based policy allows the glue:GetDatabase action (Service: AWSGlue; Status Code: 400; Error Code: AccessDeniedException; Request ID: request-id
; Proxy: null)
原因:启用 Spark 的工作组的执行角色缺少访问 AWS Glue 资源的权限。
建议的解决方法:要解决此问题,请向您的执行角色授予访问 AWS Glue 资源的权限,然后编辑 Amazon S3 存储桶策略以向执行角色授予访问权限。
以下过程将详细介绍这些步骤。
向 AWS Glue 资源授予您的执行角色权限
从 https://console.aws.amazon.com/athena/
打开 Athena 控制台。 如果控制台导航窗格不可见,请选择左侧的扩展菜单。
-
在 Athena 控制台导航窗格中,选择 Workgroups(工作组)。
-
在 Workgroups(工作组)页面上,选择要查看的工作组的链接。
-
在工作组的 Overview Details(概述详细信息)页面上,选择 Role ARN(角色 ARN)链接。该链接将在 IAM 控制台中打开 Spark 执行角色。
-
在 Permissions policies(权限策略)部分中,选择链接的角色策略名称。
-
选择 Edit policy(编辑策略),然后选择 JSON。
-
将 AWS Glue 访问权限添加到角色。通常,您可以为
glue:GetDatabase
和glue:GetTable
操作添加权限。有关配置 IAM 角色的更多信息,请参阅《IAM 用户指南》中的添加和删除 IAM 身份权限。 -
选择 Review policy (查看策略),然后选择 Save changes (保存更改)。
-
编辑 Amazon S3 存储桶策略,以向执行角色授予访问权限。请注意,您必须授予角色访问存储桶和存储桶中对象的权限。有关步骤,请参阅《Amazon Simple Storage Service 用户指南》中的使用 Amazon S3 控制台添加存储桶策略。