【发布时间】:2019-02-08 17:00:16
【问题描述】:
我已经编写了 aws 胶水作业,我试图将雪花表读取为 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()
【问题讨论】:
-
我没有雪花环境,但是基于雪花架构,你可能有没有特权的默认角色。
-
是的。因为我已经拥有选择、更新、插入、删除权限,我需要添加哪些权限才能将数据从 spark 数据帧写入雪花表。我只是无法在 prod 环境中添加所有权限。我需要提供特定的权限。
-
如果您当前的用户有多个角色,那么您可以在当前会话中使用一个角色。因此,当您在 spark 代码中创建连接时,您必须验证使用了哪个角色,但如果您没有设置任何角色,则将使用默认角色。您可以使用“显示角色”来检查默认角色。一旦您知道角色可以检查该角色的所有授权,以验证使用的角色是否具有正确的授权。
-
同意,但根据客户的说法,他们不想将所有授权授予任何角色。他们想要授予特定的特权。
-
是的,它应该非常具体,您应该在 sfoptions 中设置正确的角色。您能否将 sfRole 属性设置为具有相关角色以在目标表上写入的角色
标签: pyspark aws-glue snowflake-cloud-data-platform