A Jupyter Notebook kernelei Apache Spark-fürtökön az Azure HDInsightban
A HDInsight Spark-fürtök olyan kerneleket biztosítanak, amelyeket az Apache Spark jupyter notebookjával használhat az alkalmazások teszteléséhez. A kernel olyan program, amely futtatja és értelmezi a kódot. A három kernel a következő:
- PySpark – Python2-ben írt alkalmazásokhoz. (Csak Spark 2.4-es verziójú fürtök esetén alkalmazható)
- PySpark3 – Python3-ban írt alkalmazásokhoz.
- Spark – Scalában írt alkalmazásokhoz.
Ebből a cikkből megtudhatja, hogyan használhatja ezeket a kerneleket, és hogyan használhatja őket.
Előfeltételek
Apache Spark-fürt a HDInsightban. További útmutatásért lásd: Apache Spark-fürt létrehozása az Azure HDInsightban.
Jupyter-jegyzetfüzet létrehozása a Spark HDInsightban
Az Azure Portalon válassza ki a Spark-fürtöt. Az utasításokért tekintse meg a fürtök listáját és megjelenítését. Megnyílik az Áttekintés nézet.
Az Áttekintés nézet Fürt irányítópultok mezőjében válassza a Jupyter Notebook lehetőséget. Ha a rendszer felkéri rá, adja meg a fürthöz tartozó rendszergazdai hitelesítő adatokat.
Feljegyzés
A Spark-fürtön található Jupyter Notebookot is elérheti az alábbi URL-cím böngészőben való megnyitásával. Cserélje le a CLUSTERNAME elemet a fürt nevére:
https://CLUSTERNAME.azurehdinsight.net/jupyter
Válassza az Új lehetőséget, majd a Jegyzetfüzet létrehozásához válassza a Pyspark, a PySpark3 vagy a Spark lehetőséget. Használja a Spark kernelt Scala-alkalmazásokhoz, Python2-alkalmazásokhoz a PySpark kernelt és a Python3-alkalmazásokhoz készült PySpark3 kernelt.
Feljegyzés
A Spark 3.1-ben csak a PySpark3 vagy a Spark érhető el.
- Megnyílik egy jegyzetfüzet a kiválasztott kernellel.
A kernelek használatának előnyei
Íme néhány előnye annak, hogy az új kerneleket a Jupyter Notebook használatával használhatja Spark HDInsight-fürtökön.
Előre beállított környezetek. A PySpark, a PySpark3 vagy a Spark-kernelek esetében nem kell explicit módon beállítania a Spark- vagy Hive-környezeteket, mielőtt elkezdené használni az alkalmazásokat. Ezek a környezetek alapértelmezés szerint elérhetők. Ezek a környezetek a következők:
sc – Spark-környezethez
sqlContext – Hive-környezethez
Így a környezetek beállításához nem kell az alábbihoz hasonló utasításokat futtatnia:
sc = SparkContext('yarn-client') sqlContext = HiveContext(sc)
Ehelyett közvetlenül használhatja az alkalmazás előre beállított környezeteit.
Cellavarázsok. A PySpark kernel előre definiált "varázslatokat" biztosít, amelyek olyan speciális parancsok, amelyekkel
%%
meghívható (például%%MAGIC
<args>
). A varázsparancsnak a kódcellák első szójának kell lennie, és lehetővé kell tennie több sornyi tartalom használatát. A varázsszó legyen az első szó a cellában. Ha bármit hozzáad a varázslat előtt, még a megjegyzéseket is, hibát okoz. A varázslatokkal kapcsolatos további információkért lásd itt.Az alábbi táblázat a kerneleken keresztül elérhető különböző varázslatokat sorolja fel.
Magic Példa Leírás súgó %%help
Létrehoz egy táblázatot az összes elérhető varázslatról példával és leírással Info %%info
Az aktuális Livy-végpont munkamenetadatainak kimenete Konfigurálás %%configure -f
{"executorMemory": "1000M"
,"executorCores": 4
}Konfigurálja a munkamenet létrehozásához szükséges paramétereket. Az erőjelző ( -f
) kötelező, ha már létrejött egy munkamenet, amely biztosítja a munkamenet elvetése és újbóli létrehozása. Tekintse meg Livy POST/sessions kérelemtörzsét az érvényes paraméterek listájához. A paramétereket JSON-sztringként kell átadni, és a varázslat után a következő sorban kell lenniük, ahogyan az a példaoszlopban látható.sql %%sql -o <variable name>
SHOW TABLES
Hive-lekérdezést hajt végre az sqlContexten. Ha a -o
paraméter átadása megtörtént, a lekérdezés eredménye pandas-adatkeretként megmarad a %%helyi Python-környezetben.helyi %%local
a=1
A későbbi sorokban szereplő összes kód helyileg lesz végrehajtva. A kódnak érvényes Python2-kódnak kell lennie, függetlenül attól, hogy melyik kernelt használja. Így még akkor is, ha a jegyzetfüzet létrehozásakor a PySpark3 vagy a Spark kerneleket választotta ki, ha a %%local
varázslatot egy cellában használja, annak a cellának csak érvényes Python2-kóddal kell rendelkeznie.naplók %%logs
Az aktuális Livy-munkamenet naplóit adja ki. Törlés... %%delete -f -s <session number>
Törli az aktuális Livy-végpont egy adott munkamenetét. A kernelhez indított munkamenet nem törölhető. tisztítás %%cleanup -f
Törli az aktuális Livy-végpont összes munkamenetét, beleértve a jegyzetfüzet munkamenetét is. Az -f erőjelző kötelező. Feljegyzés
A PySpark kernel által hozzáadott varázslatok mellett a beépített IPython-varázslatokat is használhatja, beleértve a
%%sh
. A%%sh
varázslattal szkripteket és kódblokkokat futtathat a fürt fejcsomópontján.Automatikus vizualizáció. A Pyspark kernel automatikusan megjeleníti a Hive- és SQL-lekérdezések kimenetét. Többféle vizualizáció közül választhat, például Táblázat, Kör, Vonal, Terület, Sáv.
A %%sql magic által támogatott paraméterek
A %%sql
varázslat különböző paramétereket támogat, amelyekkel szabályozható a lekérdezések futtatásakor kapott kimenet típusa. Az alábbi táblázat a kimenetet sorolja fel.
Példa:
%%sql -q -m sample -r 0.1 -n 500 -o query2
SELECT * FROM hivesampletable
A fenti utasítás a következő műveleteket hajtja végre:
- Kiválasztja az összes rekordot a hivesampletable fájlból.
- Mivel a -q parancsot használjuk, kikapcsolja az automatikus vizualizációt.
- Mivel használjuk
-m sample -r 0.1 -n 500
, véletlenszerűen mintát vesz a hivesampletable sorainak 10%-át, és 500 sorra korlátozza az eredményhalmaz méretét. - Végül, mivel használtuk
-o query2
, a kimenetet egy lekérdezés2 nevű adatkeretbe is menti.
Az új kernelek használata során megfontolandó szempontok
Bármelyik kernelt is használja, a futó jegyzetfüzetek elhagyása a fürt erőforrásait használja. Ezekkel a kernelekkel, mivel a környezetek előre vannak beállítva, a jegyzetfüzetek elhagyása nem öli meg a környezetet. Így a fürterőforrások továbbra is használatban maradnak. A jegyzetfüzet Fájl menüjében a Bezárás és a Leállítás lehetőség használata ajánlott, ha befejezte a jegyzetfüzet használatát. A lezárás megöli a környezetet, majd kilép a jegyzetfüzetből.
Hol vannak tárolva a jegyzetfüzetek?
Ha a fürt az Azure Storage-t használja alapértelmezett tárfiókként, a Rendszer a Jupyter-jegyzetfüzeteket a /HdiNotebooks mappában lévő tárfiókba menti. A Jupyteren belül létrehozott jegyzetfüzetek, szövegfájlok és mappák a tárfiókból érhetők el. Ha például a Jupyter használatával hoz létre egy mappát myfolder
és egy myfolder/mynotebook.ipynb jegyzetfüzetet, a tárfiókon /HdiNotebooks/myfolder/mynotebook.ipynb
belül elérheti a jegyzetfüzetet. A fordítottja is igaz, vagyis ha közvetlenül a tárfiókba /HdiNotebooks/mynotebook1.ipynb
tölt fel jegyzetfüzetet, akkor a jegyzetfüzet a Jupyterből is látható. A jegyzetfüzetek a fürt törlése után is a tárfiókban maradnak.
Feljegyzés
A HDInsight-fürtök, amelyek alapértelmezett tárolóként az Azure Data Lake Storage-t tárolják, nem tárolják a jegyzetfüzeteket a társított tárolóban.
A tárfiókba mentett jegyzetfüzetek kompatibilisek az Apache Hadoop HDFS-vel. Ha SSH-t használ a fürtbe, használhatja a fájlkezelési parancsokat:
Parancs | Leírás |
---|---|
hdfs dfs -ls /HdiNotebooks |
# Lista mindent a gyökérkönyvtárban – ebben a könyvtárban minden látható a Jupyter számára a kezdőlapon |
hdfs dfs –copyToLocal /HdiNotebooks |
# Töltse le a HdiNotebooks mappa tartalmát |
hdfs dfs –copyFromLocal example.ipynb /HdiNotebooks |
# Töltsön fel egy example.ipynb jegyzetfüzetet a gyökérmappába, hogy látható legyen a Jupyterből |
Függetlenül attól, hogy a fürt az Azure Storage-t vagy az Azure Data Lake Storage-t használja-e alapértelmezett tárfiókként, a rendszer a jegyzetfüzeteket a fürt átjárócsomópontjára is menti a következő helyen /var/lib/jupyter
: .
Támogatott böngésző
A Spark HDInsight-fürtökön futó Jupyter Notebookok csak a Google Chrome-ban támogatottak.
Javaslatok
Az új kernelek folyamatosan fejlődnek, és idővel kifejlődnek. Így az API-k változhatnak, ahogy ezek a kernelek kifejlődnek. Nagyra értékelnénk az új kernelek használata során érkezett visszajelzéseket. A visszajelzés hasznos lehet ezeknek a kerneleknek a végleges kiadásának alakításában. Megjegyzéseit/visszajelzéseit a cikk alján található Visszajelzés szakaszban hagyhatja meg.