Azure HDInsight'ta Apache Spark kümelerinde Jupyter Notebook çekirdekleri

HDInsight Spark kümeleri, uygulamalarınızı test etme amacıyla Apache Spark'ta Jupyter Notebook ile kullanabileceğiniz çekirdekler sağlar. Çekirdek, kodunuzu çalıştıran ve yorumlayan bir programdır. Üç çekirdek şunlardır:

  • PySpark - Python2 ile yazılmış uygulamalar için. (Yalnızca Spark 2.4 sürüm kümeleri için geçerlidir)
  • PySpark3 - Python3 ile yazılmış uygulamalar için.
  • Spark - Scala'da yazılan uygulamalar için.

Bu makalede, bu çekirdekleri kullanmayı ve bunların avantajlarını öğreneceksiniz.

Önkoşullar

HDInsight'ta Apache Spark kümesi. Yönergeler için bkz. Azure HDInsight'ta Apache Spark kümeleri oluşturma.

Spark HDInsight'ta Jupyter Notebook oluşturma

  1. Azure portalından Spark kümenizi seçin. Yönergeler için bkz . Kümeleri listeleme ve gösterme. Genel Bakış görünümü açılır.

  2. Genel Bakış görünümündeki Küme panoları kutusunda Jupyter Not Defteri'ni seçin. İstenirse, küme için yönetici kimlik bilgilerini girin.

    Jupyter Notebook on Apache Spark.

    Not

    Ayrıca, tarayıcınızda aşağıdaki URL'yi açarak Spark kümesindeki Jupyter Notebook'a da ulaşabilirsiniz. CLUSTERNAME değerini kümenizin adıyla değiştirin:

    https://CLUSTERNAME.azurehdinsight.net/jupyter

  3. Yeni'yi seçin ve ardından not defteri oluşturmak için Pyspark, PySpark3 veya Spark'ı seçin. Scala uygulamaları için Spark çekirdeğini, Python2 uygulamaları için PySpark çekirdeğini ve Python3 uygulamaları için PySpark3 çekirdeğini kullanın.

    Kernels for Jupyter Notebook on Spark.

Not

Spark 3.1 için yalnızca PySpark3 veya Spark kullanılabilir.

Kernels for Jupyter Notebook on Spark HDI4.0.

  1. Seçtiğiniz çekirdekle birlikte bir not defteri açılır.

Çekirdekleri kullanmanın avantajları

Spark HDInsight kümelerinde Jupyter Notebook ile yeni çekirdekleri kullanmanın birkaç avantajı aşağıdadır.

  • Önceden ayarlanmış bağlamlar. PySpark, PySpark3 veya Spark çekirdekleriyle, uygulamalarınızla çalışmaya başlamadan önce Spark veya Hive bağlamlarını açıkça ayarlamanız gerekmez. Bu bağlamlar varsayılan olarak kullanılabilir. Bu bağlamlar şunlardır:

    • sc - Spark bağlamı için

    • sqlContext - Hive bağlamı için

      Bu nedenle, bağlamları ayarlamak için aşağıdaki gibi deyimleri çalıştırmanız gerekmez :

      sc = SparkContext('yarn-client')
      sqlContext = HiveContext(sc)
      

      Bunun yerine, uygulamanızda önceden ayarlanmış bağlamları doğrudan kullanabilirsiniz.

  • Hücre sihirleri. PySpark çekirdeği, ile çağırabileceğiniz %% özel komutlar olan önceden tanımlanmış bazı "büyüler" sağlar (örneğin, %%MAGIC<args>). Sihirli komut bir kod hücresindeki ilk sözcük olmalı ve birden çok içerik satırına izin vermelidir. Sihirli sözcük hücredeki ilk sözcük olmalıdır. Büyünün önüne her şeyi eklemek, hatta açıklamalar bile hataya neden olur. Sihirler hakkında daha fazla bilgi için buraya bakın.

    Aşağıdaki tabloda çekirdekler aracılığıyla kullanılabilen farklı sihirler listelemektedir.

    Sihirli Örnek Açıklama
    Yardım %%help Örnek ve açıklama içeren kullanılabilir tüm sihirlerden oluşan bir tablo oluşturur
    Bilgi %%info Geçerli Livy uç noktası için oturum bilgilerini çıktılar
    yapılandırma %%configure -f
    {"executorMemory": "1000M",
    "executorCores": 4}
    Oturum oluşturmak için parametreleri yapılandırılır. Zorlama bayrağı (-f), oturum zaten oluşturulmuşsa zorunludur ve bu da oturumun bırakılmasını ve yeniden oluşturulmasını sağlar. Geçerli parametrelerin listesi için Livy'nin POST/sessions İstek Gövdesi'ne bakın. Parametreler JSON dizesi olarak geçirilmeli ve örnek sütunda gösterildiği gibi sihirden sonraki satırda olmalıdır.
    sql %%sql -o <variable name>
    SHOW TABLES
    sqlContext'e karşı bir Hive sorgusu yürütür. -o Parametre geçirilirse sorgunun sonucu%% yerel Python bağlamında Pandas veri çerçevesi olarak kalır.
    yerel %%local
    a=1
    Sonraki satırlardaki tüm kod yerel olarak yürütülür. Hangi çekirdeği kullanıyor olursanız olun kodun geçerli Python2 kodu olması gerekir. Bu nedenle, not defterini oluştururken PySpark3 veya Spark çekirdeklerini seçmiş olsanız bile, bir hücredeki %%local sihri kullanırsanız, bu hücrenin yalnızca geçerli Python2 kodu olmalıdır.
    günlükler %%logs Geçerli Livy oturumu için günlüklerin çıkışını alır.
    delete %%delete -f -s <session number> Geçerli Livy uç noktasının belirli bir oturumunu siler. Çekirdeğin kendisi için başlatılan oturumu silemezsiniz.
    temizle %%cleanup -f Bu not defterinin oturumu da dahil olmak üzere geçerli Livy uç noktası için tüm oturumları siler. -f zorlama bayrağı zorunludur.

    Not

    PySpark çekirdeği tarafından eklenen büyülere ek olarak, dahil olmak üzere %%shyerleşik IPython büyülerini de kullanabilirsiniz. Küme baş düğümünde %%sh betikleri ve kod bloğunu çalıştırmak için sihri kullanabilirsiniz.

  • Otomatik görselleştirme. Pyspark çekirdeği Hive ve SQL sorgularının çıkışını otomatik olarak görselleştirir. Tablo, Pasta, Çizgi, Alan, Çubuk gibi çeşitli görselleştirme türleri arasından seçim yapabilirsiniz.

%%sql magic ile desteklenen parametreler

Sihir, %%sql sorguları çalıştırdığınızda aldığınız çıkış türünü denetlemek için kullanabileceğiniz farklı parametreleri destekler. Aşağıdaki tabloda çıktı listelenir.

Parametre Örnek Açıklama
-o -o <VARIABLE NAME> Sorgunun sonucunu %%yerel Python bağlamında Pandas veri çerçevesi olarak kalıcı hale getirmek için bu parametreyi kullanın. Veri çerçevesi değişkeninin adı, belirttiğiniz değişken adıdır.
-q -q Hücrenin görselleştirmelerini kapatmak için bu parametreyi kullanın. Bir hücrenin içeriğini otomatik olarak görselleştirmek ve yalnızca veri çerçevesi olarak yakalamak istiyorsanız kullanın -q -o <VARIABLE>. Sonuçları yakalamadan görselleştirmeleri kapatmak istiyorsanız (örneğin, deyim gibi CREATE TABLE bir SQL sorgusu çalıştırmak için) bağımsız değişken belirtmeden -o kullanın-q.
-M -m <METHOD> Burada METHOD alma veya örnektir(varsayılan değer alır). yöntemi ise takeçekirdek, MAXROWS tarafından belirtilen sonuç veri kümesinin üst kısmından öğeleri seçer (bu tablonun ilerleyen bölümlerinde açıklanmaktadır). Yöntem örnekse çekirdek, bu tabloda daha sonra açıklanan parametreye -r göre veri kümesinin öğelerini rastgele örnekler.
-r -r <FRACTION> Burada KESir , 0,0 ile 1,0 arasında kayan noktalı bir sayıdır. SQL sorgusu için örnek yöntem ise sample, çekirdek sizin için sonuç kümesinin öğelerinin belirtilen bölümünü rastgele örnekler. Örneğin, bağımsız değişkenlerle -m sample -r 0.01bir SQL sorgusu çalıştırırsanız sonuç satırlarının %1'i rastgele örneklenir.
-n -n <MAXROWS> MAXROWS bir tamsayı değeridir. Çekirdek, çıkış satırlarının sayısını MAXROWS ile sınırlar. MAXROWS -1 gibi negatif bir sayıysa sonuç kümesindeki satır sayısı sınırlı değildir.

Örnek:

%%sql -q -m sample -r 0.1 -n 500 -o query2
SELECT * FROM hivesampletable

Yukarıdaki deyim aşağıdaki eylemleri gerçekleştirir:

  • Hivesampletable'dan tüm kayıtları seçer.
  • -q kullandığımız için otomatik görselleştirmeyi kapatır.
  • kullandığımız için -m sample -r 0.1 -n 500hivesampletable içindeki satırların %10'unu rastgele örnekler ve sonucun boyutunu 500 satırla sınırlar.
  • Son olarak, kullandığımız -o query2 için çıktıyı query2 adlı bir veri çerçevesine de kaydeder.

Yeni çekirdekleri kullanırken dikkat edilmesi gerekenler

Hangi çekirdeği kullanırsanız kullanın, not defterlerini çalışır durumda bırakmak küme kaynaklarını kullanır. Bu çekirdeklerde, bağlamlar önceden ayarlanmış olduğundan, not defterlerinden çıkmak bağlamı sonlandırmaz. Küme kaynakları kullanımda olmaya devam ediyor. Not defterini kullanmayı bitirdiğinizde not defterinin Dosya menüsündeki Kapat ve Durdur seçeneğini kullanmak iyi bir yöntemdir. Kapatma, bağlamı öldürür ve ardından not defterinden çıkar.

Not defterleri nerede depolanır?

Kümeniz varsayılan depolama hesabı olarak Azure Depolama kullanıyorsa Jupyter Notebooks, /HdiNotebooks klasörü altında depolama hesabına kaydedilir. Jupyter içinden oluşturduğunuz not defterlerine, metin dosyalarına ve klasörlere depolama hesabından erişilebilir. Örneğin, bir klasör myfolder ve myfolder/mynotebook.ipynb not defteri oluşturmak için Jupyter kullanıyorsanız bu not defterine /HdiNotebooks/myfolder/mynotebook.ipynb depolama hesabından erişebilirsiniz. Bunun tersi de geçerlidir, yani doğrudan konumundaki /HdiNotebooks/mynotebook1.ipynbdepolama hesabınıza bir not defteri yüklerseniz, not defteri Jupyter'dan da görünür. Not defterleri, küme silindikten sonra bile depolama hesabında kalır.

Not

Varsayılan depolama alanı olarak Azure Data Lake Depolama olan HDInsight kümeleri, not defterlerini ilişkili depolama alanında depolamaz.

Not defterlerinin depolama hesabına kaydedilmesi Apache Hadoop HDFS ile uyumludur. Kümede SSH kullanıyorsanız dosya yönetimi komutlarını kullanabilirsiniz:

Komut Açıklama
hdfs dfs -ls /HdiNotebooks # Kök dizindeki her şeyi listele - bu dizindeki her şey giriş sayfasından Jupyter'a görünür
hdfs dfs –copyToLocal /HdiNotebooks # HdiNotebooks klasörünün içeriğini indirme
hdfs dfs –copyFromLocal example.ipynb /HdiNotebooks # Bir notebook example.ipynb dosyasını Jupyter'dan görülebilmesi için kök klasöre yükleyin

Kümenin varsayılan depolama hesabı olarak Azure Depolama veya Azure Data Lake Depolama kullandığından, not defterleri de konumundaki /var/lib/jupyterküme baş düğümüne kaydedilir.

Desteklenen tarayıcı

Spark HDInsight kümelerindeki Jupyter Notebook'lar yalnızca Google Chrome'da desteklenir.

Öneriler

Yeni çekirdekler gelişmektedir ve zaman içinde olgunlaşır. Bu nedenle, bu çekirdekler olgunlaştıkça API'ler değişebilir. Bu yeni çekirdekleri kullanırken geri bildirimleriniz için teşekkür ederiz. Geri bildirim, bu çekirdeklerin son sürümünü şekillendirmede yararlıdır. Yorumlarınızı/geri bildiriminizi bu makalenin altındaki Geri Bildirim bölümünde bırakabilirsiniz.

Sonraki adımlar