Ошибка создания блоков данных: AnalysisException: [ErrorClass=INVALID_PARAMETER_VALUE] Отсутствует схема облачной файловой системы

Когда я пытаюсь создать или сохранить таблицу в каком-либо месте в Azure Datalake Gen 2, используя пример кода:

%sql
CREATE TABLE IF NOT EXISTS events USING parquet OPTIONS (path "/mnt/training/ecommerce/events/events.parquet");

Я получаю ошибку:

[RequestId=xxxx-xxxx-6789-8u98-de33192c16e0 ErrorClass=INVALID_PARAMETER_VALUE] GenerateTemporaryPathCredential uri /mnt/training/ecommerce/events не является допустимым URI. Сообщение об ошибке: INVALID_PARAMETER_VALUE: отсутствует схема облачной файловой системы.

Я провел небольшое исследование и наткнулся на следующее предложение от Databricks:

В Databricks при чтении данных из облачного хранилища, такого как AWS S3, Azure Data Lake Storage или Google Cloud Storage, необходимо включить схема, соответствующая облачному хранилищу.

I appreciate that is a correct suggestion, however I have mounted the ADLS Storage account with Databricks, and I'm able to read files from the ADLS account using df = spark.read.csv("/mnt/training/ecommerce/events/events.csv", inferSchema=True, header=True)

Есть предположения?

Я попробовал решение, предложенное @Bhavani, но, к сожалению, оно не сработало. Я добавил новое внешнее местоположение, как было предложено:

Когда я пытаюсь создать таблицу с помощью подключенного диска, я получаю ту же ошибку:

Чтобы показать, что диск подключен, см. изображение ниже:

Самое удивительное, что я могу читать с подключенного диска, см. изображение:

Последнее обновление, показывающее, что подключение к подключенному диску ADLS Gen выполнено успешно, см. изображение. Итак, я не уверен, почему я все еще получаю сообщение об ошибке:

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
175
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
INVALID_PARAMETER_VALUE] GenerateTemporaryPathCredential uri /mnt/files/Iris.parquet is not a valid URI. Error message: INVALID_PARAMETER_VALUE: Missing cloud file system scheme.

При работе с Azure Data Lake Storage Gen2 в среде Synapse или Databricks необходимо указать схему (abfss:// для ADLS Gen2). Вы указали смонтированный путь, что может быть причиной возникновения вышеуказанной ошибки. Вместо подключения учетной записи ADLS Gen2 вы можете выполнить следующую процедуру:

Предоставьте роль участника данных BLOB-объекта хранилища для управляемого удостоверения блоков данных Azure. Перейдите на страницу «Каталог» в рабочей области блоков данных и нажмите + Выберите «Добавить внешнее расположение», как показано ниже:

Настройте детали при создании нового внешнего местоположения, как показано ниже:

Создайте внешнее местоположение. После успешного создания внешнего местоположения вы сможете создать таблицу, используя приведенный ниже код:

%sql
CREATE  TABLE  IF  NOT  EXISTS events USING  parquet  OPTIONS (path  "abfss://<containerName>@<storageAccountName>.dfs.core.windows.net/<filepath>");

Вы можете успешно запросить таблицу, как показано ниже:

обновлять:

Вы можете использовать приведенный ниже код для создания таблицы с подключенной учетной записью хранения:

%sql
CREATE TABLE events1 AS
SELECT
  *
FROM
  read_files(
    '/mnt/<mountName>/<pathToParquetFile>/Iris.parquet',
    header => "True"
  ); 

Таблица будет успешно создана.

Привет @Bhavani, спасибо, что связались с нами. Я попробую ваше предложение. Однако мне никогда раньше не приходилось делать ничего подобного. Я не получил эту ошибку, когда создал экземпляр Databricks в мае 2024 года. Я создал новый экземпляр Databricks несколько дней назад, и с момента создания нового экземпляра Databricks я получаю эту ошибку. Внесла ли Databricks какие-то фундаментальные изменения?

Patterson 10.07.2024 13:27

@Паттерсон, я обновил свой ответ, можешь один раз проверить?

Bhavani 10.07.2024 13:50

Привет @Bhavani, спасибо за твои новости. Я проверю это в ближайшее время и сообщу вам, как у меня дела. Спасибо

Patterson 10.07.2024 14:59

Привет @Bhavani, я обновил вопрос. Я попробовал ваше предложение, но оно не удалось. Можете ли вы дать мне знать, если я что-то упускаю?

Patterson 11.07.2024 21:33

Используйте путь в формате abfss://<containerName>@<storageAccountName>.dfs.core.window‌​s.net/<filepath> при создании таблицы, как указано в моем решении. Если вы хотите использовать смонтированный путь, попробуйте обновленное решение. .

Bhavani 12.07.2024 05:35

Привет @Bhavani, еще раз спасибо, что связались с нами. Теперь я могу создать таблицу, используя «abfss://<containerName>@<storageAccountName>.dfs.core.windo‌​ws.net/<filepath>». Однако я получаю новую ошибку. Поэтому я думаю, что задам новый вопрос — возможно, вы сможете мне помочь с новым вопросом. Спасибо

Patterson 12.07.2024 11:41

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