![](/img/trans.png)
[英]Aws Wrangler giving not implemented error: impossible to query aws athena
[英]AWS Wrangler Error HIVE_METASTORE_ERROR: Table is missing storage descriptor
希望您能帮助我解决 awswrangler 的错误问题。
情况是这样的:我有 2 个 AWS 账户, AccountA和AccountB ,都启用了 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 目录);SELECT
, DROP
等,在共享数据库/表(AccountB 的胶水目录)上; 必须成对授予资源链接权限:即使您的查询指向资源链接,在 Athena/Redshift Spectrum 中执行查询的主体仍然需要对底层共享数据库/表具有“正常”( SELECT
、 INSERT
等)权限由 AccountA 的 Lake Formation 管理员授予。
对于 AWS Wrangler 部分,如果问题仍然存在,您可能需要明确说明它将在哪个 Glue 目录 ID 上执行查询(目前我不确定 AWS Wrangler 中是否存在此参数) .
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.