Чтение данных из хранилища BLOB-объектов Azure в блоки данных Azure с помощью / mnt / - PullRequest
0 голосов
/ 15 марта 2019

Я успешно смонтировал хранилище больших двоичных объектов в Databricks и вижу установленную точку монтирования при запуске dbutils.fs.ls("/mnt/").Это имеет size=0 - неясно, ожидается ли это или нет.

Когда я пытаюсь запустить dbutils.fs.ls("/mnt/<mount-name>"), я получаю эту ошибку: java.io.FileNotFoundException: / is not found

Когда я пытаюсь написатьпростой файл для моего смонтированного большого двоичного объекта с dbutils.fs.put("/mnt/<mount-name>/1.txt", "Hello, World!", True), я получаю следующую ошибку (сокращено для удобства чтения):

ExecutionError: An error occurred while calling z:com.databricks.backend.daemon.dbutils.FSUtils.put. : shaded.databricks.org.apache.hadoop.fs.azure.AzureException: java.util.NoSuchElementException: An error occurred while enumerating the result, check the original exception for details.
...
Caused by: com.microsoft.azure.storage.StorageException: The specified resource does not exist.

Все данные находятся в корне контейнера Blob, поэтому я не определил ни одногоструктуры папок в коде dbutils.fs.mount.

мышление смайликов

1 Ответ

0 голосов
/ 18 марта 2019

Решение заключается в том, чтобы убедиться, что вы используете «правильную» часть вашей подписи общего доступа (SAS).Когда SAS сгенерирован, вы обнаружите множество различных его частей, которые вы можете использовать - он, вероятно, будет отправлен вам как одна длинная строка соединения, например:

BlobEndpoint=https://<storage-account>.blob.core.windows.net/;QueueEndpoint=https://<storage-account>.queue.core.windows.net/;FileEndpoint=https://<storage-account>.file.core.windows.net/;TableEndpoint=https://<storage-account>.table.core.windows.net/;SharedAccessSignature=sv=<date>&ss=nwrt&srt=sco&sp=rsdgrtp&se=<datetime>&st=<datetime>&spr=https&sig=<long-string>

Когда вы определяете свое монтированиеукажите значение клавиши SharedAccessSignature, например:

sv=<date>&ss=nwrt&srt=sco&sp=rsdgrtp&se=<datetime>&st=<datetime>&spr=https&sig=<long-string>
...