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



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

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

我正试图用python自动执行sql查询,所以我使用awswrangler来实现这一点,但在python中运行查询时,我遇到了一个不太具体的错误。

当我跑";从DatabaseAccB.Table中选择*";得到这个错误";HIVE_METASTORE_ERROR:表缺少存储描述符";原因可能是什么?我尝试了boto3.雅典娜会议和同样的结果。

这可能会有所帮助,当我和我的用户一起从DatabaseAccB.Table查询select*时,这会运行良好。但当我尝试使用lambda或glue作业时,由于前面提到的错误而失败。

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

PD2:如果运行";从DatabaseAccA.Table中选择*";查询运行良好

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

尝试使用lambda,结果相同。

尝试让管理员访问AccountA中的粘合角色,结果相同。

我认为湖人队队形有些问题。

谢谢!

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

  • 资源链接上的DESCRIBE(AccountA的Glue Catalog(
  • SELECTDROP等,位于Shared DB/Table(AccountB的Glue Catalog(上

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

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

最新更新