Снежинка: ошибка управления доступом 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 основана на иерархии. Это означает, что вам необходимо иметь привилегии "использования" для базы данных и схемы, в которой находится таблица, которую вы пытаетесь использовать. Пожалуйста, убедитесь, что у вас есть все права на роль, которые используются для выбора или вставки.

Другие вопросы по тегам