Невозможно скопировать файл dbfs в кластер выпуска сообщества databricks. FileNotFoundError: [Errno 2] Нет такого файла или каталога:

Попытка прочитать файл журнала изменений в кластере выпуска сообщества databricks. (версия databricks-7.2)

df=spark.range(100).toDF("id")
df.show()
df.repartition(1).write.mode("append").format("delta").save("/user/delta_test")

with open('/user/delta_test/_delta_log/00000000000000000000.json','r')  as f:
  for l in f:
    print(l)

Getting file not found error:

FileNotFoundError: [Errno 2] No such file or directory: '/user/delta_test/_delta_log/00000000000000000000.json'
---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<command-1759925981994211> in <module>
----> 1 with open('/user/delta_test/_delta_log/00000000000000000000.json','r')  as f:
      2   for l in f:
      3     print(l)

FileNotFoundError: [Errno 2] No such file or directory: '/user/delta_test/_delta_log/00000000000000000000.json'

Я пробовал добавить /dbfs/,dbfs:/ ничего не получилось, по-прежнему возникает такая же ошибка.

with open('/dbfs/user/delta_test/_delta_log/00000000000000000000.json','r')  as f:
  for l in f:
    print(l)

Но используя dbutils.fs.head я смог прочитать файл.

dbutils.fs.head("/user/delta_test/_delta_log/00000000000000000000.json")

'{"commitInfo":{"timestamp":1598224183331,"userId":"284520831744638","userName":"","operation":"WRITE","operationParameters":{"mode":"Append","partitionBy":"[]"},"notebook":{"","isolationLevel":"WriteSerializable","isBlindAppend":true,"operationMetrics":{"numFiles":"1","numOutputBytes":"1171","numOutputRows":"100"}}}\n{"protocol":{"minReaderVersi...etc

Как мы можем читать /cat a dbfs file в базе данных с python open method?

0 ответов

По умолчанию эти данные находятся в DBFS, и ваш код должен понимать, как получить к ним доступ. Python не знает об этом - вот почему он терпит неудачу.

Но есть обходной путь - DBFS монтируется к узлам на /dbfs, поэтому вам просто нужно добавить его к имени файла: вместо /user/delta_test/_delta_log/00000000000000000000.json, используйте /dbfs/user/delta_test/_delta_log/00000000000000000000.json

обновление: в версии сообщества, в DBR 7+, это крепление отключено. Обходным путем было бы использовать dbutils.fs.cp команда для копирования файла из DBFS в локальный каталог, например, /tmp, или же /var/tmp, а затем прочтите его.

Другие вопросы по тегам