Kernels for Jupyter Notebook på Apache Spark-kluster i Azure HDInsight
HDInsight Spark-kluster tillhandahåller kernels som du kan använda med Jupyter Notebook på Apache Spark för att testa dina program. En kernel är ett program som kör och tolkar koden. De tre kärnorna är:
- PySpark – för program som skrivits i Python2. (Gäller endast för Spark 2.4-versionskluster)
- PySpark3 – för program skrivna i Python3.
- Spark – för program som skrivits i Scala.
I den här artikeln lär du dig hur du använder dessa kärnor och fördelarna med att använda dem.
Förutsättningar
Ett Apache Spark-kluster i HDInsight. Anvisningar finns i Skapa Apache Spark-kluster i Azure HDInsight.
Skapa en Jupyter Notebook på Spark HDInsight
Från Azure-portalen väljer du ditt Spark-kluster. Se Lista och visa kluster för anvisningarna. Översiktsvyn öppnas.
I översiktsvyn går du till rutan Klusterinstrumentpaneler och väljer Jupyter Notebook. Ange administratörsautentiseringsuppgifterna för klustret om du uppmanas att göra det.
Kommentar
Du kan också nå Jupyter Notebook i Spark-klustret genom att öppna följande URL i webbläsaren. Ersätt CLUSTERNAME med namnet på klustret:
https://CLUSTERNAME.azurehdinsight.net/jupyter
Välj Ny och välj sedan Antingen Pyspark, PySpark3 eller Spark för att skapa en notebook-fil. Använd Spark-kerneln för Scala-program, PySpark-kernel för Python2-program och PySpark3-kernel för Python3-program.
Kommentar
För Spark 3.1 är endast PySpark3 eller Spark tillgängliga.
- En notebook-fil öppnas med den kernel som du har valt.
Fördelar med att använda kernels
Här följer några fördelar med att använda de nya kärnorna med Jupyter Notebook i Spark HDInsight-kluster.
Förinställda kontexter. Med PySpark, PySpark3 eller Spark-kernels behöver du inte ange Spark- eller Hive-kontexterna explicit innan du börjar arbeta med dina program. Dessa kontexter är tillgängliga som standard. Dessa kontexter är:
sc – för Spark-kontext
sqlContext – för Hive-kontext
Därför behöver du inte köra instruktioner som följande för att ange kontexterna:
sc = SparkContext('yarn-client') sqlContext = HiveContext(sc)
I stället kan du direkt använda förinställda kontexter i ditt program.
Cellmagi. PySpark-kerneln innehåller några fördefinierade "magier", som är särskilda kommandon som du kan anropa med
%%
(till exempel%%MAGIC
<args>
). Det magiska kommandot måste vara det första ordet i en kodcell och tillåta flera rader innehåll. Det magiska ordet ska vara det första ordet i cellen. Att lägga till något innan magin, även kommentarer, orsakar ett fel. Mer information om magi finns här.I följande tabell visas de olika magierna som är tillgängliga via kernels.
Trolleri Exempel beskrivning hjälp %%help
Genererar en tabell med alla tillgängliga magi med exempel och beskrivning information %%info
Utdata för sessionsinformation för den aktuella Livy-slutpunkten konfigurera %%configure -f
{"executorMemory": "1000M"
,"executorCores": 4
}Konfigurerar parametrarna för att skapa en session. Force-flaggan ( -f
) är obligatorisk om en session redan har skapats, vilket säkerställer att sessionen tas bort och återskapas. Titta på Livys POST/sessions Begärandetext för en lista över giltiga parametrar. Parametrar måste skickas som en JSON-sträng och måste finnas på nästa rad efter magin, som du ser i exempelkolumnen.sql %%sql -o <variable name>
SHOW TABLES
Kör en Hive-fråga mot sqlContext. Om parametern -o
skickas sparas resultatet av frågan i den %%lokala Python-kontexten som en Pandas-dataram .lokal %%local
a=1
All kod i senare rader körs lokalt. Koden måste vara giltig Python2-kod oavsett vilken kernel du använder. Även om du valde PySpark3 - eller Spark-kernels när du skapade notebook-filen, får cellen endast ha giltig Python2-kod om du använder magin %%local
i en cell.loggar %%logs
Matar ut loggarna för den aktuella Livy-sessionen. delete %%delete -f -s <session number>
Tar bort en specifik session för den aktuella Livy-slutpunkten. Du kan inte ta bort sessionen som startas för själva kärnan. cleanup %%cleanup -f
Tar bort alla sessioner för den aktuella Livy-slutpunkten, inklusive den här notebook-sessionen. Force-flaggan -f är obligatorisk. Kommentar
Förutom magin som läggs till av PySpark-kerneln kan du också använda de inbyggda IPython-magierna, inklusive
%%sh
. Du kan använda magin%%sh
för att köra skript och kodblock på klustrets huvudnod.Automatisk visualisering. Pyspark-kerneln visualiserar automatiskt utdata från Hive- och SQL-frågor. Du kan välja mellan flera olika typer av visualiseringar, inklusive Tabell, Cirkel, Linje, Område, Stapel.
Parametrar som stöds med %%sql magic
Magin %%sql
stöder olika parametrar som du kan använda för att styra vilken typ av utdata du får när du kör frågor. I följande tabell visas utdata.
Parameter | Exempel | beskrivning |
---|---|---|
-o | -o <VARIABLE NAME> |
Använd den här parametern för att bevara resultatet av frågan, i den %%lokala Python-kontexten, som en Pandas-dataram . Namnet på dataramvariabeln är det variabelnamn som du anger. |
-q | -q |
Använd den här parametern för att inaktivera visualiseringar för cellen. Om du inte vill automatisktvisualisera innehållet i en cell och bara vill avbilda den som en dataram använder -q -o <VARIABLE> du . Om du vill inaktivera visualiseringar utan att samla in resultaten (till exempel för att köra en SQL-fråga, som en CREATE TABLE instruktion), använder du -q utan att ange ett -o argument. |
-m | -m <METHOD> |
Där METODEN antingen är take eller sample (standard är take). Om metoden är take väljer kerneln element överst i resultatdatauppsättningen som anges av MAXROWS (beskrivs senare i den här tabellen). Om metoden är ett exempel tar kerneln slumpmässigt exempel på element i datauppsättningen enligt -r parametern, som beskrivs härnäst i den här tabellen. |
-r | -r <FRACTION> |
Här är FRACTION ett flyttalsnummer mellan 0,0 och 1,0. Om exempelmetoden för SQL-frågan är sample tar kerneln slumpmässigt exempel på den angivna delen av elementen i resultatuppsättningen åt dig. Om du till exempel kör en SQL-fråga med argumenten -m sample -r 0.01 samplas 1 % av resultatraderna slumpmässigt. |
-n | -n <MAXROWS> |
MAXROWS är ett heltalsvärde. Kerneln begränsar antalet utdatarader till MAXROWS. Om MAXROWS är ett negativt tal, till exempel -1, är antalet rader i resultatuppsättningen inte begränsat. |
Exempel:
%%sql -q -m sample -r 0.1 -n 500 -o query2
SELECT * FROM hivesampletable
Instruktionen ovan utför följande åtgärder:
- Markerar alla poster från hivesampletable.
- Eftersom vi använder -q inaktiveras automatiskvisualisering.
- Eftersom vi använder
-m sample -r 0.1 -n 500
tar den slumpmässiga exempel på 10 % av raderna i hivesampletable och begränsar storleken på resultatet till 500 rader. - Slutligen, eftersom vi använde
-o query2
den sparar även utdata i en dataram med namnet query2.
Överväganden vid användning av de nya kärnorna
Oavsett vilken kernel du använder så förbrukar notebook-filerna klusterresurserna. Med dessa kernels, eftersom kontexterna är förinställda, dödar det inte kontexten att helt enkelt avsluta notebook-filerna. Så klusterresurserna fortsätter att användas. En bra idé är att använda alternativet Stäng och stoppa från anteckningsbokens Arkiv-meny när du är klar med notebook-filen. Stängningen dödar kontexten och avslutar sedan notebook-filen.
Var lagras anteckningsböckerna?
Om ditt kluster använder Azure Storage som standardlagringskonto sparas Jupyter Notebooks till lagringskontot under mappen /HdiNotebooks . Notebook-filer, textfiler och mappar som du skapar från Jupyter är tillgängliga från lagringskontot. Om du till exempel använder Jupyter för att skapa en mapp myfolder
och en notebook-fil myfolder/mynotebook.ipynb kan du komma åt anteckningsboken i /HdiNotebooks/myfolder/mynotebook.ipynb
lagringskontot. Det omvända är också sant, dvs om du laddar upp en notebook-fil direkt till ditt lagringskonto på /HdiNotebooks/mynotebook1.ipynb
, är notebook-filen också synlig från Jupyter. Notebook-filer finns kvar på lagringskontot även efter att klustret har tagits bort.
Kommentar
HDInsight-kluster med Azure Data Lake Storage eftersom standardlagringen inte lagrar notebook-filer i tillhörande lagring.
Det sätt som notebook-filer sparas på lagringskontot är kompatibelt med Apache Hadoop HDFS. Om du SSH till klustret kan du använda filhanteringskommandona:
Kommando | beskrivning |
---|---|
hdfs dfs -ls /HdiNotebooks |
# Lista allt i rotkatalogen – allt i den här katalogen är synligt för Jupyter från startsidan |
hdfs dfs –copyToLocal /HdiNotebooks |
# Ladda ned innehållet i mappen HdiNotebooks |
hdfs dfs –copyFromLocal example.ipynb /HdiNotebooks |
# Ladda upp en notebook-fil example.ipynb till rotmappen så att den visas från Jupyter |
Oavsett om klustret använder Azure Storage eller Azure Data Lake Storage som standardlagringskonto sparas även notebook-filerna på klusterhuvudnoden på /var/lib/jupyter
.
Webbläsare som stöds
Jupyter Notebooks i Spark HDInsight-kluster stöds endast i Google Chrome.
Förslag
De nya kärnorna håller på att utvecklas och kommer att mogna över tid. API:erna kan därför ändras när dessa kärnor mognar. Vi uppskattar all feedback som du har när du använder dessa nya kärnor. Feedbacken är användbar för att forma den slutliga versionen av dessa kärnor. Du kan lämna dina kommentarer/feedback under avsnittet Feedback längst ned i den här artikeln.