Всякий раз, когда я пытаюсь создать таблицу, используя приведенный ниже код, для подключенного диска в 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 прошел успешно. Поэтому я действительно не понимаю, почему я получаю ошибку:
Для пути не найдено родительское внешнее расположение
Вышеуказанная ОШИБКА указывает на то, что система не может найти указанный путь.
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|
+---+----------------+--------------------+------------+