希望您能帮助我解决awswrangler的错误问题。
情况是这样的:我有两个aws帐户,AccountA和AccountB,这两个帐户都启用了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( SELECT
、DROP
等,位于Shared DB/Table(AccountB的Glue Catalog(上
资源链接权限必须成对授予:即使您的查询指向的资源链接,在Athena/Redshift Spectrum中执行查询的主体仍然需要具有";正常的";(SELECT
、INSERT
等(由AccountA的Lake Formation管理员授予的对底层共享数据库/表的权限。
对于AWS Wrangler部分,如果问题仍然存在,可能您需要明确它将在哪个Glue Catalog ID上执行查询(但目前我不确定AWS Wrangle中是否存在此参数(。