Udostępnij za pośrednictwem


Opracowywanie kodu w notesach usługi Databricks

Na tej stronie opisano sposób tworzenia kodu w notesach usługi Databricks, w tym autouzupełniania, automatycznego formatowania języków Python i SQL, łączenia języków Python i SQL w notesie oraz śledzenia historii wersji notesu.

Aby uzyskać więcej informacji na temat zaawansowanych funkcji dostępnych w edytorze, takich jak autouzupełnianie, wybór zmiennych, obsługa wielu kursorów i porównania obok siebie, zobacz Nawigacja po notatniku i edytorze plików Databricks.

Gdy używasz notesu lub edytora plików, asystent usługi Databricks jest dostępny, aby ułatwić generowanie, objaśnienie i debugowanie kodu. Aby uzyskać więcej informacji, zobacz Use Databricks Assistant (Korzystanie z asystenta usługi Databricks).

Notesy usługi Databricks obejmują również wbudowany interaktywny debuger notesów języka Python. Zobacz Debugowanie notesów.

Modularyzacja kodu

Ważne

Ta funkcja jest dostępna w publicznej wersji zapoznawczej.

W środowisku Databricks Runtime 11.3 LTS i nowszym można tworzyć pliki kodu źródłowego i zarządzać nimi w obszarze roboczym usługi Azure Databricks, a następnie importować te pliki do notesów zgodnie z potrzebami.

Aby uzyskać więcej informacji na temat pracy z plikami kodu źródłowego, zobacz Udostępnianie kodu między notesami usługi Databricks i Praca z modułami python i R.

Formatowanie komórek kodu

Usługa Azure Databricks udostępnia narzędzia, które umożliwiają szybkie i łatwe formatowanie kodu Python i SQL w komórkach notesu. Te narzędzia zmniejszają nakład pracy, aby zachować formatowanie kodu i pomóc w wymuszaniu tych samych standardów kodowania w notesach.

biblioteka formaterów języka Python

Ważne

Ta funkcja jest dostępna w publicznej wersji zapoznawczej.

Usługa Azure Databricks obsługuje formatowanie kodu w języku Python przy użyciu czerni w notesie. Notes musi być dołączony do klastra z zainstalowanymi pakietami black języka Python.tokenize-rt

W środowisku Databricks Runtime 11.3 LTS i nowszym preinstaluje black usługę Azure Databricks i tokenize-rt. Możesz użyć formatującego bezpośrednio bez konieczności instalowania tych bibliotek.

W środowisku Databricks Runtime 10.4 LTS i poniżej należy zainstalować black==22.3.0 interfejs PyPI w tokenize-rt==4.2.1 notesie lub klastrze, aby używać formatnika języka Python. W notesie można uruchomić następujące polecenie:

%pip install black==22.3.0 tokenize-rt==4.2.1

lub zainstaluj bibliotekę w klastrze.

Aby uzyskać więcej informacji na temat instalowania bibliotek, zobacz Zarządzanie środowiskiem języka Python.

W przypadku plików i notesów w folderach Usługi Git usługi Databricks można skonfigurować formater języka Python na pyproject.toml podstawie pliku. Aby użyć tej funkcji, utwórz pyproject.toml plik w katalogu głównym folderu Git i skonfiguruj go zgodnie z formatem konfiguracji Black. Edytuj sekcję [tool.black] w pliku . Konfiguracja jest stosowana podczas formatowania dowolnego pliku i notesu w tym folderze Git.

Jak sformatować komórki Python i SQL

Aby sformatować kod, musisz mieć uprawnienie CAN EDIT w notesie.

Usługa Azure Databricks używa biblioteki Gethue/sql-formatter do formatowania SQL i czarnego formatera kodu dla języka Python.

Formater można wyzwolić w następujący sposób:

  • Formatowanie pojedynczej komórki

    • Skrót klawiaturowy: naciśnij Cmd+Shift+F.
    • Menu kontekstowe polecenia:
      • Formatuj komórkę SQL: wybierz Format SQL z menu kontekstowego komórki SQL. Ten element menu jest widoczny tylko w komórkach notesu SQL lub w przypadku %sqlmagii języka.
      • Formatuj komórkę języka Python: wybierz pozycję Formatuj język Python w menu rozwijanym kontekstowym polecenia komórki języka Python. Ten element menu jest widoczny tylko w komórkach notesu języka Python lub w przypadku %pythonmagii języka.
    • Menu edytowania notatnika : wybierz komórkę Python lub SQL, a następnie wybierz Edytuj formatowanie komórki .
  • Formatowanie wielu komórek

    Zaznacz wiele komórek, a następnie wybierz Formatuj komórkę(i) > Edytuj. W przypadku zaznaczenia komórek więcej niż jednego języka sformatowane są tylko komórki SQL i Python. Obejmuje to te, które używają %sql i %python.

  • Formatowanie wszystkich komórek języka Python i SQL w notesie

    Wybierz pozycję Edytuj notes > Format. Jeśli notes zawiera więcej niż jeden język, sformatowane są tylko komórki SQL i Python. Obejmuje to te, które używają %sql i %python.

Ograniczenia formatowania kodu

  • wymusza standardy PEP 8 dla wcięcia 4-spacji. Wcięcie nie jest konfigurowalne.
  • Formatowanie osadzonych ciągów języka Python wewnątrz funkcji zdefiniowanej przez użytkownika SQL nie jest obsługiwane. Podobnie formatowanie ciągów SQL wewnątrz funkcji zdefiniowanej przez użytkownika języka Python nie jest obsługiwane.

Języki kodu w notesach

Ustaw język domyślny

Domyślny język notesu jest wyświetlany obok nazwy notesu.

Domyślny język notesu

Aby zmienić język domyślny, kliknij przycisk języka i wybierz nowy język z menu rozwijanego. Aby upewnić się, że istniejące polecenia nadal działają, polecenia poprzedniego języka domyślnego są automatycznie prefiksowane za pomocą polecenia magic języka.

Mieszanie języków

Domyślnie komórki używają domyślnego języka notesu. Język domyślny można zastąpić w komórce, klikając przycisk języka i wybierając język z menu rozwijanego.

Lista rozwijana języka komórek

Alternatywnie możesz użyć polecenia %<language> magic języka na początku komórki. Obsługiwane polecenia magic to: %python, , %r%scalai %sql.

Uwaga

Po wywołaniu polecenia magic języka polecenie jest wysyłane do środowiska REPL w kontekście wykonywania notesu. Zmienne zdefiniowane w jednym języku (a tym samym w rePL dla tego języka) nie są dostępne w repl innego języka. Listy REPL mogą współużytkować stan tylko za pośrednictwem zasobów zewnętrznych, takich jak pliki w systemie plików DBFS lub obiektów w magazynie obiektów.

Notesy obsługują również kilka pomocniczych poleceń magic:

  • %sh: umożliwia uruchamianie kodu powłoki w notesie. Aby zakończyć działanie komórki, jeśli polecenie powłoki ma stan zakończenia innego niż zero, dodaj -e opcję . To polecenie jest uruchamiane tylko w sterowniku platformy Apache Spark, a nie na pracownikach. Aby uruchomić polecenie powłoki na wszystkich węzłach, użyj skryptu init.
  • %fs: umożliwia korzystanie z dbutils poleceń systemu plików. Aby na przykład uruchomić polecenie dbutils.fs.ls, aby wyświetlić listę plików, możesz określić %fs ls zamiast tego. Aby uzyskać więcej informacji, zobacz Praca z plikami w usłudze Azure Databricks.
  • %md: umożliwia dołączenie różnych typów dokumentacji, w tym tekstu, obrazów i formuł matematycznych oraz równań. Zobacz następną sekcję.

Wyróżnianie składni SQL i autouzupełnianie w poleceniach języka Python

Wyróżnianie składni i autouzupełnianie SQL są dostępne w przypadku używania języka SQL wewnątrz polecenia języka Python, na przykład w poleceniu spark.sql .

Eksplorowanie wyników komórek SQL

W notesie usługi Databricks wyniki z komórki języka SQL są automatycznie udostępniane jako niejawna ramka danych przypisana do zmiennej _sqldf. Następnie możesz użyć tej zmiennej w dowolnym języku Python i komórkach SQL uruchamianych później, niezależnie od ich położenia w notesie.

Uwaga

Ta funkcja ma następujące ograniczenia:

  • Zmienna _sqldf nie jest dostępna w notesach korzystających z usługi SQL Warehouse na potrzeby obliczeń.
  • Używanie _sqldf w kolejnych komórkach języka Python jest obsługiwane w środowisku Databricks Runtime 13.3 lub nowszym.
  • Używanie _sqldf w kolejnych komórkach SQL jest obsługiwane tylko w środowisku Databricks Runtime 14.3 lub nowszym.
  • Jeśli zapytanie używa słów kluczowych CACHE TABLE lub UNCACHE TABLE, zmienna jest niedostępna _sqldf .

Poniższy zrzut ekranu przedstawia sposób _sqldf użycia w kolejnych komórkach języka Python i SQL:

ramka danych wyników sql

Ważne

Zmienna _sqldf jest ponownie przypisywana za każdym razem, gdy jest uruchamiana komórka SQL. Aby uniknąć utraty odwołania do określonego wyniku ramki danych, przed uruchomieniem następnej komórki SQL przypisz ją do nowej nazwy zmiennej:

Python

new_dataframe_name = _sqldf

SQL

ALTER VIEW _sqldf RENAME TO new_dataframe_name

Równoległe wykonywanie komórek SQL

Gdy polecenie jest uruchomione, a notes jest dołączony do klastra interaktywnego, możesz uruchomić komórkę SQL jednocześnie przy użyciu bieżącego polecenia. Komórka SQL jest wykonywana w nowej sesji równoległej.

Aby wykonać komórkę równolegle:

  1. Uruchom komórkę.

  2. Kliknij przycisk Uruchom teraz. Komórka jest natychmiast wykonywana.

    Uruchamianie komórki SQL równolegle z bieżącą uruchomioną komórką

Ponieważ komórka jest uruchamiana w nowej sesji, widoki tymczasowe, funkcje UDF oraz niejawna ramka danych języka Python (_sqldf) nie są obsługiwane w przypadku komórek wykonywanych równolegle. Ponadto podczas równoległego wykonywania są używane domyślne nazwy wykazu i bazy danych. Jeśli kod odwołuje się do tabeli w innym wykazie lub bazie danych, musisz określić nazwę tabeli przy użyciu przestrzeni nazw na poziomie trzech poziomów (catalog.schema.table).

Wykonywanie komórek SQL w usłudze SQL Warehouse

Polecenia SQL można uruchamiać w notesie usługi Databricks w usłudze SQL Warehouse — typie obliczeń zoptymalizowanych pod kątem analizy SQL. Zobacz Używanie notesu z usługą SQL Warehouse.