Файловое хранилище Databricks = 0 - PullRequest
0 голосов
/ 05 октября 2019

Я только что запустил это:

dbutils.fs.ls("dbfs:/FileStore/")

Я вижу этот результат:

[FileInfo(path='dbfs:/FileStore/import-stage/', name='import-stage/', size=0),
 FileInfo(path='dbfs:/FileStore/jars/', name='jars/', size=0),
 FileInfo(path='dbfs:/FileStore/job-jars/', name='job-jars/', size=0),
 FileInfo(path='dbfs:/FileStore/plots/', name='plots/', size=0),
 FileInfo(path='dbfs:/FileStore/tables/', name='tables/', size=0)]

Разве не должно быть что-то в хранилище файлов? У меня есть сотни ГБ данных в озере. У меня возникают всевозможные проблемы с получением блоков данных для поиска этих файлов. Когда я использую фабрику данных Azure, все работает отлично. Это начинает сводить меня с ума!

Например, когда я запускаю это:

dbutils.fs.ls("/mnt/rawdata/2019/06/28/parent/")

Я получаю это сообщение:

java.io.FileNotFoundException: File/6199764716474501/mnt/rawdata/2019/06/28/parent does not exist.

У меня десятки тысячфайлы в моем озере! Я не могу понять, почему я не могу получить список этих файлов !!

1 Ответ

1 голос
/ 30 октября 2019

В Azure Databricks это ожидаемое поведение.

  • Для файлов отображается фактический размер файла.
  • Для каталогов отображается размер = 0

Пример: В dbfs: / FileStore / у меня три файла показаны белым цветом, а три папки показаны вСиний цвет. Проверка размера файла с помощью блоков данных cli.

dbfs ls -l dbfs:/FileStore/

enter image description here

При проверке результата с помощью dbutils выполните следующие действия:

dbutils.fs.ls("dbfs:/FileStore/")

enter image description here

Важный момент, который следует помнить при чтении файлов размером более 2 ГБ:

  • Поддержка только файлов менее 2 ГБпо размеру. Если вы используете локальные файловые интерфейсы ввода / вывода для чтения или записи файлов размером более 2 ГБ, вы можете увидеть поврежденные файлы. Вместо этого обращайтесь к файлам размером более 2 ГБ с помощью API-интерфейсов командной строки DBFS, dbutils.fs или Spark или используйте папку / dbfs / ml, описанную в Локальных файловых API-интерфейсах, для углубленного изучения.
  • Если вы пишете файл, используя локальныйAPI-интерфейсы файлового ввода-вывода, а затем сразу же попытайтесь получить к нему доступ с помощью интерфейса командной строки DBFS, dbutils.fs или Spark API, . Вы можете столкнуться с FileNotFoundException, файлом размера 0 или устаревшим содержимым файла . Это ожидается, потому что операционная система кэширует записи по умолчанию. Чтобы принудительно записать эти записи в постоянное хранилище (в нашем случае DBFS), используйте стандартную синхронизацию системных вызовов Unix.

Существует несколько способов решения этой проблемы. Вы можете оформить заказ на аналогичную SO ветку, на которую мне ответил.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...