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.
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:
Ortam ayarlarınıza gidin.
Spark özellikleri'ne gidin.
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 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;
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.
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.
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.
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 DATE
yerine 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.
İlgili içerik
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin