Снежинка: ошибка управления доступом SQL: недостаточно прав для работы со схемой - PullRequest
0 голосов
/ 08 февраля 2019

Я написал работу по склеиванию 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()

1 Ответ

0 голосов
/ 21 марта 2019

Когда вы используете CLI Snowflake, я предполагаю, что вы переключаетесь на соответствующую роль для выполнения SELECT или INSERT.В Spark вам нужно вручную переключиться на роль, которая имеет привилегии SELECT / INSERT, прежде чем работать с таблицей.Вы делаете это путем выдачи ниже.

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

Это переключит роль на время сеанса Spark.

Также обратите внимание, что структура доступа Snowflake основана на иерархии.Это означает, что вам необходимо иметь привилегии «использования» для базы данных и схемы, в которой находится таблица, которую вы пытаетесь использовать.Пожалуйста, убедитесь, что у вас есть все права на роль, которые используются для выбора или вставки.

...