Ошибка выдачи DataFrame.show () в Databricks

Я пытаюсь получить данные из хранилища данных Azure с помощью Azure Databricks.

Часть подключения хороша, поскольку я вижу строки, возвращаемые в DataFrame, но когда я пытаюсь сохранить или показать запись в DataFrame, возникает ошибка. Вот что я пробовал:

df = spark.read \
  .format("com.databricks.spark.sqldw") \
  .option("url", sqlDwNew) \
  .option("tempDir", temDir_location) \
  .option("forwardSparkAzureStorageCredentials", "true") \
  .option("query", "select  * from AccessPermission") \
  .load()
df.count()

Выход

(1) Spark Jobs
df:pyspark.sql.dataframe.DataFrame
AccessPermissionId:integer
AccessPermission:string
Out[16]: 4

Ошибка

df.show()

Выход

com.databricks.spark.sqldw.SqlDWSideException: SQL DW failed to execute the JDBC query produced by the connector.

person Addy    schedule 11.08.2020    source источник
comment
Если мой ответ был вам полезен, не могли бы вы принять его как ответ? Это может помочь большему количеству людей, у которых есть подобная проблема.   -  person CHEEKATLAPRADEEP-MSFT    schedule 19.08.2020


Ответы (1)


Чтобы узнать точную причину, я прошу вас проверить полную трассировку стека и попытаться найти основную причину проблемы.

Согласно моему воспроизведению, я столкнулся с точно таким же сообщением об ошибке и смог решить проблему, просмотрев трассировку стека и обнаружив проблему с конфигурацией учетной записи хранения.

com.databricks.spark.sqldw.SqlDWSideException: SQL DW failed to execute the JDBC query produced by the connector.
.
.
.
.
.   

 Caused by: java.lang.IllegalArgumentException: requirement failed: No access key found in the session conf or the global Hadoop conf for Azure Storage account name: chepra

введите описание изображения здесь

Шаг 1. Настройте ключ доступа к учетной записи хранения BLOB-объектов в конфигурации сеанса записной книжки.

spark.conf.set(
  "fs.azure.account.key.<your-storage-account-name>.blob.core.windows.net",
  "<your-storage-account-access-key>")

Шаг 2. Загрузите данные из запроса Azure Synapse.

df = spark.read \
  .format("com.databricks.spark.sqldw") \
  .option("url", "jdbc:sqlserver://<the-rest-of-the-connection-string>") \
  .option("tempDir", "wasbs://<your-container-name>@<your-storage-account-name>.blob.core.windows.net/<your-directory-name>") \
  .option("forwardSparkAzureStorageCredentials", "true") \
  .option("query", "select  * from table") \
  .load()

Шаг 3: отображение или отображение фрейма данных

df.show()
display(df)

введите описание изображения здесь

введите описание изображения здесь

Ссылка: Azure Databricks - Azure Synapse Analytics

person CHEEKATLAPRADEEP-MSFT    schedule 12.08.2020
comment
Если мой ответ полезен для вас, вы можете принять его как ответ (щелкните галочку рядом с ответом, чтобы переключить его с серого на заполненный). Это может быть полезно для других членов сообщества. Спасибо. - person CHEEKATLAPRADEEP-MSFT; 17.08.2020
comment
спасибо за подсказку, я проверил полную трассировку стека, и проблема была связана с правами пользователя входа в DWH. - person Addy; 21.08.2020