Aracılığıyla paylaş


Kitaplık yükleme hatalarını giderme

Üçüncü taraf veya yerel olarak oluşturulmuş kodu uygulamalarınız için kullanılabilir hale getirmek için sunucusuz Apache Spark havuzlarınızdan birine bir kitaplık yükleyebilirsiniz. requirements.txt dosyasında listelenen paketler, havuz başlatıldığında PyPi'den indirilir. Bu gereksinim dosyası, söz konusu Spark havuzundan bir Spark örneği oluşturulduğunda kullanılır. Spark havuzu için bir kitaplık yüklendikten sonra, aynı havuzu kullanan tüm oturumlarda kullanılabilir.

Bazı durumlarda Apache Spark havuzunuzda bir kitaplığın görünmediğini fark edebilirsiniz. Bu durum genellikle sağlanan requirements.txt veya belirtilen kitaplıklarda hata olduğunda ortaya çıkar. Kitaplık yükleme işleminde bir hata oluştuğunda, Apache Spark havuzu Synapse temel çalışma zamanında belirtilen kitaplıklara geri döner.

Bu belgenin amacı, yaygın sorunlar sağlamak ve kitaplık yükleme hatalarını ayıklamanıza yardımcı olmaktır.

Apache Spark havuzunuzu güncelleştirmeye zorlama

Apache Spark havuzunuzdaki kitaplıkları güncelleştirdiğinizde, havuz yeniden başlatıldıktan sonra bu değişiklikler alınır. Etkin işleriniz varsa, bu işler Spark havuzunun özgün sürümünde çalışmaya devam eder.

Yeni ayarları zorla seçeneğini belirleyerek değişiklikleri uygulamaya zorlayabilirsiniz. Bu ayar, seçili Spark havuzu için tüm geçerli oturumları sona erdirecektir. Oturumlar sona erdikten sonra havuzun yeniden başlatılmasını beklemeniz gerekir.

Python kitaplıkları ekleme Python

Yükleme ilerleme durumunu izleme

Bir havuz yeni bir kitaplık kümesiyle her güncelleştirildiğinde sistem tarafından ayrılmış spark işi başlatılır. Bu Spark işi kitaplık yüklemesinin durumunu izlemeye yardımcı olur. Kitaplık çakışmaları veya diğer sorunlar nedeniyle yükleme başarısız olursa Spark havuzu önceki veya varsayılan durumuna geri döner.

Ayrıca kullanıcılar, bağımlılık çakışmalarını belirlemek veya havuz güncelleştirmesi sırasında hangi kitaplıkların yüklendiğini görmek için yükleme günlüklerini de inceleyebilir.

Bu günlükleri görüntülemek için:

  1. İzleyici sekmesinde Spark uygulamaları listesine gidin.
  2. Havuz güncelleştirmenize karşılık gelen sistem Spark uygulama işini seçin. Bu sistem işleri SystemReservedJob-LibraryManagement başlığı altında çalışır. Sistem ayrılmış kitaplık işini vurgulayan ekran görüntüsü.
  3. Sürücüyü ve stdout günlüklerini görüntülemeye geçin.
  4. Sonuçlarda, paketlerinizin yüklenmesiyle ilgili günlükleri görürsünüz. Sistem ayrılmış kitaplık işi sonuçlarını vurgulayan ekran görüntüsü.

Yükleme hatalarını izleme

Bazı durumlarda, kullanıcılar karmaşık bağımlılık çakışmalarını belirlemek için Spark Geçmiş Sunucusu'nda bulunan tam yükleme günlüklerini de inceleyebilir. Spark kullanıcı arabirimi aracılığıyla sağlanan günlükler kesilebilir ve Spark Geçmiş Sunucusu aracılığıyla tam yükleme günlüklerine erişmek karmaşık kitaplık yükleme senaryolarında yararlı olabilir.

Yükleme günlüklerinin tamamını görüntülemek için:

  1. İzleyici sekmesinde Spark uygulamaları listesine gidin.
  2. Başarısız havuz güncelleştirmesine karşılık gelen sistem Spark uygulama işini seçin. Bu sistem işleri SystemReservedJob-LibraryManagement başlığı altında çalışır. Başarısız sistem ayrılmış kitaplık işini vurgulayan ekran görüntüsü.
  3. Spark geçmiş sunucusu ayrıntıları sayfasını yeni bir sekmede açan vurgulanan Spark geçmişi sunucusu seçeneğini belirtin. Başarısız sistem ayrılmış kitaplık işinin ayrıntılarını vurgulayan ekran görüntüsü.
  4. Bu sayfada 2 deneme görürsünüz ve aşağıda gösterildiği gibi 1'i Dene'yi seçin. Başarısız sistem ayrılmış kitaplık işinin Spark geçmişi sunucusu sayfasındaki yürütücü ayrıntılarını vurgulayan ekran görüntüsü.
  5. Spark geçmişi sunucusu sayfasının üst gezinti çubuğunda Yürütücüler sekmesine geçin. Başarısız sistem ayrılmış kitaplık işinin Spark geçmişi sunucusu sayfasındaki iş ayrıntılarını vurgulayan ekran görüntüsü.
  6. Tam kitaplık yönetimi çıkışına ve hata günlüklerine erişmek için stdout ve stderr günlük dosyalarını indirin. Başarısız sistem ayrılmış kitaplık işinin Spark geçmişi sunucu sayfasını vurgulayan ekran görüntüsü.

İzinlerinizi doğrulama

Kitaplıkları yüklemek ve güncelleştirmek için, Azure Synapse Analytics çalışma alanına bağlı birincil Azure Data Lake Storage 2. Nesil Depolama hesabında Depolama Blob Verileri Katkıda Bulunanı veya Depolama Blobu Veri Sahibi izinlerine sahip olmanız gerekir.

Bu izinlere sahip olduğunuzu doğrulamak için aşağıdaki kodu çalıştırabilirsiniz:

from pyspark.sql.types import StructType,StructField, StringType, IntegerType
data2 = [("James","Smith","Joe","4355","M",3000),
    ("Michael","Rose","Edward","40288","F",4000)
  ]

schema = StructType([ \
    StructField("firstname",StringType(),True), \
    StructField("middlename",StringType(),True), \
    StructField("lastname",StringType(),True), \
    StructField("id", StringType(), True), \
    StructField("gender", StringType(), True), \
    StructField("salary", IntegerType(), True) \
  ])
 
df = spark.createDataFrame(data=data2,schema=schema)

df.write.csv("abfss://<<ENTER NAME OF FILE SYSTEM>>@<<ENTER NAME OF PRIMARY STORAGE ACCOUNT>>.dfs.core.windows.net/validate_permissions.csv")

Hata alırsanız, büyük olasılıkla gerekli izinler eksiktir. Gerekli izinleri nasıl edineceğinizi öğrenmek için şu belgeyi ziyaret edin: Depolama Blob Verileri Katkıda Bulunanı veya Depolama Blob Veri Sahibi izinleri atama.

Ayrıca, bir İşlem Hattı çalıştırıyorsanız, Çalışma Alanı MSI'sinin De Depolama Blob Veri Sahibi veya Depolama Blob Verileri Katkıda Bulunanı izinlerine sahip olması gerekir. Çalışma alanı kimliğinize bu izni nasıl vereceğinizi öğrenmek için şu adresi ziyaret edin: Çalışma alanı tarafından yönetilen kimliğe izin verme.

Ortam yapılandırma dosyasını denetleyin

Conda ortamını yükseltmek için bir ortam yapılandırma dosyası kullanılabilir. Python havuz yönetimi için bu kabul edilebilir dosya biçimleri Ortam Belirtimleri olarak listelenir.

Aşağıdaki kısıtlamalara dikkat etmek önemlidir:

  • Gereksinimler dosyasının içeriği fazladan boş satırlar veya karakterler içermemelidir.
  • Synapse Runtime, sunucusuz her Apache Spark havuzuna önceden yüklenmiş bir kitaplık kümesi içerir. Temel çalışma zamanına önceden yüklenmiş olarak gelen paketler kaldırılamaz veya kaldırılamaz.
  • PySpark, Python, Scala/Java, .NET veya Spark sürümünün değiştirilmesi desteklenmez.
  • Python oturum kapsamlı kitaplıklar yalnızca YML uzantısına sahip dosyaları kabul eder.

Tekerlek dosyalarını doğrulama

Synapse sunucusuz Apache Spark havuzları Linux dağıtımını temel alır. Wheel dosyalarını doğrudan PyPI'den indirip yüklerken, Linux üzerinde oluşturulan ve Spark havuzuyla aynı Python sürümünde çalışan sürümü seçtiğinizden emin olun.

Önemli

Özel paketler oturumlar arasında eklenebilir veya değiştirilebilir. Ancak, güncelleştirilmiş paketi görmek için havuzun ve oturumun yeniden başlatılmasını beklemeniz gerekir.

Bağımlılık çakışmalarını denetleme

Genel olarak, Python bağımlılık çözümlemesini yönetmek zor olabilir. Bağımlılık çakışmalarında yerel olarak hata ayıklamaya yardımcı olmak için Synapse Çalışma Zamanı'nı temel alarak kendi sanal ortamınızı oluşturabilir ve değişikliklerinizi doğrulayabilirsiniz.

Ortamı yeniden oluşturmak ve güncelleştirmelerinizi doğrulamak için:

  1. Synapse çalışma zamanını yerel olarak yeniden oluşturmak için şablonu indirin. Şablon ile gerçek Synapse ortamı arasında küçük farklılıklar olabilir.

  2. Aşağıdaki yönergeleri kullanarak bir sanal ortam oluşturun. Bu ortam, belirtilen kitaplık listesiyle yalıtılmış bir Python yüklemesi oluşturmanıza olanak tanır.

    conda myenv create -f environment.yml
    conda activate myenv
    
  3. Sanal ortamı belirtilen paketlerinizle güncelleştirmek için kullanın pip install -r <provide your req.txt file> . Yükleme bir hatayla sonuçlanırsa Synapse temel çalışma zamanında önceden yüklenenler ile sağlanan gereksinimler dosyasında belirtilenler arasında bir çakışma olabilir. Sunucusuz Apache Spark havuzunuzda güncelleştirilmiş kitaplıkları almak için bu bağımlılık çakışmalarının çözülmesi gerekir.

Önemli

Pip ve conda birlikte kullanılırken sorunlar ağlanabilir. Pip ve conda'yı birleştirirken önerilen en iyi yöntemleri takip etmek en iyisidir.

Sonraki adımlar