Невозможно скопировать файл 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
, а затем прочтите его.