Snowflake:SQL访问控制错误:对架构进行操作的权限不足

问题描述 投票:0回答:1

我写了aws glue job,我试图将雪花表读作spark数据帧,并尝试将spark数据帧写入雪花表。我的工作是在两种情况下都没有说明“在架构上操作的权限不足”。

但是当我直接在雪花cli上写插入语句时,我能够插入数据。所以基本上我有插入权限。

那么,当我尝试从数据框插入数据或从雪花表中读取数据作为数据帧时,为什么我的工作失败?

下面是我将数据写入雪花表的代码。

sfOptions = {
    "sfURL" : "xt30972.snowflakecomputing.com",
    "sfAccount" : "*****",
    "sfUser" : "*****",
    "sfPassword" : "****",
    "sfDatabase" : "*****",
    "sfSchema" : "******"
}

df=spark.read.format("csv").option("header","false").option("delimiter",',').load(aws s3 file_name)

df2.write.format("net.snowflake.spark.snowflake") \
.options(**sfOptions) \
.option("dbtable", table_name) \
.mode("append") \
.save()
pyspark aws-glue snowflake
1个回答
1
投票

当您使用Snowflake CLI时,我假设您切换到适当的角色来执行SELECT或INSERT。在Spark上,您需要在对表进行操作之前手动切换到具有SELECT / INSERT授权的角色。您可以通过以下方式发布。

Utils.runQuery(sfOptions, "USE ROLE <your_role>")

这将在Spark会话期间切换角色。

另请注意,Snowflake的访问结构基于层次结构。这意味着您需要对包含您尝试使用的表的数据库和架构具有“使用”权限。请确保您使用SELECT或INSERT获得对该角色的所有正确授权。

© www.soinside.com 2019 - 2024. All rights reserved.