Praca z plikami w usłudze Azure Databricks
Usługa Azure Databricks udostępnia 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
- Utitlities 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
- Pandy
- Narzędzia do zarządzania plikami i przetwarzania plików systemu operacyjnego Python
Ważne
Operacje na plikach wymagające dostępu FUSE do danych nie mogą uzyskać 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 nie obsługuje programu FUSE dla woluminów wykazu aparatu Unity ani plików obszarów roboczych w obliczeniach skonfigurowanych z trybem dostępu pojedynczego użytkownika lub klastrami bez wykazu aparatu Unity. 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.
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 Tworzenie woluminów i praca z nimi.
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 zestaw plików 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.
Ograniczenia plików obszaru roboczego
Pliki obszaru roboczego mają następujące ograniczenia:
Rozmiar pliku obszaru roboczego jest ograniczony do 500 MB z interfejsu użytkownika. Maksymalny rozmiar pliku dozwolony podczas zapisywania z klastra wynosi 256 MB.
Jeśli przepływ pracy używa kodu źródłowego znajdującego się w zdalnym repozytorium Git, nie można zapisać w bieżącym katalogu ani zapisać przy użyciu ścieżki względnej. Zapisywanie danych w innych opcjach lokalizacji.
Nie można używać
git
poleceń podczas zapisywania w plikach obszaru roboczego. Tworzenie katalogów.git
nie jest dozwolone w plikach obszaru roboczego.Istnieje ograniczona obsługa operacji na plikach obszaru roboczego z zasobów obliczeniowych bezserwerowych.
Funkcje wykonawcze nie mogą zapisywać w plikach obszaru roboczego.
Symlinki nie są obsługiwane.
Nie można uzyskać dostępu do plików obszaru roboczego z funkcji zdefiniowanych przez użytkownika (UDF) w klastrach z trybem dostępu współdzielonego.
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
Magazyn obiektów w chmurze nie obsługuje przekazywania poświadczeń.
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 system plików usługi Databricks (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 szyfralny dołączony do węzła sterownika to magazyn blokowy z natywnym 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. Jeśli musisz przenieść dane z systemu plików sterowników do woluminów wykazu aparatu Unity, możesz skopiować 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>
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla