Aracılığıyla paylaş


Fabric Spark için yerel yürütme altyapısı

Yerel yürütme altyapısı, Microsoft Fabric'teki Apache Spark iş yürütmeleri için çığır açan bir geliştirmedir. Bu vektörleştirilmiş altyapı, Spark sorgularınızı doğrudan göl evi altyapınızda çalıştırarak performansı ve verimliliğini iyileştirir. Altyapının sorunsuz tümleştirmesi kod değişikliği gerektirmemesi ve satıcının kilitlenmesini önlemesi anlamına gelir. Apache Spark API'lerini destekler ve Çalışma Zamanı 1.2 (Spark 3.4) ile uyumludur ve hem Parquet hem de Delta biçimleriyle çalışır. Verilerinizin OneLake içindeki konumu ne olursa olsun veya verilere kısayollar aracılığıyla erişiyorsanız, yerel yürütme altyapısı verimliliği ve performansı en üst düzeye çıkarır.

Yerel yürütme altyapısı, operasyonel maliyetleri en aza indirirken sorgu performansını önemli ölçüde artırır. TPC-DS 1TB karşılaştırması tarafından doğrulanan, geleneksel OSS (açık kaynak yazılım) Spark'a kıyasla dört kata kadar daha hızlı performans elde ederek olağanüstü bir hız geliştirmesi sunar. Altyapı, rutin veri alımı, toplu işler ve ETL (ayıklama, dönüştürme, yükleme) görevlerinden karmaşık veri bilimi analizine ve duyarlı etkileşimli sorgulara kadar çok çeşitli veri işleme senaryolarını yönetme konusunda ustadır. Kullanıcılar hızlandırılmış işleme sürelerinden, daha yüksek aktarım hızından ve iyileştirilmiş kaynak kullanımından yararlanır.

Yerel Yürütme Altyapısı iki önemli işletim sistemi bileşenini temel alır: Meta tarafından sunulan bir C++ veritabanı hızlandırma kitaplığı olan Velox ve JVM tabanlı SQL altyapılarının yürütmesini Intel tarafından sunulan yerel altyapılara boşaltmaktan sorumlu bir orta katman olan Apache Glüten (inkübating).

Not

Yerel yürütme altyapısı şu anda genel önizleme aşamasındadır. Daha fazla bilgi için geçerli sınırlamalara bakın. Önizlemenin bu aşamasında, bunu kullanmanın ek bir maliyeti yoktur.

Yerel yürütme altyapısı ne zaman kullanılır?

Yerel yürütme altyapısı, büyük ölçekli veri kümelerinde sorgu çalıştırmak için bir çözüm sunar; temel alınan veri kaynaklarının yerel özelliklerini kullanarak ve genellikle geleneksel Spark ortamlarında veri taşıma ve serileştirme ile ilişkili ek yükü en aza indirerek performansı iyileştirir. Altyapı, toplama karma toplaması, yayın iç içe döngü birleştirmesi (BNLJ) ve hassas zaman damgası biçimleri dahil olmak üzere çeşitli işleçleri ve veri türlerini destekler. Ancak, motorun özelliklerinden tam olarak yararlanmak için en uygun kullanım örneklerini göz önünde bulundurmanız gerekir:

  • Altyapı, Parquet ve Delta biçimlerindeki verilerle çalışırken etkilidir ve bu da yerel ve verimli bir şekilde işleyebilir.
  • Karmaşık dönüştürmeler ve toplamalar içeren sorgular, altyapının sütunlu işleme ve vektörleştirme özelliklerinden önemli ölçüde yararlanır.
  • Performans geliştirmesi, sorguların desteklenmeyen özelliklerden veya ifadelerden kaçınarak geri dönüş mekanizmasını tetiklemediği senaryolarda en dikkat çekicidir.
  • Altyapı, basit veya G/Ç bağlı değil, hesaplama açısından yoğun sorgular için uygundur.

Yerel yürütme altyapısı tarafından desteklenen işleçler ve işlevler hakkında bilgi için Apache Gluten belgelerine bakın.

Yerel yürütme altyapısını etkinleştirme

Önizleme aşamasında yerel yürütme altyapısının tüm özelliklerini kullanmak için belirli yapılandırmalar gereklidir. Aşağıdaki yordamlarda not defterleri, Spark iş tanımları ve tüm ortamlar için bu özelliğin nasıl etkinleştirileceği gösterilmektedir.

Önemli

Yerel yürütme altyapısı şu anda Çalışma Zamanı 1.2 (Apache Spark 3.4, Delta Lake 2.4) olan en son GA çalışma zamanı sürümünü destekler.

Not defteri veya Spark iş tanımı için etkinleştirme

Tek bir not defteri veya Spark iş tanımı için yerel yürütme altyapısını etkinleştirmek için, yürütme betiğinizin başına gerekli yapılandırmaları dahil etmeniz gerekir:

%%configure 
{ 
   "conf": {
       "spark.native.enabled": "true", 
       "spark.gluten.enabled": "true", 
       "spark.shuffle.manager": "org.apache.spark.shuffle.sort.ColumnarShuffleManager" 
   } 
} 

Not defterleri için gerekli yapılandırma komutlarını ilk hücreye ekleyin. Spark iş tanımları için, Spark iş tanımınızın ön cephesine yapılandırmaları ekleyin.

Not defteri içindeki yerel yürütme altyapısının nasıl etkinleştirileceğine ilişkin ekran görüntüsü.

Yerel yürütme altyapısı özel havuzlarla tümleşiktir, yani bu özelliğin etkinleştirilmesi yeni bir oturum başlatır ve bunun başlatılması genellikle iki dakika kadar sürer.

Önemli

Spark oturumunun başlatılmasından önce yerel yürütme altyapısının yapılandırması yapılmalıdır. Spark oturumu başlatıldıktan spark.shuffle.manager sonra ayar sabit hale gelir ve değiştirilemez. Bu yapılandırmaların not defterlerindeki blok içinde %%configure veya Spark iş tanımları için Spark oturum oluşturucusunda ayarlandığından emin olun.

Ortam düzeyinde etkinleştirme

Tekdüzen performans geliştirmesi sağlamak için ortamınızla ilişkili tüm işlerde ve not defterlerinde yerel yürütme altyapısını etkinleştirin:

  1. Ortam ayarlarınıza gidin.

  2. Spark özellikleri'ne gidin.

  3. Aşağıdaki görüntüde gösterildiği gibi Spark özellikleri ekranındaki alanları tamamlayın.

Özellik Değer
spark.native.enabled true
spark.gluten.enabled true
spark.shuffle.manager org.apache.spark.shuffle.sort.ColumnarShuffleManager

Ortam öğesi içinde yerel yürütme altyapısının nasıl etkinleştirileceği gösteren ekran görüntüsü.

Ortam düzeyinde etkinleştirildiğinde, sonraki tüm işler ve not defterleri ayarı devralır. Bu devralma, ortamda oluşturulan tüm yeni oturumların veya kaynakların gelişmiş yürütme özelliklerinden otomatik olarak yararlanmasını sağlar.

Sorgu düzeyinde denetim

Yerel Yürütme Altyapısı'nı kiracı, çalışma alanı ve ortam düzeylerinde etkinleştirme mekanizmaları, kullanıcı arabirimiyle sorunsuz bir şekilde tümleştirilmiştir ve etkin geliştirme aşamasındadır. Bu arada, özellikle şu anda desteklenmeyen işleçler içeriyorsa belirli sorgular için yerel yürütme altyapısını devre dışı bırakabilirsiniz (bkz . sınırlamalar). Devre dışı bırakmak için spark.gluten.enabled Spark yapılandırmasını sorgunuzu içeren belirli bir hücre için false olarak ayarlayın.

%%sql 
SET spark.native.enabled=FALSE; 
SET spark.gluten.enabled=FALSE; 

Not defteri içindeki yerel yürütme altyapısını devre dışı bırakma işlemini gösteren ekran görüntüsü.

Yerel yürütme altyapısının devre dışı bırakıldığı sorguyu yürüttkten sonra spark.gluten.enabled değerini true olarak ayarlayarak sonraki hücreler için yeniden etkinleştirmeniz gerekir. Spark kod hücrelerini sırayla yürüttüğü için bu adım gereklidir.

%%sql 
SET spark.native.enabled=TRUE; 
SET spark.gluten.enabled=TRUE; 

Altyapı tarafından yürütülen işlemleri tanımlama

Apache Spark işinizdeki bir işlecin yerel yürütme altyapısı kullanılarak işlenip işlenmediğini belirlemek için çeşitli yöntemler vardır.

Spark kullanıcı arabirimi ve Spark geçmiş sunucusu

İncelemeniz gereken sorguyu bulmak için Spark kullanıcı arabirimine veya Spark geçmiş sunucusuna erişin. Arabirimde görüntülenen sorgu planında Transformer soneki ile biten düğüm adlarını arayın. Sonek, yerel yürütme altyapısının işlemi yürüttüğüne işaret eder. Örneğin düğümler RollUpHashAggregateTransformer, ProjectExecTransformer, BroadcastHashJoinExecTransformer, ShuffledHashJoinExecTransformer veya BroadcastNestedLoopJoinExecTransformer olarak etiketlenebilir.

Transformer soneki ile biten DAG görselleştirmesinin nasıl denetlendiğini gösteren ekran görüntüsü.

DataFrame açıklaması

Alternatif olarak, yürütme planını görüntülemek için komutunu not defterinizde yürütebilirsiniz df.explain() . Çıktının içinde aynı Transformer soneklerini arayın. Bu yöntem, belirli işlemlerin yerel yürütme altyapısı tarafından işlenip işlenmediğini onaylamak için hızlı bir yol sağlar.

Sorgunuzun fiziksel planını denetlemeyi ve sorgunun yerel yürütme altyapısı tarafından yürütüldüğünü görme işlemini gösteren ekran görüntüsü.

Geri dönüş mekanizması

Bazı durumlarda, desteklenmeyen özellikler gibi nedenlerle yerel yürütme altyapısı sorgu yürütemeyebilir. Bu gibi durumlarda işlem, geleneksel Spark altyapısına geri döner. Bu geri dönüş mekanizması, iş akışınızda kesinti olmamasını sağlar.

Geri dönüş mekanizmasını gösteren ekran görüntüsü.

Geri dönüş mekanizmasıyla ilişkili günlüklerin nasıl denetleneceğini gösteren ekran görüntüsü.

Sınırlamalar

Yerel yürütme altyapısı Apache Spark işlerinin performansını artırırken, geçerli sınırlamalarına dikkat edin.

  • Altyapı, Delta tabloları için bölümlenmiş yazmayı desteklemez. Birleştirme işlemleri, denetim noktası taramaları ve silme vektörleri gibi Delta'ya özgü bazı işlemler desteklenmez.
  • Bazı Spark özellikleri ve ifadeleri, kullanıcı tanımlı işlevler (UDF' ler) ve işlev gibi yerel yürütme altyapısıyla ve array_contains Spark yapılandırılmış akışıyla uyumlu değildir. Bu uyumsuz işlemlerin veya işlevlerin içeri aktarılan bir kitaplığın parçası olarak kullanımı da Spark altyapısına geri dönüşe neden olur.
  • Özel uç noktaları kullanan depolama çözümlerinden yapılan taramalar desteklenmez.
  • Altyapı ANSI modunu desteklemez, bu nedenle arar ve ANSI modu etkinleştirildikten sonra vanilya Spark'a geri döner.

Sorgularda tarih filtreleri kullanılırken, performans sorunlarını önlemek için karşılaştırmanın her iki tarafındaki veri türlerinin eşleştiğinden emin olmak önemlidir. Eşleşmeyen veri türleri sorgu yürütmeyi artırmayabilir ve açık atama gerektirebilir. Eşleşmeyen türler her zaman otomatik olarak yayınlanmayacağı için her zaman karşılaştırmanın sol tarafındaki (LHS) ve sağ tarafındaki (RHS) veri türlerinin aynı olduğundan emin olun. Tür uyuşmazlığı kaçınılmazsa, gibi CAST(order_date AS DATE) = '2024-05-20'veri türleriyle eşleştirmek için açık atama kullanın. Atama gerektiren eşleşmeyen veri türlerine sahip sorgular Yerel Yürütme Altyapısı tarafından hızlandırılmaz, bu nedenle tür tutarlılığının sağlanması performansı korumak için çok önemlidir. Örneğin, order_date = '2024-05-20' tutarlı veri türlerini sağlamak ve performansı geliştirmek içinDATE, where order_date DATETIME ve string DATEyerine açıkça için yayınlanırorder_date.

Not

Yerel yürütme altyapısı şu anda önizleme aşamasındadır ve içgörüleriniz bizim için önemlidir. Geri bildiriminizi ve değerlendirmenizin sonuçlarını doğrudan ürün ekibimizle paylaşmaya davet ediyoruz. Lütfen geri bildirim formunu doldurun. Değerli görüşlerinizi dört gözle bekliyoruz ve bulgularınızı ayrıntılı olarak tartışmak için sabırsızlanıyoruz.