Praca z plikami w usłudze Azure Databricks
Usługa Azure Databricks ma wiele narzędzi i interfejsów API do interakcji z plikami w następujących lokalizacjach:
- Woluminy wykazu aparatu Unity
- Pliki obszaru roboczego
- Magazyn obiektów w chmurze
- Instalacja systemu PLIKÓW DBFS i katalog główny systemu plików DBFS
- Magazyn efemeryczny dołączony do węzła sterownika klastra
Ten artykuł zawiera przykłady interakcji z plikami w tych lokalizacjach dla następujących narzędzi:
- Apache Spark
- Spark SQL i Databricks SQL
- Narzędzia systemu plików usługi Databricks (
dbutils.fs
lub%fs
) - Interfejs wiersza polecenia usługi Databricks
- Interfejs API REST usługi Databricks
- Polecenia powłoki Bash (
%sh
) - Instalowanie biblioteki o zakresie notesu przy użyciu polecenia
%pip
- Pandas
- Narzędzia do zarządzania plikami i przetwarzania plików systemu operacyjnego Python
Ważne
Operacje na plikach wymagające dostępu do danych FUSE nie mogą uzyskiwać bezpośredniego dostępu do magazynu obiektów w chmurze przy użyciu identyfikatorów URI. Usługa Databricks zaleca używanie woluminów wykazu aparatu Unity do konfigurowania dostępu do tych lokalizacji dla programu FUSE.
Język Scala obsługuje woluminy wykazu aparatu Unity i pliki obszarów roboczych w obliczeniach skonfigurowanych przy użyciu wykazu aparatu Unity i trybu dostępu współdzielonego. W przypadku obliczeń skonfigurowanych przy użyciu trybu dostępu pojedynczego użytkownika i środowiska Databricks Runtime 14.3 lub nowszego język Scala obsługuje program FUSE dla woluminów wykazu aparatu Unity i plików obszarów roboczych, z wyjątkiem podprocesów pochodzących z języka Scala, takich jak polecenie "cat /Volumes/path/to/file".!!
Scala.
Czy muszę podać schemat identyfikatora URI, aby uzyskać dostęp do danych?
Ścieżki dostępu do danych w usłudze Azure Databricks są zgodne z jednym z następujących standardów:
Ścieżki stylu identyfikatora URI zawierają schemat identyfikatora URI. W przypadku rozwiązań dostępu do danych natywnych dla usługi Databricks schematy identyfikatorów URI są opcjonalne w większości przypadków użycia. W przypadku bezpośredniego uzyskiwania dostępu do danych w magazynie obiektów w chmurze należy podać prawidłowy schemat identyfikatora URI dla typu magazynu.
Ścieżki stylu POSIX zapewniają dostęp do danych względem katalogu głównego sterownika (
/
). Ścieżki stylu POSIX nigdy nie wymagają schematu. Za pomocą woluminów wykazu aparatu Unity lub instalacji systemu plików DBFS można zapewnić dostęp w stylu POSIX do danych w magazynie obiektów w chmurze. Wiele struktur uczenia maszynowego i innych modułów języka Python systemu operacyjnego wymaga programu FUSE i może używać tylko ścieżek w stylu POSIX.
Praca z plikami w woluminach wykazu aparatu Unity
Usługa Databricks zaleca używanie woluminów wykazu aparatu Unity do konfigurowania dostępu do plików danych innych niż tabelaryczne przechowywane w magazynie obiektów w chmurze. Zobacz Co to są woluminy wykazu aparatu Unity?.
Narzędzie | Przykład |
---|---|
Apache Spark | spark.read.format("json").load("/Volumes/my_catalog/my_schema/my_volume/data.json").show() |
Spark SQL i Databricks SQL | SELECT * FROM csv.`/Volumes/my_catalog/my_schema/my_volume/data.csv`; LIST '/Volumes/my_catalog/my_schema/my_volume/'; |
Narzędzia systemu plików usługi Databricks | dbutils.fs.ls("/Volumes/my_catalog/my_schema/my_volume/") %fs ls /Volumes/my_catalog/my_schema/my_volume/ |
Interfejs wiersza polecenia usługi Databricks | databricks fs cp /path/to/local/file dbfs:/Volumes/my_catalog/my_schema/my_volume/ |
Interfejs API REST usługi Databricks | POST https://<databricks-instance>/api/2.1/jobs/create {"name": "A multitask job", "tasks": [{..."libraries": [{"jar": "/Volumes/dev/environment/libraries/logging/Logging.jar"}],},...]} |
Polecenia powłoki Bash | %sh curl http://<address>/text.zip -o /Volumes/my_catalog/my_schema/my_volume/tmp/text.zip |
Instalacje biblioteki | %pip install /Volumes/my_catalog/my_schema/my_volume/my_library.whl |
Pandy | df = pd.read_csv('/Volumes/my_catalog/my_schema/my_volume/data.csv') |
System operacyjny Python | os.listdir('/Volumes/my_catalog/my_schema/my_volume/path/to/directory') |
Uwaga
Schemat dbfs:/
jest wymagany podczas pracy z interfejsem wiersza polecenia usługi Databricks.
Ograniczenia woluminów
Woluminy mają następujące ograniczenia:
Zapisy bezpośrednie lub niesekwencyjne (losowe), takie jak zapisywanie plików Zip i Excel, nie są obsługiwane. W przypadku obciążeń bezpośredniego dołączania lub losowego zapisu najpierw wykonaj operacje na dysku lokalnym, a następnie skopiuj wyniki do woluminów wykazu aparatu Unity. Na przykład:
# python import xlsxwriter from shutil import copyfile workbook = xlsxwriter.Workbook('/local_disk0/tmp/excel.xlsx') worksheet = workbook.add_worksheet() worksheet.write(0, 0, "Key") worksheet.write(0, 1, "Value") workbook.close() copyfile('/local_disk0/tmp/excel.xlsx', '/Volumes/my_catalog/my_schema/my_volume/excel.xlsx')
Pliki rozrzedłe nie są obsługiwane. Aby skopiować pliki rozrzedłe, użyj polecenia
cp --sparse=never
:$ cp sparse.file /Volumes/my_catalog/my_schema/my_volume/sparse.file error writing '/dbfs/sparse.file': Operation not supported $ cp --sparse=never sparse.file /Volumes/my_catalog/my_schema/my_volume/sparse.file
Praca z plikami obszaru roboczego
Pliki obszaru roboczego usługi Databricks to pliki w obszarze roboczym, który nie jest notesem. Za pomocą plików obszaru roboczego można przechowywać dane i inne pliki zapisane obok notesów i innych zasobów obszaru roboczego oraz uzyskiwać do nich dostęp. Ponieważ pliki obszarów roboczych mają ograniczenia rozmiaru, usługa Databricks zaleca przechowywanie tylko małych plików danych w tym miejscu głównie na potrzeby programowania i testowania.
Narzędzie | Przykład |
---|---|
Apache Spark | spark.read.format("json").load("file:/Workspace/Users/<user-folder>/data.json").show() |
Spark SQL i Databricks SQL | SELECT * FROM json.`file:/Workspace/Users/<user-folder>/file.json`; |
Narzędzia systemu plików usługi Databricks | dbutils.fs.ls("file:/Workspace/Users/<user-folder>/") %fs ls file:/Workspace/Users/<user-folder>/ |
Interfejs wiersza polecenia usługi Databricks | databricks workspace list |
Interfejs API REST usługi Databricks | POST https://<databricks-instance>/api/2.0/workspace/delete {"path": "/Workspace/Shared/code.py", "recursive": "false"} |
Polecenia powłoki Bash | %sh curl http://<address>/text.zip -o /Workspace/Users/<user-folder>/text.zip |
Instalacje biblioteki | %pip install /Workspace/Users/<user-folder>/my_library.whl |
Pandy | df = pd.read_csv('/Workspace/Users/<user-folder>/data.csv') |
System operacyjny Python | os.listdir('/Workspace/Users/<user-folder>/path/to/directory') |
Uwaga
Schemat file:/
jest wymagany podczas pracy z narzędziami usługi Databricks, Apache Spark lub SQL.
Aby uzyskać ograniczenia dotyczące pracy z plikami obszarów roboczych, zobacz Ograniczenia.
Gdzie są usuwane pliki obszaru roboczego?
Usunięcie pliku obszaru roboczego powoduje wysłanie go do kosza. Możesz odzyskać lub trwale usunąć pliki z kosza przy użyciu interfejsu użytkownika.
Zobacz Usuwanie obiektu.
Praca z plikami w magazynie obiektów w chmurze
Usługa Databricks zaleca używanie woluminów wykazu aparatu Unity do konfigurowania bezpiecznego dostępu do plików w magazynie obiektów w chmurze. Jeśli zdecydujesz się na bezpośredni dostęp do danych w magazynie obiektów w chmurze przy użyciu identyfikatorów URI, musisz skonfigurować uprawnienia. Zobacz Zarządzanie lokalizacjami zewnętrznymi, tabelami zewnętrznymi i woluminami zewnętrznymi.
W poniższych przykładach używane są identyfikatory URI do uzyskiwania dostępu do danych w magazynie obiektów w chmurze:
Narzędzie | Przykład |
---|---|
Apache Spark | spark.read.format("json").load("abfss://container-name@storage-account-name.dfs.core.windows.net/path/file.json").show() |
Spark SQL i Databricks SQL | SELECT * FROM csv.`abfss://container-name@storage-account-name.dfs.core.windows.net/path/file.json`; LIST 'abfss://container-name@storage-account-name.dfs.core.windows.net/path'; |
Narzędzia systemu plików usługi Databricks | dbutils.fs.ls("abfss://container-name@storage-account-name.dfs.core.windows.net/path/") %fs ls abfss://container-name@storage-account-name.dfs.core.windows.net/path/ |
Interfejs wiersza polecenia usługi Databricks | Nieobsługiwane |
Interfejs API REST usługi Databricks | Nieobsługiwane |
Polecenia powłoki Bash | Nieobsługiwane |
Instalacje biblioteki | %pip install abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/library.whl |
Pandy | Nieobsługiwane |
System operacyjny Python | Nieobsługiwane |
Uwaga
Praca z plikami w instalacjach systemu plików DBFS i katalogu głównym systemu plików DBFS
Instalacja systemu PLIKÓW DBFS nie jest zabezpieczana przy użyciu wykazu aparatu Unity i nie jest już zalecana przez usługę Databricks. Dane przechowywane w katalogu głównym systemu plików DBFS są dostępne dla wszystkich użytkowników w obszarze roboczym. Usługa Databricks zaleca przechowywanie wszelkich poufnych lub produkcyjnych kodu lub danych w katalogu głównym systemu plików DBFS. Zobacz Co to jest DBFS?.
Narzędzie | Przykład |
---|---|
Apache Spark | spark.read.format("json").load("/mnt/path/to/data.json").show() |
Spark SQL i Databricks SQL | SELECT * FROM json.`/mnt/path/to/data.json`; |
Narzędzia systemu plików usługi Databricks | dbutils.fs.ls("/mnt/path") %fs ls /mnt/path |
Interfejs wiersza polecenia usługi Databricks | databricks fs cp dbfs:/mnt/path/to/remote/file /path/to/local/file |
Interfejs API REST usługi Databricks | POST https://<host>/api/2.0/dbfs/delete --data '{ "path": "/tmp/HelloWorld.txt" }' |
Polecenia powłoki Bash | %sh curl http://<address>/text.zip > /dbfs/mnt/tmp/text.zip |
Instalacje biblioteki | %pip install /dbfs/mnt/path/to/my_library.whl |
Pandy | df = pd.read_csv('/dbfs/mnt/path/to/data.csv') |
System operacyjny Python | os.listdir('/dbfs/mnt/path/to/directory') |
Uwaga
Schemat dbfs:/
jest wymagany podczas pracy z interfejsem wiersza polecenia usługi Databricks.
Praca z plikami w magazynie efemerycznym dołączonym do węzła sterownika
Magazyn efemeryczny dołączony do węzła sterownika to magazyn blokowy z wbudowanym dostępem do ścieżki opartej na systemie POSIX. Wszystkie dane przechowywane w tej lokalizacji znikają po zakończeniu lub ponownym uruchomieniu klastra.
Narzędzie | Przykład |
---|---|
Apache Spark | Nieobsługiwane |
Spark SQL i Databricks SQL | Nieobsługiwane |
Narzędzia systemu plików usługi Databricks | dbutils.fs.ls("file:/path") %fs ls file:/path |
Interfejs wiersza polecenia usługi Databricks | Nieobsługiwane |
Interfejs API REST usługi Databricks | Nieobsługiwane |
Polecenia powłoki Bash | %sh curl http://<address>/text.zip > /tmp/text.zip |
Instalacje biblioteki | Nieobsługiwane |
Pandy | df = pd.read_csv('/path/to/data.csv') |
System operacyjny Python | os.listdir('/path/to/directory') |
Uwaga
Schemat file:/
jest wymagany podczas pracy z narzędziami usługi Databricks.
Przenoszenie danych z magazynu efemerycznego do woluminów
Możesz chcieć uzyskać dostęp do danych pobranych lub zapisanych w magazynie efemerycznym przy użyciu platformy Apache Spark. Ponieważ magazyn efemeryczny jest dołączony do sterownika, a platforma Spark jest aparatem przetwarzania rozproszonego, nie wszystkie operacje mogą bezpośrednio uzyskiwać dostęp do danych tutaj. Załóżmy, że musisz przenieść dane z systemu plików sterownika do woluminów wykazu aparatu Unity. W takim przypadku można kopiować pliki przy użyciu poleceń magic lub narzędzi usługi Databricks, jak w następujących przykładach:
dbutils.fs.cp ("file:/<path>", "/Volumes/<catalog>/<schema>/<volume>/<path>")
%sh cp /<path> /Volumes/<catalog>/<schema>/<volume>/<path>
%fs cp file:/<path> /Volumes/<catalog>/<schema>/<volume>/<path>
Dodatkowe zasoby
Aby uzyskać informacje na temat przekazywania plików lokalnych lub pobierania plików internetowych do usługi Azure Databricks, zobacz Przekazywanie plików do usługi Azure Databricks.