Udostępnij za pośrednictwem


Tworzenie, wykonywanie notesów usługi Microsoft Fabric i zarządzanie nimi

Notes usługi Microsoft Fabric to podstawowy element kodu służący do tworzenia zadań platformy Apache Spark i eksperymentów uczenia maszynowego. Jest to interaktywna powierzchnia internetowa używana przez analityków danych i inżynierów danych do pisania kodu korzystającego z zaawansowanych wizualizacji i tekstu markdown. W tym artykule wyjaśniono, jak opracowywać notesy przy użyciu operacji komórek kodu i uruchamiać je.

Tworzenie notesów

Notesy składają się z komórek, które są poszczególnymi blokami kodu lub tekstu, które mogą być uruchamiane niezależnie lub jako grupa.

Udostępniamy rozbudowane operacje tworzenia notesów:

Dodawanie komórki

Istnieje wiele sposobów dodawania nowej komórki do notesu.

  1. Umieść kursor na przestrzeni między dwoma komórkami i wybierz pozycję Kod lub Markdown.

  2. Użyj skrótów w trybie polecenia. Naciśnij A , aby wstawić komórkę nad bieżącą komórką. Naciśnij B , aby wstawić komórkę poniżej bieżącej komórki.

Ustawianie języka podstawowego

Notesy sieci szkieletowej obsługują obecnie cztery języki platformy Apache Spark:

  • PySpark (Python)
  • Spark (Scala)
  • Spark SQL
  • SparkR

Język podstawowy dla nowych dodanych komórek można ustawić z listy rozwijanej na górnym pasku poleceń.

Używanie wielu języków

W notesie można używać wielu języków, określając polecenie magic języka na początku komórki. Możesz również przełączyć język komórek z selektora języka. W poniższej tabeli wymieniono magiczne polecenia przełączania języków komórek.

Zrzut ekranu przedstawiający przykład polecenia magic języka wprowadzonego na początku komórki.

Polecenie Magic Język Opis
%%pyspark Python Wykonaj zapytanie w języku Python względem kontekstu platformy Apache Spark.
%%spark Scala Wykonaj zapytanie Scala względem kontekstu platformy Apache Spark.
%%sql SparkSQL Wykonaj zapytanie SparkSQL względem kontekstu platformy Apache Spark.
%%html Html Wykonaj zapytanie HTML względem kontekstu platformy Apache Spark.
%%sparkr R Wykonaj zapytanie języka R względem kontekstu platformy Apache Spark.

IntelliSense w stylu IDE

Notesy sieci szkieletowej są zintegrowane z edytorem Monaco w celu wprowadzenia funkcji IntelliSense w stylu IDE do edytora komórek. Wyróżnianie składni, znacznik błędów i automatyczne uzupełnianie kodu ułatwia szybkie pisanie kodu i identyfikowanie problemów.

Funkcje funkcji IntelliSense są na różnych poziomach dojrzałości dla różnych języków. W poniższej tabeli przedstawiono obsługę usługi Fabric:

Języki Wyróżnianie składni Znacznik błędu składniowego Uzupełnianie kodu składniowego Uzupełnianie kodu zmiennej Uzupełnianie kodu funkcji systemu Uzupełnianie kodu funkcji użytkownika Inteligentne wcięcie Składanie kodu
PySpark (Python) Tak Tak Tak Tak Tak Tak Tak Tak
Spark (Scala) Tak Tak Tak Tak Tak Tak Tak Tak
SparkSQL Tak Tak Tak Tak Tak Nie Tak Tak
SparkR Tak Tak Tak Tak Tak Tak Tak Tak

Uwaga

Aby korzystać z uzupełniania kodu IntelliSense, musisz mieć aktywną sesję platformy Apache Spark.

Fragmenty kodu

Notesy sieci szkieletowej udostępniają fragmenty kodu, które ułatwiają łatwe pisanie często używanych wzorców kodu, takich jak:

  • Odczytywanie danych jako ramki danych platformy Apache Spark
  • Wykresy rysunkowe z biblioteką Matplotlib

Fragmenty kodu są wyświetlane w skrótów w stylu IDE IntelliSense mieszanej z innymi sugestiami. Zawartość fragmentu kodu jest zgodna z językiem komórek kodu. Dostępne fragmenty kodu można zobaczyć, wpisując fragment kodu. Możesz również wpisać dowolne słowo kluczowe, aby wyświetlić listę odpowiednich fragmentów kodu. Jeśli na przykład wpiszesz odczyt, zostanie wyświetlona lista fragmentów kodu do odczytu danych z różnych źródeł danych.

Animowany plik GIF fragmentów kodu.

Przeciągnij i upuść, aby wstawić fragmenty kodu

Użyj przeciągania i upuszczania, aby wygodnie odczytywać dane z eksploratora usługi Lakehouse. W tym miejscu obsługiwanych jest wiele typów plików; Można wykonywać operacje na plikach tekstowych, tabelach, obrazach itp. Możesz usunąć istniejącą komórkę lub nową komórkę. Notes generuje fragment kodu odpowiednio w celu wyświetlenia podglądu danych.

Animowany obraz GIF przeciągania i upuszczania w celu wstawiania fragmentów kodu.

Przeciągnij i upuść, aby wstawić obrazy

Przeciągnij i upuść, aby łatwo wstawić obrazy z przeglądarki lub komputera lokalnego do komórki markdown.

Animowany obraz GIF przeciągania i upuszczania w celu wstawiania obrazów.

Formatowanie komórki tekstowej za pomocą przycisków paska narzędzi

Aby ukończyć typowe akcje markdown, użyj przycisków formatowania na pasku narzędzi komórki tekstu.

Zrzut ekranu przedstawiający pasek narzędzi formatowania tekstu.

Cofnij lub wykonaj ponownie operacje komórek

Wybierz pozycję Cofnij lub Wykonaj ponownie albo naciśnij Z lub Shift+Z, aby odwołać najnowsze operacje komórek. Możesz cofnąć lub ponownie wykonać maksymalnie 10 najnowszych operacji historycznych komórek.

Zrzut ekranu przedstawiający opcje menu Cofnij i wykonaj ponownie.

Obsługiwane operacje cofania komórek:

  • Wstaw lub usuń komórkę. Operacje usuwania można odwołać, wybierając pozycję Cofnij (zawartość tekstowa jest przechowywana wraz z komórką).
  • Zmień kolejność komórki.
  • Przełącz parametr.
  • Przekonwertuj między komórką kodu a komórką języka Markdown.

Uwaga

Operacje tekstowe w komórce i operacje komentowania komórek kodu nie mogą zostać cofnięte. Możesz cofnąć lub ponownie wykonać maksymalnie 10 najnowszych operacji historycznych komórek.

Przenoszenie komórki

Możesz przeciągnąć z pustej części komórki i upuścić ją do żądanej pozycji.

Możesz również przenieść wybraną komórkę przy użyciu polecenia Przenieś w górę i Przenieś w dół na wstążce.

Zrzut ekranu przedstawiający opcje przenoszenia komórki.

Usuwanie komórki

Aby usunąć komórkę, wybierz przycisk usuń po prawej stronie komórki.

Możesz również użyć skrótów w trybie polecenia. Naciśnij Shift+D , aby usunąć bieżącą komórkę.

Zwiń dane wejściowe komórki

Wybierz wielokropek Więcej poleceń (...) na pasku narzędzi komórki i Ukryj dane wejściowe, aby zwinąć dane wejściowe bieżącej komórki. Aby rozwinąć ją ponownie, wybierz pozycję Pokaż dane wejściowe po zwinięciu komórki.

Zwiń dane wyjściowe komórki

Wybierz wielokropek Więcej poleceń (...) na pasku narzędzi komórek i Ukryj dane wyjściowe, aby zwinąć dane wyjściowe bieżącej komórki. Aby rozwinąć go ponownie, wybierz pozycję Pokaż dane wyjściowe po zwinięciu danych wyjściowych komórki.

Zabezpieczenia danych wyjściowych komórki

Za pomocą ról dostępu do danych usługi OneLake (wersja zapoznawcza) użytkownicy mogą konfigurować dostęp tylko do określonych folderów w usłudze Lakehouse podczas wykonywania zapytań notesu. Użytkownicy bez dostępu do folderu lub tabeli zobaczą nieautoryzowany błąd podczas wykonywania zapytania.

Ważne

Zabezpieczenia mają zastosowanie tylko podczas wykonywania zapytania, a wszystkie komórki notesu zawierające wyniki zapytania mogą być wyświetlane przez użytkowników, którzy nie mają uprawnień do bezpośredniego uruchamiania zapytań względem danych.

Blokowanie lub blokowanie komórki

Operacje blokady i blokowania komórek umożliwiają uruchamianie komórek tylko do odczytu lub zatrzymywania komórek kodu na poszczególnych podstawie.

Animowany obraz GIF blokady lub zablokowania komórki.

Scalanie i dzielenie komórek

Możesz użyć funkcji Scal z poprzednią komórką lub Scal z następną komórką, aby wygodnie scalić powiązane komórki.

Wybranie pozycji Podziel komórkę ułatwia podzielenie nieistotnych instrukcji na wiele komórek. Operacja dzieli kod zgodnie z położeniem wiersza kursora.

Zrzut ekranu przedstawiający wpis scalania podzielonych komórek.

Zawartość notesu

Wybranie pozycji Konspekt lub Spis treści spowoduje wyświetlenie pierwszego nagłówka markdown dowolnej komórki markdown w oknie paska bocznego na potrzeby szybkiej nawigacji. Pasek boczny Kontury można zmieniać rozmiar i zwijać, aby dopasować ekran w najlepszy możliwy sposób. Wybierz przycisk Zawartość na pasku poleceń notesu, aby otworzyć lub ukryć pasek boczny.

Zrzut ekranu przedstawiający, gdzie wybrać opcję Zawartość.

Składanie markdown

Opcja składania znaczników markdown umożliwia ukrycie komórek pod komórką markdown zawierającą nagłówek. Komórka markdown i jej ukryte komórki są traktowane tak samo jak zestaw ciągłych wielo zaznaczonych komórek podczas wykonywania operacji komórek.

Animowany plik GIF składania znaczników markdown.

Znajdowanie i zamienianie

Opcja znajdź i zamień może pomóc w dopasowaniu i zlokalizowaniu słów kluczowych lub wyrażeń w zawartości notesu. Można również łatwo zastąpić ciąg docelowy nowym ciągiem.

Zrzut ekranu przedstawiający okienko znajdowania i zastępowania.

Uruchamianie notesów

Komórki kodu można uruchamiać pojedynczo lub jednocześnie w notesie. Stan i postęp każdej komórki są wyświetlane w notesie.

Uruchamianie komórki

Istnieje kilka sposobów uruchamiania kodu w komórce.

  • Zatrzymaj wskaźnik myszy na komórce, którą chcesz uruchomić, i wybierz przycisk Uruchom komórkę lub naciśnij Ctrl+Enter.

  • Użyj skrótów w trybie polecenia. Naciśnij Shift+Enter , aby uruchomić bieżącą komórkę i wybrać następną komórkę. Naciśnij Alt+Enter , aby uruchomić bieżącą komórkę i wstawić nową komórkę.

Uruchamianie wszystkich komórek

Wybierz przycisk Uruchom wszystko, aby uruchomić wszystkie komórki w bieżącym notesie w sekwencji.

Uruchom wszystkie komórki powyżej lub poniżej

Rozwiń listę rozwijaną z pozycji Uruchom wszystko, a następnie wybierz pozycję Uruchom komórki powyżej , aby uruchomić wszystkie komórki powyżej bieżącej kolejności. Wybierz pozycję Uruchom komórki poniżej , aby uruchomić bieżącą komórkę i wszystkie komórki poniżej bieżącej sekwencji.

Zrzut ekranu przedstawiający opcje uruchom wszystkie menu.

Anuluj wszystkie uruchomione komórki

Wybierz pozycję Anuluj wszystko , aby anulować uruchomione komórki lub komórki oczekujące w kolejce.

Zatrzymywanie sesji

Zatrzymaj sesję anuluje uruchomione i oczekujące komórki i zatrzymuje bieżącą sesję. Możesz ponownie uruchomić nową sesję, wybierając ponownie opcję uruchamiania.

Zrzut ekranu przedstawiający, gdzie wybrać pozycję Anuluj wszystkie uruchomienia i zatrzymać sesję.

Przebieg odwołania

Odwołanie do uruchamiania notesu

Oprócz interfejsu API uruchamiania odwołań do notesów można również użyć %run <notebook name> polecenia magic, aby odwołać się do innego notesu w kontekście bieżącego notesu. Wszystkie zmienne zdefiniowane w notesie odniesienia są dostępne w bieżącym notesie. Polecenie %run magic obsługuje zagnieżdżone wywołania, ale nie obsługuje wywołań cyklicznych. Otrzymasz wyjątek, jeśli głębokość instrukcji jest większa niż pięć.

Przykład: %run Notebook1 { "parameterInt": 1, "parameterFloat": 2.5, "parameterBool": true, "parameterString": "abc" }.

Dokumentacja notesu działa zarówno w trybie interaktywnym, jak i potoku.

Uwaga

  • Polecenie %run obsługuje obecnie tylko notesy referencyjne w tym samym obszarze roboczym z bieżącym notesem.
  • Polecenie %run obsługuje obecnie tylko do czterech typów wartości parametrów: int, , floatbooli string. Operacja zamiany zmiennej nie jest obsługiwana.
  • Polecenie %run nie obsługuje zagnieżdżonego odwołania o głębokości większej niż pięć.

Odwołanie do uruchamiania skryptu

Polecenie %run umożliwia również uruchamianie plików języka Python lub SQL przechowywanych we wbudowanych zasobach notesu, dzięki czemu możesz wygodnie wykonywać pliki kodu źródłowego w notesie.

%run [-b/--builtin -c/--current] [script_file.py/.sql] [variables ...]

Opcje:

  • -b/-builtin: ta opcja wskazuje, że polecenie znajdzie i uruchomi określony plik skryptu z wbudowanych zasobów notesu.
  • -c/--current: Ta opcja gwarantuje, że polecenie zawsze używa wbudowanych zasobów bieżącego notesu, nawet jeśli bieżący notes jest przywołyyny przez inne notesy.

Przykłady:

  • Aby uruchomić script_file.py z wbudowanych zasobów: %run -b script_file.py

  • Aby uruchomić script_file.sql z wbudowanych zasobów: %run -b script_file.sql

  • Aby uruchomić script_file.py z wbudowanych zasobów z określonymi zmiennymi: %run -b script_file.py { "parameterInt": 1, "parameterFloat": 2.5, "parameterBool": true, "parameterString": "abc" }

Uwaga

Jeśli polecenie nie zawiera parametru -b/-builtin, spróbuje znaleźć i wykonać element notesu w tym samym obszarze roboczym, a nie we wbudowanych zasobach.

Przykład użycia dla zagnieżdżonego przypadku uruchomienia:

  • Załóżmy, że mamy dwa notesy.
    • Notebook1: zawiera script_file1.py we wbudowanych zasobach
    • Notebook2: zawiera script_file2.py we wbudowanych zasobach
  • Użyjmy notesu Notebook1 jako notesu głównego z zawartością: %run Notebook2.
  • Następnie w notesie Notebook2 instrukcja użycia to:
    • Aby uruchomić script_file1.py w notesie Notebook1 (główny notes), kod będzie: %run -b script_file1.py
    • Aby uruchomić script_file2.py w notesie Notebook2 (bieżącym notesie), kod będzie: %run -b -c script_file2.py

Eksplorator zmiennych

Notesy sieci szkieletowej udostępniają wbudowanego eksploratora zmiennych, który wyświetla listę nazw zmiennych, typów, długości i wartości w bieżącej sesji platformy Spark dla komórek PySpark (Python). Więcej zmiennych jest wyświetlanych automatycznie w miarę ich definiowania w komórkach kodu. Kliknięcie każdego nagłówka kolumny sortuje zmienne w tabeli.

Aby otworzyć lub ukryć eksploratora zmiennych, wybierz pozycję Zmienne w widoku wstążki notesu.

Zrzut ekranu przedstawiający miejsce otwierania zmiennych.

Uwaga

Eksplorator zmiennych obsługuje tylko język Python.

Wskaźnik stanu komórki

Stan wykonywania komórki krok po kroku jest wyświetlany pod komórką, aby ułatwić wyświetlenie bieżącego postępu. Po zakończeniu przebiegu komórki zostanie wyświetlone podsumowanie wykonania z łącznym czasem trwania i czasem zakończenia, które będzie przechowywane na potrzeby przyszłego odwołania.

Zrzut ekranu przedstawiający przykład szczegółów stanu uruchomienia komórki.

Wbudowany wskaźnik zadania platformy Apache Spark

Notes sieci szkieletowej jest oparty na platformie Apache Spark. Komórki kodu są wykonywane zdalnie w klastrze Apache Spark. Wskaźnik postępu zadania platformy Spark jest dostarczany z paskiem postępu w czasie rzeczywistym, który ułatwia zrozumienie stanu wykonywania zadania. Liczba zadań na każde zadanie lub etap pomaga zidentyfikować równoległy poziom zadania platformy Spark. Możesz również przejść do szczegółów interfejsu użytkownika platformy Spark określonego zadania (lub etapu), wybierając link w nazwie zadania (lub etapu).

Możesz również znaleźć dziennik na poziomie komórki w czasie rzeczywistym obok wskaźnika postępu, a diagnostyka może zapewnić przydatne sugestie ułatwiające uściślanie i debugowanie kodu.

Zrzut ekranu przedstawiający szczegóły postępu zadań platformy Spark.

W obszarze Więcej akcji można łatwo przejść do strony szczegółów aplikacji platformy Spark i strony internetowego interfejsu użytkownika platformy Spark.

Zrzut ekranu przedstawiający szczegóły większej liczby akcji.

Redagowanie wpisów tajnych

Aby zapobiec przypadkowemu wyciekowi poświadczeń podczas uruchamiania notesów, notesy sieci szkieletowej obsługują redagowanie wpisów tajnych w celu zastąpienia wartości wpisów tajnych wyświetlanych w danych wyjściowych komórki przy [REDACTED]użyciu polecenia . Redagowanie wpisów tajnych ma zastosowanie w przypadku języków Python, Scala i R.

Zrzut ekranu przedstawiający redagowanie wpisów tajnych.

Polecenia magic w notesie

Wbudowane polecenia magic

Znane polecenia magic ipython można używać w notesach sieci Szkieletowej. Przejrzyj poniższą listę aktualnie dostępnych poleceń magic.

Uwaga

Są to jedyne polecenia magiczne obsługiwane w potoku sieci szkieletowej: %%pyspark, %%spark, %%csharp, %%sql, %%%configure.

Dostępne polecenia magic wiersza: %lsmagic, %time, %timeit, %history, %run, %load, %alias, %alias_magic, %autoawait, %autocall, %autocall, %automagic, %bookmark, %cd, %colors, %dhist, %dirs, %doctest_mode, %killbgscripts, %load_ext, %logoff, %logn, %logstart, %logstate, %logstop, %magic, %matplotlib, %page, %pastebin, %pdef, %pfile, %pinfo, %pinfo2, %popd, %pprint, %precision, %prun, %psearch, %psource, %pushd, %pwd, %pycat, %quickref, % rehashx, %reload_ext, %reset, %reset_selective, %sx, %system, %tb, %unalias, %unload_ext, %who, %who_ls, %who's, %xdel, %xmode.

Notes sieci szkieletowej obsługuje również ulepszone polecenia zarządzania bibliotekami % i %conda. Aby uzyskać więcej informacji na temat użycia, zobacz Zarządzanie bibliotekami platformy Apache Spark w usłudze Microsoft Fabric.

Dostępne polecenia magii komórek: %%time, %%timeit, %%capture, %%writefile, %%sql, %%pyspark, %%spark, %%csharp, %%configure, %%html, %%bash, %%markdown, %%perl, %%script, %%sh.

Niestandardowe polecenia magic

Możesz również utworzyć więcej niestandardowych poleceń magicznych, aby spełnić określone potrzeby. Oto przykład:

  1. Utwórz notes o nazwie "MyLakehouseModule".

    Zrzut ekranu przedstawiający definiowanie niestandardowej magii.

  2. W innym notesie odwołaj się do polecenia "MyLakehouseModule" i jego poleceń magicznych. Ten proces umożliwia wygodne organizowanie projektu za pomocą notesów korzystających z różnych języków.

    Zrzut ekranu przedstawiający używanie magii niestandardowej.

Widżety IPython

Widżety IPython to zdarzenia obiektów języka Python, które mają reprezentację w przeglądarce. Widżety IPython można używać jako kontrolek z małą ilością kodu (na przykład suwaka lub pola tekstowego) w notesie, podobnie jak notes Jupyter. Obecnie działa tylko w kontekście języka Python.

Aby użyć widżetów IPython

  1. Najpierw zaimportuj moduł ipywidgets , aby użyć struktury widżetu Jupyter.

    import ipywidgets as widgets
    
  2. Funkcja wyświetlania najwyższego poziomu umożliwia renderowanie widżetu lub pozostawienie wyrażenia typu widżetu w ostatnim wierszu komórki kodu.

    slider = widgets.IntSlider()
    display(slider)
    
  3. Uruchom komórkę. Widżet zostanie wyświetlony w obszarze danych wyjściowych.

    slider = widgets.IntSlider()
    display(slider)
    

    Zrzut ekranu przedstawiający widżet wyświetlany w obszarze danych wyjściowych.

  4. Użyj wielu wywołań display(), aby wielokrotnie renderować to samo wystąpienie widżetu. Pozostają one zsynchronizowane ze sobą.

    slider = widgets.IntSlider()
    display(slider)
    display(slider)
    

    Zrzut ekranu przedstawiający wiele razy jeden widżet.

  5. Aby renderować dwa widżety niezależnie od siebie, utwórz dwa wystąpienia widżetów:

    slider1 = widgets.IntSlider()
    slider2 = widgets.IntSlider()
    display(slider1)
    display(slider2)
    

    Zrzut ekranu przedstawiający wiele wystąpień widżetów.

Obsługiwane widżety

Typ widżetów Widżety
Widżety liczbowe IntSlider, FloatSlider, FloatLogSlider, IntRangeSlider, FloatRangeSlider, IntProgress, FloatProgress, BoundedIntText, BoundedFloatText, IntText, FloatText
Widżety logiczne PrzełącznikButton, pole wyboru, prawidłowe
Widżety wyboru Lista rozwijana, RadioButtons, Select, SelectionSlider, SelectionRangeSlider, ToggleButtons, SelectMultiple
Widżety ciągów Tekst, obszar tekstowy, pole kombi, hasło, etykieta, HTML, matematyka HTML, obraz, przycisk
Widżety odtwarzania (animacja) Selektor dat, selektor kolorów, kontroler
Widżety kontenera lub układu Box, HBox, VBox, GridBox, Accordion, Tabs, Stacked

Znane ograniczenia

  • Następujące widżety nie są jeszcze obsługiwane. Dostępne są następujące obejścia:

    Funkcjonalność Obejście
    Widżet danych wyjściowych Zamiast tego możesz użyć funkcji print(), aby zapisać tekst w obiekcie stdout.
    widgets.jslink() Możesz użyć funkcji widgets.link(), aby połączyć dwa podobne widżety.
    Widżet FileUpload Nieobsługiwane jeszcze.
  • Globalna funkcja wyświetlania sieci szkieletowej nie obsługuje wyświetlania wielu widżetów w jednym wywołaniu (na przykład display(a, b)). To zachowanie różni się od funkcji wyświetlania IPython.

  • Jeśli zamkniesz notes zawierający widżet IPython, nie będzie można z nim zobaczyć ani wchodzić z nim w interakcję, dopóki nie wykonasz odpowiedniej komórki ponownie.

  • Funkcja interact (ipywidgets.interact) nie jest obsługiwana.

Integrowanie notesu

Wyznaczanie komórki parametrów

Aby sparametryzować notes, wybierz wielokropek (...) , aby uzyskać dostęp do więcej poleceń na pasku narzędzi komórki. Następnie wybierz pozycję Przełącz komórkę parametru, aby wyznaczyć komórkę jako komórkę parametrów.

Zrzut ekranu przedstawiający, gdzie wybrać opcję Przełącz komórkę parametru.

Komórka parametrów jest przydatna do integrowania notesu w potoku. Działanie potoku wyszukuje komórkę parametrów i traktuje tę komórkę jako domyślną wartość parametrów przekazywanych w czasie wykonywania. Aparat wykonywania dodaje nową komórkę pod komórką parameters z parametrami wejściowymi, aby zastąpić wartości domyślne.

Przypisywanie wartości parametrów z potoku

Po utworzeniu notesu z parametrami można go wykonać z potoku za pomocą działania notesu usługi Fabric. Po dodaniu działania do kanwy potoku można ustawić wartości parametrów w sekcji Podstawowe parametry na karcie Ustawienia .

Zrzut ekranu przedstawiający miejsce przypisywania wartości parametrów z potoku.

Podczas przypisywania wartości parametrów można użyć języka wyrażeń potoku lub funkcji i zmiennych.

Polecenie magic konfiguracji sesji platformy Spark

Sesję platformy Spark można spersonalizować za pomocą polecenia magic %%configure. Notes sieci szkieletowej obsługuje niestandardowe rdzenie wirtualne, pamięć sterownika i funkcji wykonawczej, właściwości platformy Apache Spark, punkty instalacji, pulę i domyślną pulę sesji notesu. Mogą być używane zarówno w działaniach notesu interaktywnego, jak i notesu potoku. Zalecamy uruchomienie polecenia %%configure na początku notesu lub ponowne uruchomienie sesji platformy Spark, aby ustawienia zaczęły obowiązywać.

%%configure
{
    // You can get a list of valid parameters to config the session from https://github.com/cloudera/livy#request-body.
    "driverMemory": "28g", // Recommended values: ["28g", "56g", "112g", "224g", "400g", "472g"]
    "driverCores": 4, // Recommended values: [4, 8, 16, 32, 64, 80]
    "executorMemory": "28g",
    "executorCores": 4,
    "jars": ["abfs[s]: //<file_system>@<account_name>.dfs.core.windows.net/<path>/myjar.jar", "wasb[s]: //<containername>@<accountname>.blob.core.windows.net/<path>/myjar1.jar"],
    "conf":
    {
        // Example of customized property, you can specify count of lines that Spark SQL returns by configuring "livy.rsc.sql.num-rows".
        "livy.rsc.sql.num-rows": "3000",
        "spark.log.level": "ALL"
    },
    "defaultLakehouse": {  // This overwrites the default lakehouse for current session
        "name": "<lakehouse-name>",
        "id": "<(optional) lakehouse-id>",
        "workspaceId": "<(optional) workspace-id-that-contains-the-lakehouse>" // Add workspace ID if it's from another workspace
    },
    "mountPoints": [
        {
            "mountPoint": "/myMountPoint",
            "source": "abfs[s]://<file_system>@<account_name>.dfs.core.windows.net/<path>"
        },
        {
            "mountPoint": "/myMountPoint1",
            "source": "abfs[s]://<file_system>@<account_name>.dfs.core.windows.net/<path1>"
        },
    ],
    "environment": {
        "id": "<environment-id>",
        "name": "<environment-name>"
    },
    "sessionTimeoutInSeconds": 1200,
    "useStarterPool": false,  // Set to true to force using starter pool
    "useWorkspacePool": "<workspace-pool-name>"
}

Uwaga

  • Zalecamy ustawienie tej samej wartości dla parametrów "DriverMemory" i "ExecutorMemory" w elemocie %%configure. Wartości "driverCores" i "executorCores" również powinny być takie same.
  • Element "defaultLakehouse" zastąpi przypięty lakehouse w eksploratorze Lakehouse, ale działa tylko w bieżącej sesji notesu.
  • Możesz użyć %%configure w potokach sieci szkieletowej, ale jeśli nie jest ona ustawiona w pierwszej komórce kodu, uruchomienie potoku zakończy się niepowodzeniem z powodu niemożności ponownego uruchomienia sesji.
  • Narzędzie %%configure używane w pliku notebookutils.notebook.run zostanie zignorowane, ale używane w notesie %run będzie kontynuować wykonywanie.
  • Standardowe właściwości konfiguracji platformy Spark muszą być używane w treści "conf". Sieć szkieletowa nie obsługuje odwołania pierwszego poziomu dla właściwości konfiguracji platformy Spark.
  • Niektóre specjalne właściwości platformy Spark, w tym "spark.driver.cores", "spark.executor.cores", "spark.driver.memory", "spark.executor.memory" i "spark.executor.instances" nie wchodzą w życie w treści "conf".

Konfiguracja sparametryzowanej sesji z potoku

Konfiguracja sparametryzowanej sesji umożliwia zastąpienie wartości w %%configure magic parametrami działania notesu uruchomienia potoku. Podczas przygotowywania komórki kodu %%configure można zastąpić wartości domyślne (również konfigurowalne, 4 i "2000" w poniższym przykładzie) za pomocą obiektu w następujący sposób:

{
      "parameterName": "paramterNameInPipelineNotebookActivity",
      "defaultValue": "defaultValueIfNoParamterFromPipelineNotebookActivity"
} 
%%configure  

{ 
    "driverCores": 
    { 
        "parameterName": "driverCoresFromNotebookActivity", 
        "defaultValue": 4 
    }, 
    "conf": 
    { 
        "livy.rsc.sql.num-rows": 
        { 
            "parameterName": "rows", 
            "defaultValue": "2000" 
        } 
    } 
} 

Notes używa wartości domyślnej, jeśli uruchamiasz notes w trybie interaktywnym bezpośrednio lub jeśli działanie notesu potoku nie daje parametru zgodnego z parametrem "activityParameterName".

Podczas uruchamiania potoku można skonfigurować ustawienia działania notesu potoku w następujący sposób:

Zrzut ekranu przedstawiający miejsce konfigurowania sesji sparametryzowanej.

Jeśli chcesz zmienić konfigurację sesji, nazwa parametrów działania notesu potoku powinna być taka sama jak parameterName w notesie. W tym przykładzie uruchamiania potoku driverCores w konfiguracji %%configure jest zastępowany przez 8 i livy.rsc.sql.num-rows zastąpiony przez 4000.

Uwaga

  • Jeśli uruchomienie potoku zakończy się niepowodzeniem, ponieważ użyto polecenia %%configure magic, znajdź więcej informacji o błędzie, uruchamiając komórkę magic %%configure w trybie interaktywnym notesu.
  • Zaplanowane uruchomienia notesu nie obsługują sparametryzowanej konfiguracji sesji.

Rejestrowanie języka Python w notesie

Dzienniki języka Python można znaleźć i ustawić różne poziomy dziennika i format, takie jak przykładowy kod pokazany tutaj:

import logging

# Customize the logging format for all loggers
FORMAT = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
formatter = logging.Formatter(fmt=FORMAT)
for handler in logging.getLogger().handlers:
    handler.setFormatter(formatter)

# Customize log level for all loggers
logging.getLogger().setLevel(logging.INFO)

# Customize the log level for a specific logger
customizedLogger = logging.getLogger('customized')
customizedLogger.setLevel(logging.WARNING)

# logger that use the default global log level
defaultLogger = logging.getLogger('default')
defaultLogger.debug("default debug message")
defaultLogger.info("default info message")
defaultLogger.warning("default warning message")
defaultLogger.error("default error message")
defaultLogger.critical("default critical message")

# logger that use the customized log level
customizedLogger.debug("customized debug message")
customizedLogger.info("customized info message")
customizedLogger.warning("customized warning message")
customizedLogger.error("customized error message")
customizedLogger.critical("customized critical message")

Wyświetlanie historii poleceń wejściowych

Notes sieci szkieletowej obsługuje polecenie %history magic, aby wydrukować historię poleceń wejściowych wykonywanych w bieżącej sesji w porównaniu ze standardowym poleceniem %history Jupyter Ipython, które działa dla wielu języków kontekstu w notesie.

%history [-n] [range [range ...]]

Opcje:

  • -n: Numer wykonania wydruku.

Gdzie zakres może być:

  • N: Drukuj kod Nth wykonanej komórki.
  • M-N: Drukuj kod z Mth na Nth wykonaną komórkę.

Przykład:

  • Drukuj historię danych wejściowych z 1 do drugiej wykonanej komórki: %history -n 1-2

Klawisze skrótów

Podobnie jak w przypadku notesów Jupyter Notebook, notesy sieci Szkieletowej mają modalny interfejs użytkownika. Klawiatura wykonuje różne czynności w zależności od trybu, w którym znajduje się komórka notesu. Notesy sieci szkieletowej obsługują następujące dwa tryby dla danej komórki kodu: tryb polecenia i tryb edycji.

  • Komórka jest w trybie polecenia, gdy nie ma kursora tekstowego z monitem o wpisanie. Gdy komórka jest w trybie polecenia, możesz edytować notes jako całość, ale nie wpisywać w poszczególnych komórkach. Wprowadź polecenie Tryb polecenia, naciskając ESC lub używając myszy, aby zaznaczyć poza obszarem edytora komórki.

    Zrzut ekranu przedstawiający komórkę w trybie polecenia.

  • Tryb edycji można wskazać na podstawie kursora tekstowego, który monituje o wpisanie w obszarze edytora. Gdy komórka jest w trybie edycji, możesz wpisać w komórce. Wprowadź tryb edycji, naciskając Enter lub używając myszy, aby wybrać obszar edytora komórki.

    Zrzut ekranu przedstawiający komórkę w trybie edycji.

skrótów w trybie polecenia

Akcja Skróty notesu
Uruchom bieżącą komórkę i wybierz poniżej Shift+Enter
Uruchom bieżącą komórkę i wstaw poniżej Alt+Enter
Uruchamianie bieżącej komórki Ctrl+Enter
Zaznacz komórkę powyżej W górę
Wybierz komórkę poniżej W dół
Wybierz poprzednią komórkę tys.
Wybierz następną komórkę J
Wstaw komórkę powyżej A
Wstaw komórkę poniżej B
Usuń zaznaczone komórki Shift + D
Przełącz do trybu edycji Enter

skrótów w trybie edycji

Korzystając z poniższych skrótów klawiszowych, można łatwo nawigować i uruchamiać kod w notesach sieci szkieletowej w trybie edycji.

Akcja Skróty notesu
Przenieś kursor w górę W górę
Przenieś kursor w dół W dół
Cofnij Ctrl + Z
Ponów Ctrl + Y
Komentarz lub usuń komentarz Ctrl + /
Komentarz: Ctrl + K + C
Usuń komentarz: Ctrl + K + U
Usuń wyraz przed Ctrl + Backspace
Usuń wyraz po Ctrl + Delete
Przejdź do początku komórki Ctrl + Strona główna
Przejdź do końca komórki Ctrl + koniec
Przejdź jeden wyraz w lewo Ctrl + w lewo
Przejdź jeden wyraz w prawo Ctrl + w prawo
Wybierz wszystko Ctrl + A
Wcięcie Ctrl + ]
Wcięcie Ctrl + [
Przełączanie do trybu poleceń Esc

Aby znaleźć wszystkie skrótów, wybierz pozycję Widok na wstążce notesu, a następnie wybierz pozycję Powiązania.