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

  1. Från Azure-portalen väljer du ditt Spark-kluster. Se Lista och visa kluster för anvisningarna. Översiktsvyn öppnas.

  2. 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.

    Jupyter Notebook on Apache Spark.

    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

  3. 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.

    Kernels for Jupyter Notebook on Spark.

Kommentar

För Spark 3.1 är endast PySpark3 eller Spark tillgängliga.

Kernels for Jupyter Notebook on Spark HDI4.0.

  1. 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.

    Magi Exempel beskrivning
    hjälp %%help Genererar en tabell med alla tillgängliga magi med exempel och beskrivning
    Information om %%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 takevä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 sampletar 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.01samplas 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 500tar 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.

Nästa steg