#filesystems #databricks
Вопрос:
У меня есть несколько файлов, расположенных внутри %sh ls
, и я хотел бы переместить эти файлы в файловую систему баз данных (сделать их видимыми внутри %fs ls
).
Кто-нибудь из вас знает , в чем разница между %sh ls
и %fs ls
, и как мне перемещать файлы между ними?
Я знаю, что мы можем использовать dbutils.fs.cp
для перемещения файлов, которые уже находятся в %fs ls
нужном месте.
Любая помощь или указания приветствуются.
Ответ №1:
когда вы выполняете команды через %sh
, они выполняются только на узле драйвера и отображают содержимое на этой машине. Когда вы это делаете %fs ls
, он по умолчанию показывает содержимое DBFS (файловой системы Databricks), но он также может отображать локальное содержимое, если вы добавите file://
префикс к пути.
Вы можете копировать или перемещать файлы файлы следующим образом:
- Использование
dbutils.fs.cp("file:///local-path", "dbfs-path")
(илиdbutils.fs.mv
) - Используя так называемое крепление предохранителя, которое монтирует DBFS на локальные машины — вам нужно добавить
/dbfs/
префикс к пути, который вы хотите иметь в DBFS, например/dbfs/FileStore/....
(если вы используете Community edition с DBR >= 7.x, то это может не сработать, поэтому у вас есть только первый метод)
P.S. Более подробную информацию вы можете найти в документации.
Комментарии:
1. еще один отличный ответ. есть какие-нибудь намеки на то, где находятся файлы репо (DevOps)? в настоящее время я использую %sh и не могу их видеть
2. если вы говорите о файлах репозиториев, то они находятся в самой рабочей области, это не настоящие файлы.
3. ах, теперь я лучше понимаю ваши предыдущие комментарии. рад видеть, какие функции используются в этом случае использования;
import from my_module
будет очень полезно.