Снежинка: ошибка управления доступом SQL: недостаточно прав для работы со схемой
Я написал работу по склеиванию aws, в которой я пытаюсь читать таблицы снежинок как спарк-фрейм данных, а также пытаюсь записать спарк-фрейм в таблицы снежинок. Моя работа не соответствует заявлению "Недостаточно прав для работы со схемой" в обоих сценариях.
Но когда я непосредственно пишу оператор вставки в снежинки, я могу вставить данные. Так что в основном у меня есть право на вставку.
Так почему моя работа терпит неудачу, когда я пытаюсь вставить данные из фрейма данных или считываю данные из таблицы снежинок как фрейм данных?
Ниже мой код для записи данных в таблицу снежинок.
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()
0 ответов
Когда вы используете Snowflake CLI, я предполагаю, что вы переключаетесь на правильную роль для выполнения SELECT или INSERT. В Spark вам нужно вручную переключиться на роль, которая имеет привилегии SELECT/INSERT, прежде чем работать с таблицей. Вы делаете это, выпуская ниже.
Utils.runQuery(sfOptions, "USE ROLE <your_role>")
Это переключит роль на время сеанса Spark.
Также обратите внимание, что структура доступа Snowflake основана на иерархии. Это означает, что вам необходимо иметь привилегии "использования" для базы данных и схемы, в которой находится таблица, которую вы пытаетесь использовать. Пожалуйста, убедитесь, что у вас есть все права на роль, которые используются для выбора или вставки.