Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Klastry HDInsight Spark dostarczają jądra, które możesz używać z Jupyter Notebook na Apache Spark do testowania aplikacji. Jądro to program, który uruchamia i interpretuje Twój kod. Trzy jądra to:
- PySpark – dla aplikacji napisanych w Python2. (Dotyczy tylko klastrów wersji Spark 2.4)
- PySpark3 – dla aplikacji napisanych w Python3.
- Spark – dla aplikacji napisanych w Scali.
W tym artykule dowiesz się, jak korzystać z tych jąder i jakie są korzyści z nich płynące.
Prerequisites
Klaster Apache Spark w HDInsight. Aby uzyskać instrukcje, zobacz Tworzenie klastra platformy Apache Spark w usłudze Azure HDInsight.
Utwórz notatnik Jupyter w usłudze Spark HDInsight
Z portalu Azure wybierz swój klaster Spark. Zobacz Wyświetlanie listy klastrów, aby zapoznać się z instrukcjami. Otwiera się widok Przegląd .
W widoku Przegląd w sekcji Pulpity nawigacyjne klastra wybierz pozycję Jupyter Notebook. Jeśli zostanie o to zapytane, wprowadź dane administratora klastra.
Uwaga
Możesz także skontaktować się z Jupyter Notebook w klastrze Spark, otwierając poniższy adres URL w swojej przeglądarce. Zastąp nazwę CLUSTERNAME nazwą swojego klastra:
https://CLUSTERNAME.azurehdinsight.net/jupyterWybierz Nowy, a następnie wybierz Pyspark, PySpark3 lub Spark, aby utworzyć notatnik. Używaj jądra Spark dla aplikacji Scala, jądra PySpark dla aplikacji Python2 oraz jądra PySpark3 dla aplikacji Python3.
Uwaga
W przypadku Spark 3.1 dostępny będzie tylko PySpark3, czyli Spark .
- Notatnik otwiera się z wybranym przez Ciebie jądrem.
Korzyści z wykorzystania jąder
Oto kilka zalet korzystania z nowych jąder z Jupyter Notebook na klastrach Spark HDInsight.
Wstępnie zdefiniowane konteksty. W przypadku PySpark, PySpark3 lub jąder Spark nie musisz jawnie ustawiać kontekstów Spark lub Hive przed rozpoczęciem pracy nad aplikacjami. Te konteksty są dostępne domyślnie. Są to konteksty:
sc - dla kontekstu Spark
sqlContext - dla kontekstu Hive
Nie musisz więc uruchamiać takich zdań, by ustawić konteksty:
sc = SparkContext('yarn-client') sqlContext = HiveContext(sc)Zamiast tego możesz bezpośrednio korzystać z gotowych kontekstów w swojej aplikacji.
Magia komórkowa. Jądro PySpark oferuje pewne predefiniowane "magie", czyli specjalne polecenia, które można wywołać (
%%na przykład%%MAGIC<args>). Polecenie magiczne musi być pierwszym słowem w komórce kodu i może obejmować wiele wierszy treści. Magiczne słowo powinno być pierwszym słowem w komórce. Dodanie czegokolwiek przed magią, nawet komentarzy, powoduje błąd. Więcej informacji o magii znajdziesz tutaj.Poniższa tabela przedstawia różne rodzaje magii dostępne w jądrach.
Magia Przykład Opis Pomoc %%helpGeneruje tabelę wszystkich dostępnych magii z przykładem i opisem info %%infoWyświetla informacje o sesji dla bieżącego punktu końcowego Livy Konfiguruj %%configure -f
{"executorMemory": "1000M".
"executorCores": 4}Konfiguruje parametry tworzenia sesji. Flaga wymuszenia ( -f) jest obowiązkowa, jeśli sesja została już utworzona, co powoduje, że sesja zostanie usunięta i utworzona ponownie. Sprawdź Livy's POST /sessions Request Body, aby zobaczyć listę poprawnych parametrów. Parametry muszą być przekazywane jako ciąg JSON i muszą znajdować się na następnej linii po magic, jak pokazano w kolumnie example.SQL %%sql -o <variable name>
SHOW TABLESWykonuje zapytanie Hive względem sqlContext. Jeśli parametr zostanie przekazany -o, wynik zapytania jest zachowywany w kontekście %%local Python jako ramka danych Pandas.lokalny %%locala=1Cały kod w późniejszych linijkach jest wykonywany lokalnie. Kod musi być poprawnym kodem Python2, niezależnie od tego, którego jądra używasz. Zatem nawet jeśli podczas tworzenia notatnika wybierzesz jądra PySpark3 lub Spark, to jeśli w komórce użyjesz polecenia magicznego %%local, ta komórka może zawierać wyłącznie prawidłowy kod w języku Python 2.dzienniki %%logsGeneruje logi z bieżącej sesji Livy. usunąć %%delete -f -s <session number>Usuwa konkretną sesję obecnego endpointu Livy. Nie możesz usunąć sesji, która została rozpoczęta dla samego jądra. czyszczenie %%cleanup -fUsuwa wszystkie sesje dla obecnego endpointu Livy, w tym sesję tego notesu. Flaga -f siły jest obowiązkowa. Uwaga
Oprócz magii dodanej przez jądro PySpark, możesz także korzystać z wbudowanych magii IPython, w tym
%%sh. Możesz użyć magii%%shdo uruchamiania skryptów i bloków kodu na headnode klastra.Automatyczna wizualizacja. Jądro Pyspark automatycznie wizualizuje wyniki zapytań Hive i SQL. Możesz wybrać jeden z kilku typów wizualizacji: Tabela, wykres kołowy, wykres liniowy, wykres warstwowy, wykres słupkowy.
Parametry obsługiwane przez polecenie magiczne %%sql
Polecenie magiczne %%sql obsługuje różne parametry, których możesz użyć do kontrolowania rodzaju danych wyjściowych otrzymywanych podczas wykonywania zapytań. Poniższa tabela przedstawia wyniki wyjściowe.
| Parameter | Przykład | Opis |
|---|---|---|
| -o | -o <VARIABLE NAME> |
Użyj tego parametru, aby utrwalić wynik zapytania w kontekście %%local Python jako dataframe Pandas. Nazwa zmiennej dataframe to nazwa zmiennej, którą podajesz. |
| -q | -q |
Użyj tego parametru, aby wyłączyć wizualizacje dla komórki. Jeśli nie chcesz autowizualizować zawartości komórki, tylko przechwycić ją jako ramkę danych, użyj -q -o <VARIABLE>. Jeśli chcesz wyłączyć wizualizacje bez przechwytywania wyników (na przykład podczas uruchamiania zapytania SQL, takiego jak instrukcja CREATE TABLE), użyj -q bez podawania argumentu -o. |
| -m | -m <METHOD> |
Gdzie METHOD to take albo sample (wartość domyślna to take). Jeśli metoda to take, jądro wybiera elementy z góry zbioru danych wyników określonych przez MAXROWS (opisanych później w tej tabeli). Jeśli metoda jest próbkowaniem, jądro losowo próbkuje elementy zbioru danych według parametrów -r , opisanych dalej w tej tabeli. |
| -r | -r <FRACTION> |
Tutaj FRACTION to liczba zmiennoprzecinkowa między 0,0 a 1,0. Jeśli przykładowa metoda zapytania SQL to sample, to jądro losowo pobiera określony ułamek elementów zbioru wyników dla Ciebie. Na przykład, jeśli wykonasz zapytanie SQL z argumentami -m sample -r 0.01, to losowo wybierany jest 1% wierszy wyników. |
| -n | -n <MAXROWS> |
MAXROWS to wartość całkowita. Jądro ogranicza liczbę wierszy wyjściowych do MAXROWS. Jeśli MAXROWS jest liczbą ujemną, na przykład - 1, to liczba wierszy w zbiorze wyników nie jest ograniczona. |
Example:
%%sql -q -m sample -r 0.1 -n 500 -o query2
SELECT * FROM hivesampletable
Powyższe stwierdzenie wykonuje następujące działania:
- Wybiera wszystkie rekordy z hivesampletable.
- Ponieważ używamy -q, wyłącza się autowizualizacja.
- Ponieważ używamy
-m sample -r 0.1 -n 500, losowo pobiera on 10% wierszy z tabeli hivesampletable i ogranicza rozmiar zestawu wyników do 500 wierszy. - Na koniec, ponieważ użyliśmy
-o query2, zapisuje ono również dane wyjściowe w ramce danych o nazwie query2.
Uwagi podczas korzystania z nowych jąder
Niezależnie od tego, którego kernela używasz, pozostawienie notebooków uruchomionych zużywa zasoby klastra. W przypadku tych kerneli, ponieważ konteksty są wstępnie ustawione, samo zamknięcie notatników nie kończy kontekstu. Zasoby klastra są nadal wykorzystywane. Dobrą praktyką jest użycie opcji Zamknij i Zatrzymaj w menu Plik w notesie, gdy skończysz korzystać z notatnika. Zamknięcie zabija kontekst, a potem wychodzi z notesu.
Gdzie przechowywane są zeszyty?
Jeśli Twój klaster używa Azure Storage jako domyślnego konta pamięci, Jupyter Notebooks są zapisywane na koncie pamięci w folderze /HdiNotebooks. Notatniki, pliki tekstowe i foldery, które tworzysz w Jupyterze, są dostępne z konta pamięci. Na przykład, jeśli użyjesz Jupytera do utworzenia folderu myfolder i notatnika myfolder/mynotebook.ipynb, możesz uzyskać dostęp do tego notesu w /HdiNotebooks/myfolder/mynotebook.ipynb ramach konta magazynowego. Działa to także w drugą stronę, to znaczy jeśli prześlesz notatnik bezpośrednio na swoje konto magazynu w /HdiNotebooks/mynotebook1.ipynb, notatnik będzie również widoczny w Jupyterze. Notebooki pozostają na koncie pamięci nawet po usunięciu klastra.
Uwaga
Klastry HDInsight z domyślnym nośnikiem Azure Data Lake Storage nie przechowują notebooków w powiązanych pamięciach.
Sposób zapisywania notebooków na koncie pamięci jest kompatybilny z Apache Hadoop HDFS. Jeśli połączysz się przez SSH do klastra, możesz użyć poleceń zarządzania plikami:
| Command | Opis |
|---|---|
hdfs dfs -ls /HdiNotebooks |
# Wyświetl wszystko w katalogu głównym — wszystko, co znajduje się w tym katalogu, jest widoczne w Jupyterze na stronie głównej |
hdfs dfs –copyToLocal /HdiNotebooks |
# Pobierz zawartość folderu HdiNotebooks |
hdfs dfs –copyFromLocal example.ipynb /HdiNotebooks |
# Prześlij plik notatnika example.ipynb do folderu głównego, aby był widoczny w Jupyterze |
Niezależnie od tego, czy klaster używa Azure Storage czy Azure Data Lake Storage jako domyślnego konta pamięciowego, notatniki są również zapisywane na węźle głównym klastra w ./var/lib/jupyter
Obsługiwana przeglądarka
Notebooki Jupyter na klastrach Spark HDInsight są obsługiwane tylko w Google Chrome.
Sugestie
Nowe ziarna są w fazie ewolucji i dojrzeją z czasem. API mogą się zmieniać wraz z dojrzewaniem tych jąder. Będziemy wdzięczni za wszelkie opinie dotyczące korzystania z tych nowych jąder. Informacje zwrotne pomagają kształtować finalne wydanie tych jąder. Możesz zostawić swoje komentarze/opinie w sekcji Feedback na dole tego artykułu.