Tworzenie, opracowywanie i konserwację notesów usługi Synapse w usłudze Azure Synapse Analytics

Notes usługi Synapse to interfejs internetowy umożliwiający tworzenie plików zawierających kod na żywo, wizualizacje i tekst narracji. Notesy to dobre miejsce do weryfikowania pomysłów i przeprowadzania krótkich eksperymentów w celu uzyskania szczegółowych informacji na podstawie danych. Notesy są również szeroko używane w scenariuszach przygotowywania danych, wizualizacji danych, uczenia maszynowego i innych scenariuszy danych big data.

Notes usługi Synapse umożliwia:

  • Rozpocznij pracę z zerowym nakładem pracy z konfiguracją.
  • Zachowaj bezpieczeństwo danych za pomocą wbudowanych funkcji zabezpieczeń przedsiębiorstwa.
  • Analizowanie danych w formatach pierwotnych (CSV, txt, JSON itp.), przetworzonych formatów plików (parquet, Delta Lake, ORC itp.) i plików danych tabelarycznych SQL na platformie Spark i sql.
  • Wydajniej dzięki ulepszonym możliwościom tworzenia i wbudowanym wizualizacjom danych.

W tym artykule opisano sposób używania notesów w Synapse Studio.

Tworzenie notesu

Istnieją dwa sposoby tworzenia notesu. Możesz utworzyć nowy notes lub zaimportować istniejący notes do obszaru roboczego usługi Synapse z Eksplorator obiektów. Notesy usługi Synapse rozpoznają standardowe pliki Jupyter Notebook IPYNB.

Zrzut ekranu przedstawiający tworzenie nowego lub importowania notesu

Tworzenie notesów

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

Udostępniamy zaawansowane operacje tworzenia notesów:

Uwaga

W notesach jest automatycznie tworzona aplikacja SparkSession przechowywana w zmiennej o nazwie spark. Istnieje również zmienna sparkContext o nazwie sc. Użytkownicy mogą uzyskiwać bezpośredni dostęp do tych zmiennych i nie powinni zmieniać wartości tych zmiennych.

Dodawanie komórki

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

  1. Umieść kursor na przestrzeni między dwiema komórkami i wybierz pozycję Kod lub Markdown. Zrzut ekranu przedstawiający przycisk add-azure-notebook-cell-with-cell-button

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


Ustawianie języka podstawowego

Notesy usługi Synapse obsługują cztery języki platformy Apache Spark:

  • PySpark (Python)
  • Spark (Scala)
  • Spark SQL
  • .NET Spark (C#)
  • SparkR (R)

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

Zrzut ekranu przedstawiający język default-synapse-language

Korzystanie z wielu języków

Można użyć wielu języków w jednym notesie, określając poprawne polecenie magic języka na początku komórki. W poniższej tabeli wymieniono polecenia magic umożliwiające przełączanie języków komórek.

Polecenie Magic Język Opis
%%pyspark Python Wykonaj zapytanie w języku Python względem kontekstu platformy Spark.
%%spark Scala Wykonaj zapytanie Scala względem kontekstu platformy Spark.
%%sql SparkSQL Wykonaj zapytanie SparkSQL względem kontekstu platformy Spark.
%%csharp .NET dla platformy Spark C# Wykonaj zapytanie platformy .NET dla języka C# platformy Spark względem kontekstu platformy Spark.
%%sparkr R Wykonaj zapytanie języka R względem kontekstu platformy Spark.

Na poniższej ilustracji przedstawiono przykład sposobu pisania zapytania PySpark przy użyciu polecenia magic %%pyspark lub zapytania SparkSQL za pomocą polecenia magic %%sql w notesie Spark(Scala). Zwróć uwagę, że język podstawowy notesu jest ustawiony na pySpark.

Zrzut ekranu przedstawiający polecenia magic platformy Spark usługi Synapse

Używanie tabel tymczasowych do odwołowania się do danych w różnych językach

Nie można odwoływać się do danych ani zmiennych bezpośrednio w różnych językach w notesie usługi Synapse. Na platformie Spark można odwoływać się do tabeli tymczasowej w różnych językach. Oto przykład sposobu odczytywania Scala ramki danych w PySpark tabeli tymczasowej Platformy Spark i SparkSQL używania jej jako obejścia.

  1. W komórce 1 odczytaj ramkę danych z łącznika puli SQL przy użyciu języka Scala i utwórz tabelę tymczasową.

    %%spark
    val scalaDataFrame = spark.read.sqlanalytics("mySQLPoolDatabase.dbo.mySQLPoolTable")
    scalaDataFrame.createOrReplaceTempView( "mydataframetable" )
    
  2. W komórce 2 wykonaj zapytanie dotyczące danych przy użyciu języka Spark SQL.

    %%sql
    SELECT * FROM mydataframetable
    
  3. W komórce 3 użyj danych w PySpark.

    %%pyspark
    myNewPythonDataFrame = spark.sql("SELECT * FROM mydataframetable")
    

IntelliSense w stylu IDE

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

Funkcje IntelliSense są na różnych poziomach dojrzałości dla różnych języków. Skorzystaj z poniższej tabeli, aby zobaczyć, co jest obsługiwane.

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
SparkSQL Tak Tak Tak Tak Tak - - -
.NET dla platformy Spark (C#) Tak Tak Tak Tak Tak Tak Tak Tak

Uwaga

Aktywna sesja platformy Spark jest wymagana, aby korzystać ze zmiennej uzupełniania kodu, uzupełniania kodu funkcji systemu, uzupełniania kodu funkcji użytkownika dla platformy .NET dla platformy Spark (C#).

Wstawki kodu

Notesy usługi Synapse udostępniają fragmenty kodu, które ułatwiają wprowadzanie typowych używanych wzorców kodu, takich jak konfigurowanie sesji platformy Spark, odczytywanie danych jako ramki danych Spark lub rysowanie wykresów z biblioteką matplotlib itp.

Fragmenty kodu są wyświetlane w klawiszach skrótów stylu IDE IntelliSense mieszanej z innymi sugestiami. Zawartość fragmentów kodu jest zgodna z językiem komórek kodu. Dostępne fragmenty kodu można wyświetlić, wpisując fragment kodu lub dowolne słowa kluczowe wyświetlane w tytule fragmentu kodu w edytorze komórek kodu. Na przykład, wpisując odczyt , możesz wyświetlić listę fragmentów kodu do odczytu danych z różnych źródeł danych.

Animowany plik GIF fragmentów kodu synapse

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

Za pomocą przycisków formatowania na pasku narzędzi komórek tekstowych można wykonywać typowe akcje markdown. Obejmuje ona pogrubienie tekstu, kursywę, akapit/nagłówki za pomocą listy rozwijanej, wstawianie kodu, wstawianie nieuporządkowanej listy, wstawianie uporządkowanej listy, wstawianie hiperlinku i wstawianie obrazu z adresu URL.

Zrzut ekranu przedstawiający pasek narzędzi komórki tekstowej usługi Synapse


Cofnij/Wykonaj ponownie operację komórki

Wybierz przycisk Cofnij / ponownie lub naciśnij klawisze Z / Shift+Z , aby odwołać najnowsze operacje komórek. Teraz możesz cofnąć/ponownie wykonać maksymalnie 10 operacji historycznych komórek.

Zrzut ekranu przedstawiający cofanie komórek aznb w usłudze Synapse

Obsługiwane operacje cofania komórek:

  • Wstaw/Usuń komórkę: możesz odwołać operacje usuwania, wybierając pozycję Cofnij, zawartość tekstowa jest przechowywana wraz z komórką.
  • Zmień kolejność komórki.
  • Przełącz parametr.
  • Konwertuj między komórką Code i komórką Markdown.

Uwaga

Operacje tekstowe w komórce i operacje komentowania komórek kodu nie są nieodwracalne. Teraz możesz cofnąć/ponownie wykonać maksymalnie 10 operacji historycznych komórek.


Komentowanie komórek kodu

  1. Wybierz przycisk Komentarze na pasku narzędzi notesu, aby otworzyć okienko Komentarze .

    Zrzut ekranu przedstawiający przycisk komentarza usługi Synapse

  2. Wybierz kod w komórce kodu, kliknij pozycję Nowy w okienku Komentarze , dodaj komentarze, a następnie kliknij przycisk Opublikuj komentarz , aby zapisać.

    Zrzut ekranu przedstawiający nowy komentarz usługi Synapse

  3. Możesz wykonać polecenie Edytuj komentarz, Rozwiązać wątek lub Usunąć wątek , klikając przycisk Więcej oprócz komentarza.

    Zrzut ekranu przedstawiający komentarz edycji usługi Synapse


Przenoszenie komórki

Kliknij lewą stronę komórki i przeciągnij ją do żądanej pozycji. Animowany obraz GIF przenoszenia komórek usługi Synapse


Usuwanie komórki

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

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

Zrzut ekranu przedstawiający komórkę azure-notebook-delete-a-cell


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 ją rozwinąć, wybierz pozycję Pokaż dane wejściowe , gdy komórka zostanie zwinięta.

Animowany plik GIF z danymi wejściowymi typu


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 ją rozwinąć, wybierz pozycję Pokaż dane wyjściowe , gdy dane wyjściowe komórki są ukryte.

Animowany plik GIF z danymi wyjściowymi azure-notebook-collapse-cell-output


Konspekt notesu

Kontury (spis treści) przedstawia pierwszy nagłówek markdown dowolnej komórki markdown w oknie paska bocznego na potrzeby szybkiej nawigacji. Pasek boczny Kontury można zmienić rozmiar i zwijać, aby dopasować ekran w najlepszy możliwy sposób. Możesz wybrać przycisk Konspektu na pasku poleceń notesu, aby otworzyć lub ukryć pasek boczny

Zrzut ekranu przedstawiający konspekt azure-notebook


Uruchamianie notesów

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

Uruchamianie komórki

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

  1. Umieść kursor na komórce, którą chcesz uruchomić, i wybierz przycisk Uruchom komórkę lub naciśnij klawisze Ctrl+Enter.

    Zrzut ekranu przedstawiający polecenie run-cell-1

  2. Użyj klawiszy skrótów w trybie polecenia. Naciśnij klawisze Shift+Enter , aby uruchomić bieżącą komórkę i wybrać komórkę poniżej. Naciśnij klawisze Alt+Enter , aby uruchomić bieżącą komórkę i wstawić nową komórkę poniżej.


Uruchamianie wszystkich komórek

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

Zrzut ekranu przedstawiający komórki run-all-cell

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

Rozwiń listę rozwijaną z przycisku Uruchom wszystkie , a następnie wybierz pozycję Uruchom komórki powyżej , aby uruchomić wszystkie komórki powyżej bieżącej sekwencji. Wybierz pozycję Uruchom komórki poniżej , aby uruchomić wszystkie komórki poniżej bieżącej sekwencji.

Zrzut ekranu przedstawiający pozycję azure-notebook-run-cell-above-or-below


Anuluj wszystkie uruchomione komórki

Wybierz przycisk Anuluj wszystko , aby anulować uruchomione komórki lub komórki oczekujące w kolejce. Zrzut ekranu przedstawiający komórki azure-notebook-cancel-all-cells


Dokumentacja notesu

Możesz użyć %run <notebook path> polecenia magic, aby odwołać się do innego notesu w kontekście bieżącego notesu. Wszystkie zmienne zdefiniowane w notesie referencyjnym są dostępne w bieżącym notesie. %run polecenie 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 /<path>/Notebook1 { "parameterInt": 1, "parameterFloat": 2.5, "parameterBool": true, "parameterString": "abc" }.

Odwołanie do notesu działa zarówno w trybie interaktywnym, jak i w potoku usługi Synapse.

Uwaga

  • %run Polecenie obecnie obsługuje tylko przekazywanie ścieżki bezwzględnej lub nazwy notesu tylko jako parametru, ścieżka względna nie jest obsługiwana.
  • %runPolecenie obecnie obsługuje tylko 4 typy wartości parametrów: int, , floatbool, stringoperacja zamiany zmiennej nie jest obsługiwana.
  • Wymagane jest opublikowanie odwołanych notesów. Musisz opublikować notesy, aby się do nich odwoływać, chyba że włączono odwołanie do nieopublikowanego notesu . Synapse Studio nie rozpoznaje nieopublikowanych notesów z repozytorium Git.
  • Przywołyne notesy nie obsługują instrukcji, że głębokość jest większa niż pięć.

Eksplorator zmiennych

Notes usługi Synapse udostępnia wbudowanego eksploratora zmiennych, aby wyświetlić 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.

Możesz wybrać przycisk Zmienne na pasku poleceń notesu, aby otworzyć lub ukryć eksploratora zmiennych.

Zrzut ekranu przedstawiający eksploratora zmiennych azure-notebook

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 oraz przechowywane tam na potrzeby przyszłego odwołania.

Zrzut ekranu przedstawiający stan komórki

Wskaźnik postępu platformy Spark

Notes usługi Synapse jest wyłącznie oparty na platformie Spark. Komórki kodu są wykonywane zdalnie w bezserwerowej puli platformy 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 ułatwiają zidentyfikowanie równoległego poziomu zadania platformy Spark. Możesz również dokładniej przejść do interfejsu użytkownika platformy Spark określonego zadania (lub etapu), wybierając link w nazwie zadania (lub etapu).

Zrzut ekranu przedstawiający wskaźnik postępu platformy Spark

Konfiguracja sesji platformy Spark

Możesz określić czas trwania limitu czasu, liczbę i rozmiar funkcji wykonawczych, które mają być podane bieżącej sesji platformy Spark w temacie Konfigurowanie sesji. Uruchom ponownie sesję platformy Spark, aby zmiany konfiguracji zaczęły obowiązywać. Wszystkie buforowane zmienne notesu są wyczyszczone.

Konfigurację można również utworzyć na podstawie konfiguracji platformy Apache Spark lub wybrać istniejącą konfigurację. Aby uzyskać szczegółowe informacje, zobacz Zarządzanie konfiguracją platformy Apache Spark.

Zrzut ekranu przedstawiający zarządzanie sesjami

Polecenie magic konfiguracji sesji platformy Spark

Ustawienia sesji platformy Spark można również określić za pomocą polecenia magic %%configure. Aby wprowadzić efekt ustawień, sesja platformy Spark musi być ponownie uruchomiona. Zalecamy uruchomienie narzędzia %%configure na początku notesu. Oto przykład, zapoznaj się https://github.com/cloudera/livy#request-body z pełną listą prawidłowych parametrów.

%%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 standard spark property, to find more available properties please visit:https://spark.apache.org/docs/latest/configuration.html#application-properties.
        "spark.driver.maxResultSize":"10g",
    //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" 
    }
}

Uwaga

  • Zaleca się ustawienie wartości "DriverMemory" i "ExecutorMemory" jako tej samej wartości w konfiguracji %%, tak więc "driverCores" i "executorCores".
  • Możesz użyć %%configure w potokach usługi Synapse, ale jeśli nie jest ona ustawiona w pierwszej komórce kodu, uruchomienie potoku zakończy się niepowodzeniem z powodu braku możliwości ponownego uruchomienia sesji.
  • Konfiguracja %%skonfigurowana używana w pliku mssparkutils.notebook.run będzie ignorowana, ale używana w notesie %run będzie kontynuowana.
  • Standardowe właściwości konfiguracji platformy Spark muszą być używane w treści "conf". Nie obsługujemy 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", "spark.executor.instances" nie będą obowiązywać w treści "conf".

Konfiguracja sparametryzowanej sesji z potoku

Konfiguracja sesji sparametryzowanej umożliwia zamianę wartości w %%configure magic za pomocą parametrów Przebiegu potoku (działanie notesu). 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) z obiektem w następujący sposób:

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

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

Notes używa wartości domyślnej, jeśli uruchom notes w trybie interaktywnym bezpośrednio lub żaden parametr zgodny z parametrem "activityParameterName" jest podawany z działania notesu potoku.

W trybie uruchamiania potoku można skonfigurować ustawienia działania notesu potoku w następujący sposób: Zrzut ekranu przedstawiający sparametryzowaną konfigurację sesji

Jeśli chcesz zmienić konfigurację sesji, nazwa parametrów działania notesu potoku powinna być taka sama jak activityParameterName w notesie. Podczas uruchamiania tego potoku w tym przykładzie driverCores w konfiguracji %%configure zostanie zastąpiony przez 8, a wiersze livy.rsc.sql.num zostaną zastąpione przez 4000.

Uwaga

Jeśli potok uruchamiania nie powiódł się z powodu użycia tej nowej funkcji %%configure magic, możesz sprawdzić więcej informacji o błędzie, uruchamiając %%configure magic cell w trybie interaktywnym notesu.

Przenoszenie danych do notesu

Dane można załadować z Azure Blob Storage, usługi Azure Data Lake Store Gen 2 i puli SQL, jak pokazano w poniższych przykładach kodu.

Odczytywanie pliku CSV z usługi Azure Data Lake Store Gen2 jako ramki danych Platformy Spark

from pyspark.sql import SparkSession
from pyspark.sql.types import *
account_name = "Your account name"
container_name = "Your container name"
relative_path = "Your path"
adls_path = 'abfss://%s@%s.dfs.core.windows.net/%s' % (container_name, account_name, relative_path)

df1 = spark.read.option('header', 'true') \
                .option('delimiter', ',') \
                .csv(adls_path + '/Testfile.csv')

Odczytywanie pliku CSV z Azure Blob Storage jako ramki danych Platformy Spark


from pyspark.sql import SparkSession

# Azure storage access info
blob_account_name = 'Your account name' # replace with your blob name
blob_container_name = 'Your container name' # replace with your container name
blob_relative_path = 'Your path' # replace with your relative folder path
linked_service_name = 'Your linked service name' # replace with your linked service name

blob_sas_token = mssparkutils.credentials.getConnectionStringOrCreds(linked_service_name)

# Allow SPARK to access from Blob remotely

wasb_path = 'wasbs://%s@%s.blob.core.windows.net/%s' % (blob_container_name, blob_account_name, blob_relative_path)

spark.conf.set('fs.azure.sas.%s.%s.blob.core.windows.net' % (blob_container_name, blob_account_name), blob_sas_token)
print('Remote blob path: ' + wasb_path)

df = spark.read.option("header", "true") \
            .option("delimiter","|") \
            .schema(schema) \
            .csv(wasbs_path)

Odczytywanie danych z podstawowego konta magazynu

Dostęp do danych można uzyskać bezpośrednio na podstawowym koncie magazynu. Nie ma potrzeby udostępniania kluczy tajnych. W Data Explorer kliknij prawym przyciskiem myszy plik i wybierz pozycję Nowy notes, aby wyświetlić nowy notes z automatycznie wygenerowanym funkcją wyodrębniania danych.

Zrzut ekranu przedstawiający dane do komórki

Widżety IPython

Widżety to obiekty języka Python, które mają reprezentację w przeglądarce, często jako kontrolka, taka jak suwak, pole tekstowe itp. Widżety IPython działają tylko w środowisku języka Python, nie są jeszcze obsługiwane w innych językach (na przykład Scala, SQL, C#).

Aby użyć widżetu IPython

  1. Najpierw należy zaimportować ipywidgets moduł, aby użyć struktury widżetów Jupyter.

    import ipywidgets as widgets
    
  2. Możesz użyć funkcji najwyższego poziomu display do renderowania widżetu lub pozostawić wyrażenie typu widżetu w ostatnim wierszu komórki kodu.

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

    Zrzut ekranu przedstawiający suwak widżetów ipython

  4. Można użyć wielu display() wywołań do renderowania tego samego wystąpienia widżetu wiele razy, ale pozostają one zsynchronizowane ze sobą.

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

    Zrzut ekranu przedstawiający suwaki widżetów ipython

  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)
    

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/układu Box, HBox, VBox, GridBox, Accordion, Tabs, Stacked

Znane ograniczenia

  1. Następujące widżety nie są jeszcze obsługiwane. Możesz wykonać odpowiednie obejście, jak pokazano poniżej:

    Funkcjonalność Obejście
    Output Widget Zamiast tego można użyć print() funkcji do zapisania tekstu w obiekcie stdout.
    widgets.jslink() Funkcji można użyć widgets.link() do łączenia dwóch podobnych widżetów.
    FileUpload Widget Nieobsługij jeszcze.
  2. Funkcja globalna display udostępniana przez usługę Synapse nie obsługuje wyświetlania wielu widżetów w jednym wywołaniu (czyli display(a, b)), co różni się od funkcji IPython display .

  3. Jeśli zamkniesz notes zawierający widżet IPython, nie będzie można go zobaczyć ani wchodzić z nim w interakcję, dopóki nie zostanie ponownie wykonana odpowiednia komórka.


Zapisywanie notesów

Możesz zapisać jeden notes lub wszystkie notesy w obszarze roboczym.

  1. Aby zapisać zmiany wprowadzone w jednym notesie, wybierz przycisk Publikuj na pasku poleceń notesu.

    Zrzut ekranu przedstawiający publikowanie notesu

  2. Aby zapisać wszystkie notesy w obszarze roboczym, wybierz przycisk Opublikuj wszystko na pasku poleceń obszaru roboczego.

    Zrzut ekranu przedstawiający publikowanie wszystkich

We właściwościach notesu można skonfigurować, czy podczas zapisywania mają być uwzględniane dane wyjściowe komórki.

Zrzut ekranu przedstawiający właściwości notesu

Polecenia magiczne

W notesach usługi Synapse można używać znanych poleceń magicznych programu Jupyter. Przejrzyj poniższą listę jako bieżące dostępne polecenia magic. Poinformuj nas o swoich przypadkach użycia w usłudze GitHub , abyśmy mogli nadal tworzyć więcej poleceń magicznych, aby spełnić Twoje potrzeby.

Uwaga

W potoku usługi Synapse są obsługiwane tylko następujące polecenia magiczne: %%pyspark, %%spark, %%csharp, %%sql.

Dostępne magie wierszy: %lsmagic, %time, %timeit, %history, %run, %load

Dostępne magie komórek: %%time, %%timeit, %%capture, %%writefile, %%sql, %%pyspark, %%spark, %%csharp, %%html, %%configure


Odwołanie do nieopublikowanego notesu

Odwołanie do nieopublikowanego notesu jest przydatne, gdy chcesz debugować "lokalnie", podczas włączania tej funkcji uruchomienie notesu pobiera bieżącą zawartość w pamięci podręcznej sieci Web, jeśli uruchamiasz komórkę zawierającą instrukcję notesów referencyjnych, odwołujesz się do notesów prezentowanych w bieżącej przeglądarce notesów zamiast zapisanych wersji w klastrze, co oznacza, że zmiany w edytorze notesów można odwoływać się natychmiast przez inne notesy bez konieczności publikowania (tryb na żywo) lub zatwierdzenia( Tryb Git) dzięki wykorzystaniu tego podejścia można łatwo uniknąć zanieczyszczania popularnych bibliotek podczas opracowywania lub debugowania.

Możesz włączyć notes Odwołaj się do nieopublikowanego odwołania z panelu Właściwości:

Zrzut ekranu przedstawiający odwołanie do notesu

W przypadku różnych przypadków porównania zapoznaj się z poniższą tabelą:

Zwróć uwagę, że polecenie %run i mssparkutils.notebook.run ma takie samo zachowanie tutaj. W tym miejscu użyto %run przykładu.

Sprawa Wyłącz Włącz
Tryb na żywo
- Nb1 (opublikowany)
%run Nb1
Uruchamianie opublikowanej wersji Nb1 Uruchamianie opublikowanej wersji Nb1
- Nb1 (nowy)
%run Nb1
Błąd Uruchamianie nowego Nb1
- Nb1 (wcześniej opublikowane, edytowane)
%run Nb1
Uruchamianie opublikowanej wersji Nb1 Uruchamianie edytowanej wersji Nb1
Tryb Git
- Nb1 (opublikowany)
%run Nb1
Uruchamianie opublikowanej wersji Nb1 Uruchamianie opublikowanej wersji Nb1
- Nb1 (nowy)
%run Nb1
Błąd Uruchamianie nowego Nb1
- Nb1 (Nie opublikowano, zatwierdzone)
%run Nb1
Błąd Uruchamianie zatwierdzonego Nb1
- Nb1 (wcześniej opublikowane, zatwierdzone)
%run Nb1
Uruchamianie opublikowanej wersji Nb1 Uruchamianie zatwierdzonej wersji Nb1
- Nb1 (wcześniej opublikowane, nowe w bieżącej gałęzi)
%run Nb1
Uruchamianie opublikowanej wersji Nb1 Uruchamianie nowego Nb1
- Nb1 (Nie opublikowano, wcześniej zatwierdzone, edytowane)
%run Nb1
Błąd Uruchamianie edytowanej wersji Nb1
- Nb1 (wcześniej opublikowane i zatwierdzone, edytowane)
%run Nb1
Uruchamianie opublikowanej wersji Nb1 Uruchamianie edytowanej wersji Nb1

Podsumowanie

  • Jeśli to ustawienie jest wyłączone, zawsze uruchamiaj opublikowaną wersję.
  • Jeśli to ustawienie jest włączone, priorytet to: edytowany/nowy > zatwierdzony > opublikowany.

Zarządzanie sesjami aktywnymi

Sesje notesu można teraz wygodnie używać bez konieczności uruchamiania nowych. Notes usługi Synapse obsługuje teraz zarządzanie aktywnymi sesjami na liście Zarządzanie sesjami . Wszystkie sesje są widoczne w bieżącym obszarze roboczym uruchomionym przez Ciebie z poziomu notesu.

Zrzut ekranu przedstawiający sesje zarządzania notesem

Na liście Aktywne sesje można wyświetlić informacje o sesji i odpowiedni notes, który jest obecnie dołączony do sesji. W tym miejscu możesz obsługiwać operacje Odłączanie za pomocą notesu, Zatrzymywanie sesji i Wyświetlanie w obszarze monitorowania. Ponadto możesz łatwo połączyć wybrany notes z aktywną sesją na liście uruchomioną z innego notesu, sesja jest odłączona od poprzedniego notesu (jeśli nie jest bezczynna), a następnie dołącz do bieżącego.

Zrzut ekranu przedstawiający listę sesji notesu

Rejestrowanie w języku Python w notesie

Dzienniki języka Python można znaleźć i ustawić różne poziomy dziennika oraz sformatować, postępując zgodnie z poniższym przykładowym kodem:

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")

Integrowanie notesu

Dodawanie notesu do potoku

Wybierz przycisk Dodaj do potoku w prawym górnym rogu, aby dodać notes do istniejącego potoku lub utworzyć nowy potok.

Zrzut ekranu przedstawiający dodawanie notesu do potoku

Wyznaczanie komórki parametrów

Aby sparametryzować notes, wybierz wielokropek (...) , aby uzyskać dostęp do większej liczby 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 przełącznik-parametr azure-notebook


Azure Data Factory wyszukuje komórkę parametrów i traktuje tę komórkę jako wartość domyślną 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żesz wykonać go z potoku za pomocą działania notesu usługi Synapse. Po dodaniu działania do kanwy potoku będzie można ustawić wartości parametrów w sekcji Podstawowe parametry na karcie Ustawienia .

Zrzut ekranu przedstawiający przypisywanie parametru

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

Klawisze skrótów

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

  1. Komórka jest w trybie poleceń, 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ć ich w poszczególnych komórkach. Wprowadź tryb polecenia, naciskając ESC lub używając myszy, aby wybrać poza obszarem edytora komórki.

    Zrzut ekranu przedstawiający tryb poleceń

  2. Tryb edycji jest wskazywany przez kursor tekstowy z monitem 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 tryb edycji

Klawisze skrótów w trybie polecenia

Akcja Skróty notesu usługi Synapse
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ę K
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łączanie do trybu edycji Enter

Klawisze skrótów w trybie edycji

Korzystając z poniższych skrótów klawiszowych, możesz łatwiej nawigować i uruchamiać kod w notesach usługi Synapse w trybie edycji.

Akcja Skróty notesu usługi Synapse
Przenieś kursor w górę W górę
Przenieś kursor w dół W dół
Cofnij Ctrl + Z
Ponów Ctrl + Y
Komentarz/komentarz Ctrl + /
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ź do jednego wyrazu w lewo Ctrl + Lewa
Przejdź do jednego słowa w prawo Ctrl + Prawy
Zaznacz wszystko Ctrl + A
Wcięcie Ctrl +]
Wcięcie Ctrl + [
Przełączanie do trybu poleceń Esc

Następne kroki