2. Aşama: Spark iş yükü geçişi

Bu makale, toplam 4 aşamalı Azure Synapse Spark'tan Microsoft Fabric'e geçiş en iyi uygulamaları serisinin 2. aşamasıdır.

Bu makaleyi kullanarak Spark iş yüklerinizi Azure Synapse'tan Fabric'e taşıyabilirsiniz. Bu makalede Geçiş Yardımcısı çalıştırma, otomatik olarak dönüştürülemez kod desenlerini yeniden düzenleme ve Spark havuzu yapılandırmalarını, ortamlarını ve kitaplıklarını geçirme işlemleri ele alınmaktadır.

Bu makalede şunları öğreneceksiniz:

  • Standart (Git olmayan) ve Git özellikli Synapse çalışma alanları için geçiş iş akışını anlayın.
  • Not defterlerini, Spark iş tanımlarını ve havuzları geçirmek için Spark Geçiş Yardımcısı kullanın.
  • Fabric uyumluluğu için Synapse'e özgü kod desenlerini yeniden düzenleme.
  • Spark havuzu ayarlarını, ortamlarını ve kütüphanelerini taşıyın.
  • Synapse ile Fabric arasındaki kitaplık uyumluluk boşluklarını belirleyin ve çözün.

"Göç Asistanı ile taşıma"

Spark Geçiş Yardımcısı not defterlerinin, Spark iş tanımlarının, havuzların ve göl veritabanı meta verilerinin Synapse'ten Fabric geçişini otomatikleştirir. Yardımcı öğelerinizi kopyalar ve dönüştürür, ancak geçişi tamamlamaz; yine de kodu yeniden düzenlemeniz, yapılandırma boşluklarını mutabakata bağlamanız ve sonuçları doğrulamanız gerekir.

Yardımcıyı çalıştırmayla ilgili adım adım yönergeler için bkz. Spark Synapse to Fabric Spark Geçiş Yardımcısı (Önizleme).

Bu yardımcı, aşağıdaki öğeleri aktarır:

  • Kıvılcım havuzları Fabric Pools'a ve ilgili çevre öğelerine taşınır.
  • Notebooklar ve ilişkili ortamlar taşındı.
  • Spark iş tanımları ilişkili ortamlarla taşınır.
  • Göl veritabanları Fabric şemalarla eşlenir; yönetilen Delta tabloları OneLake katalog kısayolları aracılığıyla geçirilir.

Important

Spark yapılandırmaları, özel kitaplıklar ve özel yürütücü ayarları yardımcı tarafından geçirilmez. Bunları Fabric'teki ortam öğelerinde manuel olarak yapılandırmanız gerekir. VNet altındaki Synapse çalışma alanları asistanla geçirilemiyor.

Standart (Git dışı) çalışma alanı geçişi

Not defterlerinin ve SJD'lerin doğrudan Synapse'te (Git deposunda değil) depolandığı çalışma alanları için:

  1. Spark Geçiş Yardımcısı'ı Fabric çalışma alanınızdan (Migrate>Veri mühendisliği öğeleri) çalıştırın. Kaynak Synapse çalışma alanını seçin ve tüm Spark öğelerini taşıyın.

  2. Bağımlılıkları doğrulama: Aynı Spark sürümünün kullanıldığından emin olun. Diğer not defterlerine mssparkutils.notebook.run() aracılığıyla başvuruluyorsa, bunların da geçirildiğini doğrulayın. Geçiş Yardımcısı klasör yapısını korur (Fabric en fazla 10 iç içe yerleştirme düzeyini destekler).

  3. Yeniden düzenleme kodu: mssparkutils yerine notebookutils yazın, bağlı hizmet başvurularını Fabric Bağlantıları ile değiştirin ve dosya yollarını güncelleştirin. Ayrıntılar için Spark kodunu yeniden düzenleme bölümüne bakın.

Git özellikli çalışma alanı geçişi

Not defterlerinin ve SJD'lerin bir Azure DevOps veya GitHub deposunda depolandığı çalışma alanları için Synapse ve Fabric farklı Git serileştirme biçimleri kullandığını unutmayın. Synapse not defterlerini JSON olarak depolar; Fabric kaynak biçimini .py/.scala veya .ipynb kullanır. Bir Fabric çalışma alanını doğrudan aynı Synapse Git dalı üzerine işaretleyemezsiniz.

  1. Öğeleri taşıma. Not defterlerini ve SJD'leri Synapse çalışma alanından Fabric çalışma alanına geçirmek için Spark Geçiş Yardımcısı kullanın. Bu, öğeleri Fabric uyumlu biçime dönüştürür.

  2. Kodu yeniden düzenleme. Standart senaryoyla aynı kod yeniden düzenlemesini uygulayın: yerine mssparkutils, dosya yollarını güncelleştirin, bağlı hizmetleri değiştirin. Ayrıntılar için Spark kodunu yeniden düzenleme bölümüne bakın.

  3. Fabric çalışma alanını Git'e bağlayın. Fabric çalışma alanınızı deponuzdaki yeni bir dal veya klasöre bağlayın (Workspace Settings>Source Control>Git Integration). Çakışmaları önlemek için Synapse içeriğinizden ayrı bir dal veya klasör kullanın. Yeni dalı oluşturmak için Fabric çalışma alanı içeriğini taahhüt edin.

  4. Dağıtım işlem hatlarını ayarlama (isteğe bağlı). Devam eden CI/CD için Fabric dağıtım işlem hatlarını (Geliştirme → Test → Prod) yapılandırın. Fabric, aşamalar arasında dağıtım yaparken varsayılan lakehouse'lar ve ekli ortamlar için otomatik bağlamayı destekler.

Tip

Synapse Git dalınızı tarihsel bir referans olarak koruyun. Fabric içerik için yeni bir dal veya klasör oluşturun. Fabric not defterlerini JSON yerine kaynak dosyalar (PySpark için .py) olarak depolar ve bu da kod gözden geçirme için daha temiz Git farkları sağlar.

Spark kodunu yeniden düzenleme

Not defterlerinizi ve Spark iş tanımlarınızı geçirdikten sonra, Geçiş Yardımcısı'ın otomatik olarak dönüştüremediği kod desenlerini düzeltmeniz gerekiyor. Bu bölüm Synapse'e özgü API'leri değiştirme, dosya yollarını güncelleştirme ve kimlik bilgisi desenlerini Fabric ile çalışacak şekilde değiştirme konusunda size yol gösterir.

Ön yeniden düzenleme denetimi

Tek tek yeniden düzenleme düzenlerini ele almadan önce, değişiklik gerektiren Synapse'e özgü kodu tanımlamak için tüm not defterlerinde kod tabanı genelinde bir arama çalıştırın.

Arama Düzeni Category Eylem Gerekli
spark.synapse.linkedService Bağlı Hizmetler Kaldır; yerine doğrudan uç nokta kimlik doğrulaması veya Key Vault sırları kullan
getSecretWithLS Credentials şununla değiştir getSecret(vaultUrl, secretName)
TokenLibrary Belirteç/Kimlik Doğrulaması Doğrudan OAuth yapılandırmasını veya notebookutils'i kullanın; kaldırın.
synapsesql SQL Bağlayıcısı Delta biçimi okuma ile spark.read.synapsesql() değiştir
mssparkutils Spark Yardımcı Programları şununla notebookutils değiştir (çoğu API aynı)
spark.catalog.listDatabases Katalog API’si şununla değiştir spark.sql("SHOW DATABASES")
spark.catalog.currentDatabase Katalog API’si şununla değiştir spark.sql("SELECT CURRENT_DATABASE()")
spark.catalog.getDatabase Katalog API’si şununla değiştir spark.sql("DESCRIBE DATABASE ...")
spark.catalog.listFunctions Katalog API’si Fabric desteklenmez — kaldır
spark.catalog.registerFunction Katalog API’si Desteklenmez — bunun yerine kullanın spark.udf.register()
spark.catalog.functionExists Katalog API’si Fabric desteklenmez — kaldır
LinkedServiceBasedTokenProvider Kimlik Doğrulama Sağlayıcısı şununla değiştir ClientCredsTokenProvider
getPropertiesAsMap Bağlı Hizmetler Kaldır ve depolama hesabını doğrudan yapılandır
spark.storage.synapse Bağlı Hizmetler Kaldır — Fabric tarafından desteklenmez
/user/trusted-service-user/ Dosya Yolları OneLake yolu veya kısayol yolu ile değiştirin
cosmos.oltp Azure Cosmos DB veritabanı Bağlı hizmet yerine gizli bilgiler için Key Vault kullanacak şekilde güncelle
kusto.spark.synapse Kusto/ADX accessToken aracılığıyla getToken() ile bağlı hizmet kimlik doğrulamasını değiştirin

Tip

Geçiş öncesinde bu aramaları not defteri deponuzun tamamında çalıştırın. Sıfır eşleşmesi olan not defterleri as-is olarak aktarılabilir, bu güvenlidir. Eşleşmeleri olan not defterleri, aşağıdaki bölümlerdeki ayrıntılı yönergeler kullanılarak kod yeniden düzenleme için önceliklendirilmelidir.

Dosya yolu kullanımı

Fabric'da doğrudan abfss:// yollarını veya OneLake yollarını kullanmak için göreli yolları veya Synapse tarafından yönetilen depolama yollarını kullanan Synapse not defterlerini güncelleştirin.

Önce (Synapse) After (Fabric)
"abfss://...@<synapse_storage>.dfs.core.windows.net/user/trusted-service-user/deltalake" "abfss://<workspace_id>@onelake.dfs.fabric.microsoft.com/<lakehouse_id>/Tables/deltalake"
spark.read.synapsesql("<pool>.<schema>.<table>") spark.read.format("delta").load("abfss://.../<lakehouse>/Tables/<table>")

Tip

Synapse tarafından yönetilen tüm depolama yollarını OneLake yolu (abfss://<workspace_id>@onelake.dfs.fabric.microsoft.com/<item_id>/...) olarak değiştirin. ADLS 2. Nesil verileri için OneLake kısayolları oluşturun ve bunun yerine kısayol yollarına başvurun.

Spark Katalog API'si

Fabric birkaç spark.catalog yöntemini desteklemez. Bunları Spark SQL eşdeğerleriyle değiştirin.

Önce (Synapse) After (Fabric)
spark.catalog.listDatabases() spark.sql("SHOW DATABASES").show()
spark.catalog.currentDatabase() spark.sql("SELECT CURRENT_DATABASE()").first()["current_database()"]
spark.catalog.getDatabase(db_name) spark.sql(f"DESCRIBE DATABASE {db_name}").show()
spark.catalog.listFunctions() Fabric tarafından desteklenmiyor — kaldırın veya atlayın
spark.catalog.registerFunction(name, fn) Fabric desteklenmez— bunun yerine spark.udf.register() kullanın
spark.catalog.functionExists(name) Fabric tarafından desteklenmiyor — kaldırın veya atlayın

Note

spark.catalog, createTable() ve tableExists() gibi listTables() tablo yöntemleri Fabric normal şekilde çalışır. Yalnızca veritabanı düzeyinde ve işlev düzeyinde katalog yöntemleri için yeniden düzenleme gerekir.

MSSparkUtils ve NotebookUtils

mssparkutils çağrılarını Fabric notebookutils eşdeğerleriyle değiştirin. Kimlik bilgileriyle ilgili en yaygın değişiklikler şunlardır:

Önce (Synapse) After (Fabric)
mssparkutils.credentials.getSecretWithLS("sampleLS", secretKey) notebookutils.credentials.getSecret("https://<vault>.vault.azure.net/", secretKey)
TokenLibrary.getSecret("foo", "bar") notebookutils.credentials.getSecret("https://foo.vault.azure.net/", "bar")

Fabric, bağlı hizmet tabanlı gizli veri alma (getSecretWithLS) desteklenmez. Bunun yerine, notebookutils.credentials.getSecret(vaultUrl, secretName) kullanarak doğrudan Key Vault URL'sine başvurun. Aynı model TokenLibrary.getSecret() çağrıları için de geçerlidir.

Note

Çoğu mssparkutils.fs yöntemi (örneğin, ls, cp, mv, rm, mkdirs, head) Fabric'da notebookutils.fs ile aynı şekilde çalışır. Birincil değişiklikler kimlik bilgileri, gizli anahtar yöntemleri ve notebook.run() yol referanslarıdır.

Azure Veri Gezgini (Kusto) bağlayıcısı

Bağlı hizmetler aracılığıyla Azure Veri Gezgini 'a (Kusto) bağlanan Synapse not defterlerinin doğrudan uç nokta kimlik doğrulaması kullanacak şekilde yeniden düzenlenmesi gerekir.

Önce (Synapse) After (Fabric)
.option("spark.synapse.linkedService", "AzureDataExplorer1") Bağlı hizmet referansını kaldırın
Bağlantılı hizmet seçeneği ayarlanmış olarak okuma .option("accessToken", notebookutils.credentials.getToken("https://<cluster>.kusto.windows.net"))

Bağlı hizmet seçeneğini bir accessToken seçenekle değiştirin. Kusto küme uç noktanız için belirteç almak için kullanın notebookutils.credentials.getToken() . Sorgu seçeneklerinin geri kalanı (kustoDatabase, kustoQuery) değişmeden kalır.

Cosmos DB bağlayıcısı

Synapse'Azure Cosmos DB bağlantıları bağlı hizmetler veya getSecretWithLS.

Önce (Synapse) After (Fabric)
.option("spark.synapse.linkedService", "CosmosDbLS") Bağlı hizmet referansını kaldırın
mssparkutils.credentials.getSecretWithLS("cosmosKeyLS", "cosmosKey") notebookutils.credentials.getSecret("https://<vault>.vault.azure.net/", "cosmosKey")

Bağlantılı servis referansını doğrudan Azure Cosmos DB uç nokta yapılandırması ile değiştirin. Azure Cosmos DB hesap anahtarını Azure Key Vault'ta sakla ve yerine kullanarak notebookutils.credentials.getSecret(vaultUrl, secretName)getSecretWithLS()elde et.

Bağlı hizmet referansları

Fabric'deki tüm Synapse bağlı hizmet referanslarını değiştirin.

Önce (Synapse) After (Fabric)
spark.conf.set("spark.storage.synapse.linkedServiceName", ls_name) Kaldır — Fabric tarafından desteklenmez
spark.conf.set("fs.azure.account.oauth.provider.type", "com.microsoft.azure.synapse.tokenlibrary.LinkedServiceBasedTokenProvider") spark.conf.set("fs.azure.account.oauth.provider.type", "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider")
TokenLibrary.getPropertiesAsMap(linked_service_cfg) Kaldır — doğrudan bağlantı dizesi veya hizmet öznesi yapılandırması kullanın

Fabric'da bağlı hizmet yoktur. Synapse belirteci sağlayıcısını standart OAuth istemci kimlik bilgileriyle (hizmet sorumlusu) değiştirin. fs.azure.account.auth.type, oauth.provider.type, client.id, client.secret ve client.endpoint'yi spark.conf.set() kullanarak doğrudan yapılandırın.

Jeton kitaplığı

Synapse'in belirteçleri almaya ve bağlı hizmet özelliklerini okumaya yönelik TokenLibrary Fabric'da kullanılamaz. Eşdeğer desenlerle değiştirin.

Önce (Synapse) After (Fabric)
TokenLibrary.getPropertiesAsMap(serviceConnection) Kaldır — depolama hesabını doğrudan yapılandırma
val my_account = conexion("Endpoint").toString.substring(8) val my_account = "<storage_account_name>" // Hardcode or retrieve via notebookutils
mssparkutils.fs.head(internalPath, Int.MaxValue) notebookutils.fs.head(internalPath, Int.MaxValue)

OAuth tabanlı ADLS 2. Nesil erişimi için, depolama hesabına özgü anahtarları (örneğin, spark.conf.set()) kullanarak fs.azure.account.auth.type.<account>.dfs.core.windows.net hizmet sorumlusu kimlik bilgilerini doğrudan yapılandırın; bağlı hizmet belirteci sağlayıcılarına güvenmeyin.

Important

Tam geçiş öncesinde bağlantılı hizmet referansları için tüm not defterlerini gözden geçirin. Kalan tüm spark.synapse.linkedService, TokenLibrary veya getSecretWithLS çağrıları Fabric çalışma zamanında başarısız olur.

Spark iş tanımı geçişi

Spark iş tanımları (SJD), bir ana yürütülebilir dosyaya (.py, .jar, veya .R), isteğe bağlı başvuru kitaplıklarına, komut satırı bağımsız değişkenlerine ve bir lakehouse bağlamına başvuran toplu iş yapılandırmalarıdır. Spark Geçiş Yardımcısı SJD geçişini otomatik olarak işlerken Synapse ile Fabric SJD'ler arasındaki önemli farklar dikkat gerektirir.

Synapse ile Fabric SJD'ler arasındaki önemli farklar

  • Lakehouse bağlamı gerekli. Fabric her SJD ile ilişkili en az bir göl evi olmalıdır. Bu lakehouse, Spark çalışma zamanı için varsayılan dosya sistemi olarak hizmet eder. Göreli yolları kullanan tüm kodlar varsayılan lakehouse'dan okur ve yazar. Synapse'te, SJD'ler varsayılan dosya sistemi olarak çalışma alanı varsayılan depolama alanını (ADLS 2. Nesil) kullanır.

  • Desteklenen diller. Fabric PySpark (Python), Spark (Scala/Java) ve SparkR'ı destekler. Spark için .NET (C#/F#) Fabric desteklenmez. Geçiş öncesinde bu iş yüklerini Python veya Scala'da yeniden yazmanız gerekir.

  • İlkeleri yeniden deneyin. Fabric SJDs, maksimum yeniden deneme sayısı ve yeniden deneme aralığı gibi yerleşik yeniden deneme ilkelerini destekler. Bu özellik, süresiz olarak çalışması gereken Spark Yapılandırılmış Akış işleri için kullanışlıdır.

  • Ortam bağlantısı. Synapse'te, SJD'ler bir Spark havuzuna bağlanır. Fabric'te, SJD'ler havuz yapılandırması, kütüphaneler ve Spark özelliklerini içeren bir ortam öğesine bağlanır. Geçiş Yardımcısı, Synapse havuz referanslarını Fabric'teki ortam öğelerine otomatik olarak eşler.

  • Zamanlama. Fabric SJD'lerin ayrı bir işlem hattı gerektirmeden yerleşik zamanlama (Settings>Schedule) vardır. SJD zamanlama işlemleri için Synapse'te Spark Görevi etkinliğine sahip bir işlem hattı gerekir. Yalnızca SJD'leri tetikleyen Synapse işlem hatlarınız varsa, işlem hattını geçirmek yerine Fabric yerleşik SJD zamanlamasını kullanmayı göz önünde bulundurun.

  • İçe/dışa aktarma. Synapse, SJD'ler için kullanıcı arabirimi tabanlı JSON içeri ve dışarı aktarmayı destekler. Fabric kullanıcı arabirimi içeri veya dışarı aktarmayı desteklemez. Program aracılığıyla SJD oluşturmak veya güncelleştirmek için Spark Geçiş Yardımcısı veya Fabric REST API'sini kullanın.

SJD kodunu yeniden düzenleme

Bu makaledeki kod yeniden düzenleme desenleri SJD ana dosyaları için de geçerlidir. Değişiklikler iki kategoriye ayrılır.

Kaynak kodu değişiklikleri (, .pyveya .jar ana dosyasının .Riçinde):

  • mssparkutils ile notebookutils kimlik bilgileri ve dosya sistemi işlemleri için değiştirin.
  • Gerektiğinde koddaki sabit kodlanmış dosya yollarını OneLake abfss:// yollarına veya kısayol yollarına güncelleştirin. Varsayılan lakehouse üzerinde yalnızca göreli yollar kullanan SJD'ler değişiklik gerektirmeyebilir.
  • Kodda yer alan bağlı hizmet referanslarını Key Vault gizli anahtarları veya Fabric Bağlantıları ile değiştirin.

Note

DMTS Bağlantıları henüz Fabric Spark iş tanımlarında desteklenmemektedir (yalnızca not defterlerinde desteklenir). SJD kodunuz DMTS kullanıyorsa doğrudan uç nokta kimlik doğrulamasını kullanmak için yeniden düzenleme.

SJD yapılandırma değişiklikleri (Fabric SJD öğesi ayarlarında):

  • Ana tanım dosyaları tarafından başvurulabilen ADLS 2. Nesil yollarına Fabric çalışma alanından erişilebildiğini doğrulayın. Dosyalar Synapse çalışma alanı-iç depolama alanında depolandıysa, bunları Fabric SJD'ye yeniden yükleyin veya erişilebilir bir ADLS 2. Nesil konumuna taşıyın.
  • Geçiş sonrasında tüm başvuru dosyalarının (.py, .R, .jar) erişilebilir olduğunu doğrulayın. Synapse çalışma alanı-iç depolama alanında depolanan tüm dosyaları yeniden karşıya yükleyin.
  • Komut satırı bağımsız değişkenleri Synapse'e özgü yollar veya bağlantı dizeleri içeriyorsa, bunları Fabric eşdeğerlerine güncelleştirin.

Havuzları, ortamları ve kitaplıkları geçirme

defterleriniz ve Spark iş tanımlamalarınız taşındıktan sonra havuz ve ortam stratejisine karar vermeniz gerekir. Bu bölümde, Fabric Başlangıç Havuzlarını ne zaman kullanabileceğiniz (geçiş yerine), özel ortamların ne zaman oluşturulacağı ve kitaplık uyumluluk boşluklarını tanımlama ve çözme işlemleri açıklanmaktadır.

Spark kümesi geçişi

Fabric başlangıç havuzları

Fabric Başlangıç Havuzları saniye düzeyinde Spark oturumu başlatma sağlar. Bu, kümeleri başlatmak için dakikalar süren soğuk başlangıçlar gerektiren Synapse Spark havuzlarına göre önemli bir gelişmedir. Başlangıç Havuzları platformdan kullanıma hazırdır ve yapılandırma gerektirmez.

Tip

Synapse Spark havuzunuzda özel yapılandırma, özel kitaplık ve Orta'nın ötesinde belirli bir düğüm boyutu gereksinimi yoksa havuzu transfer etmeyin. Bunun yerine, not defterlerinizin ve Spark iş tanımlarınızın Fabric çalışma alanı varsayılan Başlangıç Havuzu ayarlarını kullanmasına izin verin. Bu yaklaşım size en hızlı başlangıç sürelerini ve sıfır havuz yönetimi yükünü verir. Özel bir havuz veya ortam oluşturmanız sadece özel bir ihtiyacınız olduğunda.

Özel havuz veya ortam ne zaman oluşturulur?

Fabric özel havuzu ve/veya ortamı yalnızca iş yükünüz gerektirdiğinde oluşturun:

  • Varsayılan Orta'dan farklı belirli bir düğüm boyutu (Küçük, Büyük, XLarge, XXLarge).
  • Fabric yerleşik çalışma zamanında bulunmayan özel kitaplıklar (pip paketleri, conda paketleri, JAR'ler, wheel paketleri).
  • Varsayılanların ötesinde özel Spark özellikleri (örneğin, spark.sql.shuffle.partitions, spark.executor.memory).
  • Özel veri kaynaklarına erişmek için Yönetilen Özel Uç Noktalar (Özel Havuzlar gerektirir).
  • Çalışma alanı varsayılanından farklı belirli bir Spark çalışma zamanı sürümü.

Yapılandırma ve kitaplık geçişi

Spark yapılandırmalarını ve kütüphanelerini Fabric'teki ortam öğelerine taşıyın.

Kütüphaneleri ortam öğelerine taşıma ile ilgili ayrıntılı adımlar için bkz. Migrate Spark Libraries from Azure Synapse to Fabric.

  1. Spark yapılandırmalarını dışarı aktarın. Synapse Studio'da Yönet>Spark Havuzları> seçin havuzu, >Yapılandırmalar + Kitaplıklar olarak > indirin.yml/.conf/.json.

  2. Ortam'a veri aktarımı. Fabric'te, bir çevre öğesi oluşturun. Spark İşlem>Spark Özellikleri> Dışarı aktarılan dosyayıSparkproperties.yml gidin.

  3. Kitaplıkları taşıma. Havuz seviyesindeki kütüphaneler için, paketleri (tekerlekler, JAR'lar, tar'lar) ortamın kütüphane bölümüne yükleyin. PyPI/Conda paketleri için, bunları ortamın genel kütüphane yapılandırmasına ekleyin.

Important

Fabric çalışma alanı düzeyinde kitaplık ayarları kullanım dışıdır. Tüm kütüphaneleri ortam öğelerine taşıyın. Göç, mevcut çalışma alanı düzeyindeki yapılandırmaları kalıcı olarak kaldırır—ortamları etkinleştirmeden önce tüm ayarları indirin.

Kitaplık uyumluluğu: Synapse ve Fabric

Fabric Runtime 1.3 (Spark 3.5) 223 Python, 183 Java/Scala ve 135 R kitaplığı yerleşik olarak bulunur. Synapse kitaplıklarının çoğu Fabric kullanılabilir, ancak geçiş öncesinde giderilmemesi durumunda çalışma zamanı hatalarına neden olabilecek boşluklar vardır.

Not defterlerinizin gerçekte hangi kitaplıkları kullandığını belirlemek için boşluk tablolarını gözden geçirmeden önce şu denetimleri çalıştırın:

  • Python not defterleri: Tüm importfrom ... import.py dosyalarında / ve .ipynb deyimlerini arayın.
  • Java/Scala not defterleri ve SJD'ler:import deyimlerini ve Maven koordinatlarını arayın; com.azure.cosmos.spark veya com.microsoft.kusto.spark gibi paketleri arayın.
  • Export tam bağımlılık listesi: Synapse not defterinde pip freeze çalıştırın, Fabric Runtime 1.3 bildirimiyle karşılaştırın. Yalnızca hem pip freeze çıktınızda hem de aşağıdaki boşluk tablolarında görünen kitaplıklar eylem gerektirir.
  • Havuz düzeyi ve çalışma alanı düzeyinde özel kütüphaneler: Synapse Studio'da,Apache Spark Pools'u>>> bölümünden havuz paketlerini seç ve bir ortam öğesine yeniden yüklenmesi gereken özel kütüphaneleri görün.

Fabric'de eksik olan Python kitaplıkları

Category Kütüphaneler Eylem
CUDA / GPU (9 libs) libcublas, libcufft, libcufile, libcurand, libcusolver, libcusparse, libnpp, libnvfatbin, libnvjitlink, libnvjpeg Kullanılamaz; Fabric GPU havuzlarını desteklemez. CPU tabanlı alternatifleri kullanmak veya Synapse'te tutmak için GPU iş yüklerini yeniden düzenleme.
HTTP / API istemcileri httpx, httpcore, h11, google-auth, jmespath Ortam üzerinden kurulum: pip install httpx google-auth jmespath
ML / Yorumlanabilirlik yorumla, çekirdeği yorumla Ortam üzerinden kurulum: pip install interpret
Veri serileştirme marshmallow, jsonpickle, frozendict, fixedint Gerekirse ortam üzerinden kur: pip install marshmallow jsonpickle
Günlüğe Kaydetme / Telemetri Akıcı-logger, insan dost, kütüphane-metadata-cooker, impulse-python-handler fluent-logger: kullanılıyorsa yükleyin. Diğerleri Synapse-internal'tir; büyük olasılıkla gerekli değildir.
Jupyter iç işlevleri jupyter-client, jupyter-core, jupyter-ui-poll, jupyterlab-widgets, ipython-pygments-lexers Fabric Jupyter altyapısını dahili olarak yönetir. Bu kitaplıklar genellikle kullanıcı kodunda gerekli değildir.
Sistem / C kitaplıkları libgcc, libstdcxx, libgrpc, libabseil, libexpat, libnsl, libzlib Düşük düzeyli sistem kitaplıkları. Genellikle doğrudan içeri aktarılmaz. Yalnızca bunlara bağlı C uzantılarınız varsa yükleyin.
Dosya / eşzamanlılık filelock, fsspec, knack Kullanılıyorsa ortam üzerinden kurulum: pip install filelock fsspec

Fabric'de Java/Scala kitaplıkları eksik.

Kütüphane Synapse Sürümü Eylem
azure-cosmos-analytics-spark 2.2.5 Spark işleriniz Cosmos DB analitik bağlayıcısını kullanıyorsa, ortam öğesine özel bir JAR olarak kurun.
junit-jüpiter-params 5.5.2 Yalnızca test kitaplığı. Üretim not defterlerinde gerekli değildir.
junit-platform-commons 1.5.2 Yalnızca test kitaplığı. Üretim not defterlerinde gerekli değildir.

R kütüphaneleri

Tek bir fark vardır: Synapse, Fabric olmayan lightgbm R paketini (v4.6.0) içerir. Gerekirse ortam üzerinden kur. Fabric, FabricTelemetry (v1.0.2) ekler, bu Fabric-internal'dır.

Önemli sürüm farklılıkları

68 Python kitaplığı her iki platformda da mevcuttur ancak farklı sürümleri vardır. Çoğu küçük sürüm farklılıklarıdır, ancak 17'de davranışı etkileyebilecek ana sürüm atlamaları vardır.

Kütüphane Yapı Sürümü Synapse Sürümü Etki
libxgboost 2.0.3 3.0.1 v2 ile v3 arasında XGBoost API değişiklikleri. Test modeli eğitimi/tahmin kodu.
Flask 2.2.5 3.0.3 Flask 3.x'de hataya neden olan değişiklikler var. Not defterlerinden Flask API'leri sunuyorsanız, kapsamlı bir şekilde test edin.
lxml 4.9.3 5.3.0 Küçük API değişiklikleri. XML ayrıştırma iş akışlarını test etme.
libprotobuf 3.20.3 4.25.3 Protobuf 4.x özel proto tanımları için hataya neden olan değişiklikler içeriyor.
markupsafe 2.1.3 3.0.2 MarkupSafe 3.x, Python 3.7 desteğini bırakır ancak API uyumluluğunu korur.
libpq 12.17 17.4 PostgreSQL istemci kitaplığı. Ana sürüm atlama — veritabanı bağlantılarını test edin.
libgcc-ng / libstdcxx-ng 11.2.0 15.2.0 GCC çalışma zamanı. C uzantısı uyumluluğunu etkileyebilir.

Note

Synapse genellikle sistem düzeyindeki kitaplıkların (GCC, protobuf, libpq) daha yeni sürümlerini, Fabric ise veri/ML kitaplıklarının daha yeni sürümlerini (genel olarak daha fazla Python paket) iletir. Belirli bir sürüme ihtiyacınız varsa, ortam öğe yapılandırmanıza sabitleyin.

Tip

Hızlı bir uyumluluk kontrolü yapın: Synapse havuzunuzun kütüphane listesini dışa aktarın (pip freeze), Fabric Runtime 1.3 manifestosuyla karşılaştırın ve taşınan not defterlerini çalıştırmadan önce çevre öğenizde eksik kütüphaneleri önceden yükleyin. Fabric ile Synapse Spark çalışma zamanları arasındaki her yerleşik kitaplık ve sürümün satır satır karşılaştırması için bkz. microsoft/synapse-spark-runtime GitHub deposu.