Jupyter notebook用awswrangler访问共享Glue表报错如何解决
问题排查与解决方案
该报错HIVE_METASTORE_ERROR: Required Table Storage Descriptor is not populated本质是Athena读取指向LakeFormation共享表的Glue资源链接时,无法拉取到源表的存储位置、读写格式等核心元数据导致,可按以下步骤排查:
1. 验证源表与资源链接配置有效性
- 登录共享数据的源AWS账号,直接在Athena控制台查询被共享的原始表,确认源表本身可正常查询,排除源表自身Storage Descriptor字段缺失的问题
- 确认你本地账号创建的
lf_shared_table资源链接配置正确:目标资源的源账号ID、源数据库名、源表名没有拼写错误
2. 检查LakeFormation权限配置
绝大多数此类问题由权限遗漏导致,请确认以下权限均配置到位:
- 源账号LakeFormation侧,给你本地查询用的IAM实体(角色/用户)授予源表的DESCRIBE权限,同时授予源表对应S3存储路径的
SELECT+DESCRIBE权限 - 本地账号LakeFormation侧,给你用的IAM实体授予
local_db数据库的USAGE权限、lf_shared_table资源链接的DESCRIBE权限 - 额外检查IAM实体的身份策略中,已配置
glue:GetTable、glue:GetDatabase等Glue元数据读取权限,以及源S3路径的读取权限、源数据KMS密钥的解密权限(如源数据启用了KMS加密)
3. 排除工具侧兼容问题
- 先不使用awswrangler,直接在本地账号的Athena控制台执行查询语句
SELECT * FROM local_db.lf_shared_table,如果控制台也报同样错误,说明问题出在权限/元数据配置,与awswrangler无关;如果控制台可正常返回结果,再排查工具侧问题:- 确认awswrangler使用的boto3会话对应的IAM身份,和你Athena控制台用的身份完全一致,没有权限差异
- 升级awswrangler到最新稳定版本,老版本对LakeFormation资源链接的支持存在兼容缺陷:
pip install --upgrade awswrangler
4. 元数据同步问题修复
如果上述排查全部通过仍报错,可尝试以下操作:
- 删除本地账号下的
lf_shared_table资源链接,重新创建一次 - 若源表是刚完成共享的新表,等待5-10分钟待跨账号元数据同步完成后再重试
- 确认源端共享的是普通表而非视图,若为视图需要额外授予视图依赖的所有底层表的对应访问权限
内容的提问来源于stack exchange,提问作者coder1416
相关产品推荐
相关产品推荐

