Когда я пытаюсь создать или сохранить таблицу в каком-либо месте в 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 выполнено успешно, см. изображение. Итак, я не уверен, почему я все еще получаю сообщение об ошибке:
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, спасибо за твои новости. Я проверю это в ближайшее время и сообщу вам, как у меня дела. Спасибо
Привет @Bhavani, я обновил вопрос. Я попробовал ваше предложение, но оно не удалось. Можете ли вы дать мне знать, если я что-то упускаю?
Используйте путь в формате abfss://<containerName>@<storageAccountName>.dfs.core.windows.net/<filepath> при создании таблицы, как указано в моем решении. Если вы хотите использовать смонтированный путь, попробуйте обновленное решение. .
Привет @Bhavani, еще раз спасибо, что связались с нами. Теперь я могу создать таблицу, используя «abfss://<containerName>@<storageAccountName>.dfs.core.windows.net/<filepath>». Однако я получаю новую ошибку. Поэтому я думаю, что задам новый вопрос — возможно, вы сможете мне помочь с новым вопросом. Спасибо
Привет @Bhavani, спасибо, что связались с нами. Я попробую ваше предложение. Однако мне никогда раньше не приходилось делать ничего подобного. Я не получил эту ошибку, когда создал экземпляр Databricks в мае 2024 года. Я создал новый экземпляр Databricks несколько дней назад, и с момента создания нового экземпляра Databricks я получаю эту ошибку. Внесла ли Databricks какие-то фундаментальные изменения?