Azure Synapse Analytics'de Apache Spark için kitaplıkları yönetme

Kitaplıklar, Azure Synapse Analytics'te (Azure Synapse Spark) Apache Spark için programlarınıza veya projelerinize eklemek isteyebileceğiniz yeniden kullanılabilir kodlar sağlar.

Sunucusuz Apache Spark havuz ortamınızı çeşitli nedenlerle güncelleştirmeniz gerekebilir. Örneğin, şunları bulabilirsiniz:

  • Temel bağımlılıklarınızdan biri yeni bir sürüm yayımladı.
  • Makine öğrenmesi modelinizi eğitmak veya verilerinizi hazırlamak için ek bir pakete ihtiyacınız vardır.
  • Daha iyi bir paket mevcuttur ve artık eski pakete ihtiyacınız yoktur.
  • Takımınız, Apache Spark havuzunuzda kullanılabilir olması gereken özel bir paket oluşturms.

Üçüncü taraf veya yerel olarak derlenmiş kodu uygulamalarınız için kullanılabilir hale getirmek için sunucusuz Apache Spark havuzlarınızdan birine veya bir not defteri oturumuna bir kitaplık yükleyin.

Paket düzeylerine genel bakış

Azure Synapse Analytics'te yüklü üç paket düzeyi vardır:

  • Varsayılan: Varsayılan paketler tam bir Anaconda yüklemesini ve ek olarak yaygın olarak kullanılan kitaplıkları içerir. Kitaplıkların tam listesi için bkz. Apache Spark sürüm desteği.

    Spark örneği başlatıldığında, bu kitaplıklar otomatik olarak eklenir. Diğer düzeylerde daha fazla paket ekleyebilirsiniz.

  • Spark havuzu: Çalışan tüm yapıtlar Spark havuzu düzeyindeki paketleri kullanabilir. Örneğin, not defteri ve Spark iş tanımlarını ilgili Spark havuzlarına ekleyebilirsiniz.

    Azure Synapse Analytics çalışma alanınızda kullanmak istediğiniz özel kitaplıkları ve açık kaynak kitaplığın belirli bir sürümünü karşıya yükleyebilirsiniz. Çalışma alanı paketleri Spark havuzlarınıza yüklenebilir.

  • Oturum: Oturum düzeyinde yükleme, belirli bir not defteri oturumu için bir ortam oluşturur. Oturum düzeyi kitaplıkların değiştirilmesi oturumlar arasında kalıcı olmaz.

Not

  • Havuz düzeyinde kitaplık yönetimi, paketlerin boyutuna ve gerekli bağımlılıkların karmaşıklığına bağlı olarak, maksimum güncelleştirme süresi 50 dakika olarak ayarlanır. Havuz düzeyinde kitaplık yönetimi işiniz, üst sınır olan 50 dakikayı aşarsa otomatik olarak iptal edilir. Deneysel ve hızlı yinelemeli senaryolar için oturum düzeyinde yükleme yapmanızı öneririz.
  • Havuz düzeyinde kitaplık yönetimi, Not Defterlerinizi ve Spark iş tanımlarınızı çalıştırmak için kararlı bir bağımlılık oluşturur. İşlem hattı çalıştırmaları için kitaplığı Spark havuzunuza yüklemeniz kesinlikle önerilir.
  • Oturum düzeyi kitaplık yönetimi, hızlı yinelemede veya kitaplığın sık sık yapılan değişiklikleriyle ilgilenmenize yardımcı olabilir. Ancak, oturum düzeyi yükleme kararlılığı söz verilmemektedir. Ayrıca, %pip ve %conda gibi satır içi komutlar işlem hattı çalıştırmasında devre dışı bırakılır. Geliştirme aşamasında Notebook oturumunda kitaplığın yönetilmesi önerilir.

Çalışma alanı paketlerini yönetme

Ekibiniz özel uygulamalar veya modeller geliştirdiğinde kodunuzu paketlemek için .whl, .jar veya .tar.gz dosyaları gibi çeşitli kod yapıtları geliştirebilirsiniz.

Önemli

  • tar.gz yalnızca R dili için desteklenir. Lütfen Python özel paketi olarak .whl kullanın.

Azure Synapse'da çalışma alanı paketleri özel veya özel .whl ya da .jar dosyaları olabilir. Bu paketleri çalışma alanınıza yükleyebilir ve daha sonra belirli bir sunucusuz Apache Spark havuzuna atayabilirsiniz. Bu çalışma alanı paketlerini atadıktan sonra, bunlar tüm Spark havuzu oturumlarına otomatik olarak yüklenir.

Çalışma alanı kitaplıklarını yönetme hakkında daha fazla bilgi edinmek için bkz. Çalışma alanı paketlerini yönetme.

Havuz paketlerini yönetme

Bazı durumlarda Apache Spark havuzunda kullanılan paketleri standart hale getirmek isteyebilirsiniz. Bu standartlaştırma, takımınızdaki birden çok kişi aynı paketleri yaygın olarak yüklerse yararlı olabilir.

Azure Synapse Analytics'in havuz yönetimi özelliklerini kullanarak sunucusuz bir Apache Spark havuzuna yüklenecek varsayılan kitaplık kümesini yapılandırabilirsiniz. Bu kitaplıklar temel çalışma zamanının üzerine yüklenir.

Python kitaplıkları için Azure Synapse Spark havuzları, Python paketi bağımlılıklarını yüklemek ve yönetmek için Conda kullanır. requirements.txt veya environment.yml dosyası sağlayarak havuz düzeyinde Python kitaplıklarını belirtebilirsiniz. Bu ortam yapılandırma dosyası, bu Spark havuzundan her Spark örneği oluşturulduğunda kullanılır. Çalışma alanı paketlerini havuzlarınıza da ekleyebilirsiniz.

Bu özellikler hakkında daha fazla bilgi edinmek için bkz. Spark havuz paketlerini yönetme.

Önemli

  • Yüklediğiniz paket büyükse veya yüklenmesi uzun sürüyorsa Spark örneğinin başlangıç süresini etkileyebilir.
  • PySpark, Python, Scala/Java, .NET veya Spark sürümünün değiştirilmesi desteklenmez.

DEP özellikli Azure Synapse Spark havuzları için bağımlılıkları yönetme

Not

Paketleri genel bir depodan yüklemek , DEP özellikli çalışma alanlarında desteklenmez. Bunun yerine, tüm bağımlılıklarınızı çalışma alanı kitaplıkları olarak yükleyin ve Spark havuzunuza yükleyin.

Gerekli bağımlılıkları belirleme konusunda sorun yaşıyorsanız şu adımları izleyin:

  1. Azure Synapse Spark ortamıyla aynı yerel bir Python ortamı ayarlamak için aşağıdaki betiği çalıştırın. Bu betik, Azure Synapse Spark için varsayılan Python ortamında bulunan tüm kitaplıkların listesini içeren bir YAML dosyası gerektirir. Bu YAML dosyasını Apache Spark 3.2 (EOLA) ve Apache Spark 3.3 (GA) gibi belirli çalışma zamanı sürümlerine yönelik belgelerde bulabilirsiniz.

       # One-time Azure Synapse Python setup
       wget Synapse-Python38-CPU.yml
       sudo bash Miniforge3-Linux-x86_64.sh -b -p /usr/lib/miniforge3
       export PATH="/usr/lib/miniforge3/bin:$PATH"
       sudo apt-get -yq install gcc g++
       conda env create -n synapse-env -f Synapse-Python38-CPU.yml 
       source activate synapse-env
    
  2. Gerekli bağımlılıkları belirlemek için aşağıdaki betiği çalıştırın. Betik, Spark 3.1 veya Spark 3.2 havuzuna yüklemeyi planladığınız tüm paketleri ve sürümleri içeren requirements.txt dosyanızı geçirmek için kullanılabilir. Giriş kitaplığı gereksinimleriniz için yeni tekerlek dosyalarının/bağımlılıklarının adlarını yazdırır.

       # Command to list wheels needed for your input libraries.
       # This command will list only new dependencies that are
       # not already part of the built-in Azure Synapse environment.
       pip install -r <input-user-req.txt> > pip_output.txt
       cat pip_output.txt | grep "Using cached *"
    

    Not

    Bu betik yalnızca varsayılan olarak Spark havuzunda henüz mevcut olmayan bağımlılıkları listeler.

Oturum kapsamlı paketleri yönetme

Etkileşimli veri analizi veya makine öğrenmesi yaparken daha yeni paketleri deneyebilir veya Apache Spark havuzunuzda şu anda kullanılamayan paketlere ihtiyacınız olabilir. Havuz yapılandırmasını güncelleştirmek yerine oturum kapsamlı paketleri kullanarak oturum bağımlılıklarını ekleyebilir, yönetebilir ve güncelleştirebilirsiniz.

Oturum kapsamlı paketler, kullanıcıların oturumlarının başında paket bağımlılıklarını tanımlamasına olanak sağlar. Oturum kapsamlı bir paket yüklediğinizde, belirtilen paketlere yalnızca geçerli oturumun erişimi olur. Sonuç olarak, bu oturum kapsamlı paketler aynı Apache Spark havuzunu kullanan diğer oturumları veya işleri etkilemez. Ayrıca, bu kitaplıklar temel çalışma zamanı ve havuz düzeyi paketlerin üzerine yüklenir.

Oturum kapsamlı paketleri yönetme hakkında daha fazla bilgi edinmek için aşağıdaki makalelere bakın:

  • Python oturum paketleri: Oturumun başında, popüler depolardan daha fazla Python paketi yüklemek için bir Conda environment.yml dosyası sağlayın. Veya Not Defteri kod hücrelerindeki kitaplıkları yönetmek için %pip ve %conda komutlarını kullanabilirsiniz.

  • Scala/Java oturum paketleri: Oturumunuzun başında kullanarak yüklenecek %%configure.jar dosyalarının listesini sağlayın.

  • R oturumu paketleri: Oturumunuzda veya devtoolskullanarak install.packages Spark havuzunuzdaki tüm düğümlere paket yükleyebilirsiniz.

Azure PowerShell cmdlet'leri ve REST API'leri aracılığıyla kitaplık yönetimi sürecini otomatikleştirme

Ekibiniz paket yönetimi URI'lerini ziyaret etmeden kitaplıkları yönetmek istiyorsa, çalışma alanı paketlerini ve havuz düzeyinde paket güncelleştirmelerini Azure Synapse Analytics için Azure PowerShell cmdlet'leri veya REST API'leri aracılığıyla yönetme seçeneğiniz vardır.

Daha fazla bilgi için aşağıdaki makaleleri inceleyin:

Sonraki adımlar