Всякий раз, когда я пытаюсь создать таблицу, используя приведенный ниже код, для подключенного диска в ADLS Gen 2, я получаю сообщение об ошибке:
No parent external location found for path
%sql
CREATE TABLE IF NOT EXISTS testtable USING csv OPTIONS (path "abfss://mnt/lake/RAW/circuits.csv");
Однако когда я пытаюсь создать таблицу, используя полный путь, включая имя учетной записи хранения, у меня не возникает проблем:
%sql
CREATE TABLE IF NOT EXISTS event5 USING csv OPTIONS (path "abfss://[email protected]/RAW/circuits.csv", inferSchema=True, header=True);
Кроме того, если я попытаюсь создать таблицу без добавления abfss, я получу ошибку:
AnalysisException: [RequestId=b845fe0c-0788-4ead-82fd-8c9a686aa2ef ErrorClass=INVALID_PARAMETER_VALUE] GenerateTemporaryPathCredential uri mnt/lake/RAW/allraces.csv is not a valid URI. Error message: INVALID_PARAMETER_VALUE: Missing cloud file system scheme.
%sql
CREATE TABLE IF NOT EXISTS testtable USING csv OPTIONS (path "mnt/lake/RAW/circuits.csv");
Что интересно, у меня нет проблем с чтением одного и того же файла по тому же пути:
test = spark.read.csv("/mnt/lake/RAW/circuits.csv", inferSchema=True, header=True)
Тот факт, что я могу прочитать файл, говорит о том, что я успешно смонтировал диск. Это видно из вывода display(dbutils.fs.mounts())
Самое странное, что когда я пытаюсь создать ту же таблицу из своего Databricks Community Edition, используя тот же подключенный диск, у меня не возникает проблем, см. ниже. Кажется, у меня возникла проблема с Azure Databricks.
Есть предположения?
Просто хотел обновить вопрос, чтобы показать, что мой тест учетной записи хранения ADLS прошел успешно. Поэтому я действительно не понимаю, почему я получаю ошибку:
Надеюсь, что это ответ на ваш вопрос.
Привет @DileepRajNarayanThumula, я не уверен, что понимаю, что вы имеете в виду, когда упоминаете «после /mnt укажите точку монтирования, а не имя контейнера, который вы уже смонтировали до контейнера»?
Можете ли вы предоставить свой код монтирования?
Для пути не найдено родительское внешнее расположение
Вышеуказанная ОШИБКА указывает на то, что система не может найти указанный путь.
AnalysisException: [RequestId=b845fe0c-0788-4ead-82fd-8c9a686aa2efErrorClass=INVALID_PARAMETER_VALUE] GenerateTemporaryPathCredentialuri mnt/lake/RAW/allraces.csv не является допустимым URI. Сообщение об ошибке: INVALID_PARAMETER_VALUE: отсутствует схема облачной файловой системы.
Сообщение об ошибке указывает на то, что в указанном вами пути отсутствует схема файловой системы. В Databricks при чтении данных из Azure Data Lake Storage необходимо указать правильную схему для конкретной службы облачного хранилища.
Я попробовал следующий подход:
display(dbutils.fs.mounts())
Полученные результаты:
/mnt/raw abfss://[email protected]/
Поскольку я уже смонтировал папку raw. Итак, теперь я создал новую папку Lake, а затем создал таблицу, используя приведенную ниже таблицу.
CREATE TABLE IF NOT EXISTS event5 USING csv OPTIONS (path "/mnt/raw/lake/Customer.csv", inferSchema=True, header=True)
Полученные результаты:
[FileInfo(path='dbfs:/mnt/raw/lake/Customer.csv', name='Customer.csv', size=132, modificationTime=1721132445000)]
df = spark.read.format("csv") \
.option("header", "true") \
.option("inferSchema", "true") \
.load("dbfs:/mnt/raw/lake/Customer.csv")
df.show()
Полученные результаты:
+---+----------------+--------------------+------------+
| ID| Name| Email|LastModified|
+---+----------------+--------------------+------------+
| 1|John Doe Updated|[email protected]| 2023-05-24|
| 4| Lisa Anderson|lisa.anderson@exa...| 2023-05-22|
+---+----------------+--------------------+------------+
@Patterson Пожалуйста, проверьте решение и дайте мне знать, помогло ли оно вам.
Ух ты! Я только что попробовал ваше решение, и оно оказалось успешным. Спасибо @Dileep
В пути к файлу после /mnt укажите точку монтирования, а не имя контейнера, который вы уже смонтировали, до контейнера.