繁体   English   中英

AWS Wrangler 错误 HIVE_METASTORE_ERROR:表缺少存储描述符

[英]AWS Wrangler Error HIVE_METASTORE_ERROR: Table is missing storage descriptor

希望您能帮助我解决 awswrangler 的错误问题。

情况是这样的:我有 2 个 AWS 账户, AccountAAccountB ,都启用了 lakeformation,我在 AccA 中有一组数据库,在 AccB 中有另一组数据库,所以我们通过 lakeformation 将 AccountB 数据库共享给 AccountA,这样我们就可以查询他们的 Db/ AccountA 中与 Athena 的表格。

我正在尝试使用 python 自动执行 sql 查询,因此我使用 awswrangler 来实现此目的,但是在 python 中运行查询时出现了一个不太具体的错误。

当我运行“select * from DatabaseAccB.Table”时出现此错误“HIVE_METASTORE_ERROR:表缺少存储描述符”可能是什么原因? 我尝试使用 boto3.Athena session 结果相同。

这可能会有所帮助,当我与我的用户一起从 DatabaseAccB.Table 查询 select * 时,它运行良好。 但是当我尝试使用 lambda 或胶水作业时,失败并出现之前提到的错误。

PD:AccountA 仅对 AccountB 中的表具有选择/描述权限。 如果需要,可以显示一些代码。

PD2:如果运行“select * from DatabaseAccA.Table”查询运行正常

尝试使用 Boto 3,结果相同。

尝试使用 lambda,结果相同。

尝试授予管理员访问 AccountA 中胶水角色的权限,结果相同。

我认为 Lakeformation 发生了一些事情。

谢谢!

确保您的 Lambda/Glue 作业执行角色具有以下 Lake Formation 权限,所有权限都是从 AccountA 的控制台/CLI 授予的:

  • 资源链接上进行DESCRIBE (AccountA 的 Glue 目录);
  • SELECTDROP等,在共享数据库/表(AccountB 的胶水目录)上;

必须成对授予资源链接权限:即使您的查询指向资源链接,在 Athena/Redshift Spectrum 中执行查询的主体仍然需要对底层共享数据库/表具有“正常”( SELECTINSERT等)权限由 AccountA 的 Lake Formation 管理员授予。

对于 AWS Wrangler 部分,如果问题仍然存在,您可能需要明确说明它将在哪个 Glue 目录 ID 上执行查询(目前我不确定 AWS Wrangler 中是否存在此参数) .

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM