Not defterlerinde gerçek zamanlı öneriler için Apache Spark danışmanı

Apache Spark danışmanı, Apache Spark tarafından çalıştırılan komutları ve kodları analiz eder ve not defteri çalıştırma süreçleri için gerçek zamanlı öneriler sunar. Apache Spark danışmanı, kullanıcıların yaygın hatalardan kaçınmasına yardımcı olmak için yerleşik desenlere sahiptir. Kod iyileştirme önerileri sunar, hata analizi gerçekleştirir ve hataların kök nedenini bulur.

Gömülü öneriler

Impulse ile tümleşik bir araç olan Spark danışmanı, Apache Spark uygulamalarında sorunları algılamak ve çözmek için yerleşik desenler sağlar. Bu makalede, araçta yer alan bazı desenler açıklanmaktadır.

İhtiyacınız olan öneri türüne göre Son çalıştırmalar bölmesini açabilirsiniz.

'randomSplit' kullanılırken tutarsız sonuçlar döndürebilir

randomSplit yöntemiyle çalışırken tutarsız veya yanlış sonuçlar döndürülebilir. randomSplit() yöntemini kullanmadan önce Apache Spark (RDD) önbelleğe alma özelliğini kullanın.

randomSplit() yöntemi, veri çerçevenizde birden çok kez sample() gerçekleştirmeye eşdeğerdir. Her bir örnek, veri çerçevenizi bölümlerin içinde tekrar alır, bölümlere ayırır ve sıralar. Bölümler arasında veri dağıtımı ve sıralama düzeni hem randomSplit() hem de sample() için önemlidir. Veri yeniden yapılandırmada değişiklik olursa, bölmeler arasında yinelenenler veya eksik değerler olabilir. Aynı tohumu kullanan örnek farklı sonuçlar verebilir.

Bu tutarsızlıklar her çalıştırmada gerçekleşmeyebilir, ancak bunları tamamen ortadan kaldırmak, veri çerçevenizi önbelleğe almak, sütunlarda yeniden bölümlenmek veya groupBy gibi toplama işlevlerini uygulamak için kullanılabilir.

Tablo/görünüm adı zaten kullanımda

Oluşturulan tabloyla aynı ada sahip bir görünüm zaten var veya oluşturulan görünümle aynı ada sahip bir tablo zaten var. Bu ad sorgularda veya uygulamalarda kullanıldığında, ilk olarak hangisinin oluşturulduğu fark etmez, yalnızca görünüm döndürülür. Çakışmaları önlemek için tabloyu veya görünümü yeniden adlandırın.

İpucu algılanamıyor

spark.sql("SELECT /*+ unknownHint */ * FROM t1")

Belirtilmiş ilişki adı/adları bulunamıyor

İpucunda belirtilen ilişki bulunamıyor. İlişkinin doğru yazıldığını ve ipucu kapsamında erişilebilir olduğunu doğrulayın.

spark.sql("SELECT /*+ BROADCAST(unknownTable) */ * FROM t1 INNER JOIN t2 ON t1.str = t2.str")

Sorgudaki bir ipucu, başka bir ipucunun uygulanmasını engeller

Seçili sorgu, başka bir ipucunun uygulanmasını engelleyen bir ipucu içeriyor.

spark.sql("SELECT /*+ BROADCAST(t1), MERGE(t1, t2) */ * FROM t1 INNER JOIN t2 ON t1.str = t2.str")

Yuvarlama hatası yaymayı azaltmak için 'spark.advise.divisionExprConvertRule.enable' özelliğini etkinleştirin

Bu sorgu, Double türü ifadeyi içerir. Bölme ifadelerini azaltmaya ve yuvarlama hatası yaymayı azaltmaya yardımcı olabilecek 'spark.advise.divisionExprConvertRule.enable' yapılandırmasını etkinleştirmenizi öneririz.

"t.a/t.b/t.c" convert into "t.a/(t.b * t.c)"

Sorgu performansını geliştirmek için 'spark.advise.nonEqJoinConvertRule.enable' özelliğini etkinleştirin

Sorgudaki "Veya" koşulu nedeniyle bu sorgu, zaman alıcı bir birleştirme içeriyor. Bu sorguyu hızlandırmak için "Veya" koşuluyla tetiklenen birleştirmeyi SMJ veya BHJ'ye dönüştürmeye yardımcı olabilecek 'spark.advise.nonEqJoinConvertRule.enable' yapılandırmasını etkinleştirmenizi öneririz.

JVM tabanlı Spark'a geçiş yaparak çalıştırma

Yerel Yürütme Altyapısı etkinleştirildiğinde ve not defteri hücresinin yürütme planı yerel yola boşaltılmayan işleçler içerdiğinde Spark Danışmanı hücre çıkışında gerçek zamanlı bir uyarı gösterir. Uyarı, yürütmenin JVM tabanlı Spark'a geri döndüğünü gösterir ve desteklenmeyen işleçler, veri türleri veya yapılandırmalar gibi nedeni belirlemenize yardımcı olur. Geri dönüşü ele almak için desteklenmeyen işlemler için sorgu planını gözden geçirin ve mantığınızı desteklenen işleçleri kullanacak şekilde ayarlayın ya da not defteriniz veya Spark iş tanımınız için doğru şekilde ayarlandığını spark.native.enabled doğrulayın.

Kullanıcı deneyimi

Apache Spark danışmanı, bilgiler, uyarılar ve hatalar dahil olmak üzere tavsiyeleri defter hücresi çıkışında gerçek zamanlı olarak gösterir.

  • Bilgileri gösteren bilgi ekran görüntüsü.

  • Uyarı Uyarıyı gösteren ekran görüntüsü.

  • Hataları gösteren hata ekran görüntüsü.

Spark Danışmanı Ayarı

Spark danışmanı ayarı, belirli Spark öneri türlerini gereksinimlerinize göre göstermeyi veya gizlemeyi seçmenizi sağlar. Ayrıca, tercihlerinize göre bir çalışma alanı içindeki defterleriniz için Spark Advisor'ı etkinleştirme veya devre dışı bırakma esnekliğine sahipsiniz.

Spark Advisor ayarlarına Fabric notebook seviyesinde erişerek faydalarını kullanabilir ve verimli bir not defteri yazarlık deneyimi sağlayabilirsiniz.

Spark danışmanı ayarını gösteren ekran görüntüsü.