Azure Databricks'te PySpark

Azure Databricks, büyük veri ve makine öğrenmesi için birleşik bir analiz altyapısı olan Apache Spark'ın üzerine kurulmuştur. PySpark, öğrenmesi, uygulaması ve bakımı kolay esnek bir dil olan Python programlama dilini kullanarak Apache Spark ile arabirim oluşturmanıza yardımcı olur. Ayrıca Databricks'te veri görselleştirme için birçok seçenek sunar. PySpark, Python ve Apache Spark'ın gücünü birleştirir.

Bu makalede, Databricks'te PySpark'ın temelleri hakkında genel bir bakış sağlanmaktadır.

Spark kavramlarına giriş

PySpark'ı kullanmaya başlamadan önce temel Apache Spark kavramlarını anlamak önemlidir.

Veri Çerçeveleri

DataFrame'ler Apache Spark'taki birincil nesnelerdir. DataFrame, adlandırılmış sütunlar halinde düzenlenmiş bir veri kümesidir. DataFrame'i elektronik tablo veya SQL tablosu, bir dizi kaydın iki boyutlu etiketli veri yapısı (tablodaki satırlara benzer) ve farklı türlerdeki sütunlar gibi düşünebilirsiniz. DataFrames, ortak veri işleme ve çözümleme görevlerini verimli bir şekilde gerçekleştirmenize olanak sağlayan zengin bir işlev kümesi (örneğin, sütunları seçme, filtreleme, birleştirme ve toplama) sağlar.

Bazı önemli DataFrame öğeleri şunlardır:

  • Şema: Şema, Bir DataFrame'in sütun adlarını ve türlerini tanımlar. Veri biçimleri şema tanımı ve zorlama için farklı semantiklere sahiptir. Bazı veri kaynakları şema bilgilerini sağlarken, diğerleri el ile şema tanımı kullanır veya şema çıkarımına izin verir. Kullanıcılar şemaları el ile tanımlayabilir veya şemalar bir veri kaynağından okunabilir.
  • Satırlar: Spark, DataFrame'deki kayıtları nesne olarak Row temsil eder. Delta Lake gibi temel alınan veri biçimleri verileri depolamak için sütunları kullanırken Spark'ı en iyi duruma getirmek için satırları kullanarak verileri önbelleğe alır ve karıştırır.
  • Sütunlar: Spark'taki sütunlar elektronik tablodaki sütunlara benzer ve dize veya tamsayı gibi basit bir türü temsil edebilir, ancak dizi, eşleme veya null gibi karmaşık türleri de temsil edebilir. Veri kaynağında sütunları seçen, işleyen veya kaldıran sorgular yazabilirsiniz. Olası veri kaynakları tablolar, görünümler, dosyalar veya diğer DataFrame'leri içerir. Sütunlar hiçbir zaman veri kümesinden veya DataFrame'den kaldırılmaz, yalnızca dönüştürmeler veya deyimlerdeki select eksiklik yoluyla .drop sonuçlardan atlanır.

Bilgi işlem

Apache Spark, DataFrame'lerle tanımlanan dönüştürmeleri ve eylemleri işlemek için gecikmeli değerlendirme kullanır. Bu kavramlar Spark ile veri işlemeyi anlamanın temelleridir.

Dönüşümler: Spark'ta işleme mantığını, DataFrame'leri kullanarak verileri yükleme ve işleme yönergeleri olan dönüştürmeler olarak ifade edebilirsiniz. Yaygın dönüştürmeler arasında verileri okuma, birleştirmeler, toplamalar ve tür ataması yer alır. Azure Databricks'teki dönüştürmeler hakkında bilgi için bkz . Verileri dönüştürme.

Gecikmeli Değerlendirme: Spark, dönüştürmeler tarafından belirtilen mantığı değerlendirmek için en verimli fiziksel planı belirleyerek veri işlemeyi iyileştirir. Ancak Spark, eylemler çağrılana kadar dönüşümler üzerinde işlem yapmaz. Spark, her dönüşümü tam olarak belirtilen sırada değerlendirmek yerine, bir eylem tüm dönüştürmelerde hesaplama tetikleyene kadar bekler. Bu gecikmeli değerlendirme veya gecikmeli yükleme olarak bilinir. Spark, tanımlandığında yürütmelerini hemen yürütmek yerine ertelenmiş bir şekilde işlediğinden birden çok işlemi zincirlemenize olanak tanır.

Not

Gecikmeli değerlendirme, DataFrame'lerin mantıksal sorguları bellek içi bir sonuç yerine bir veri kaynağına yönelik yönergeler kümesi olarak depolaması anlamına gelir. Bu, pandas DataFrames tarafından kullanılan model olan istekli yürütmeye göre büyük ölçüde farklılık gösterir.

Eylemler: Eylemler Spark'a bir veya daha fazla DataFrame'deki bir dizi dönüştürmeden elde edilen sonucu hesaplamasını ister. Eylem işlemleri bir değer döndürür ve aşağıdakilerden biri olabilir:

  • Konsolda veya düzenleyicinizde veya gibi display veri çıkışına yönelik eylemler show
  • Veri toplama eylemleri (nesneleri döndürür Row ), örneğin take(n), ve first veya head
  • Veri kaynaklarına yazma eylemleri, örneğin saveAsTable
  • Hesaplama tetikleyen toplamalar, örneğin count

Önemli

Üretim verileri işlem hatlarında, veri yazmak genellikle mevcut olması gereken tek eylemdir. Diğer tüm eylemler sorgu iyileştirmeyi kesintiye uğratabilir ve performans sorunlarına yol açabilir.

DataFrame'lerin sabit olması ne anlama gelir?

DataFrame'ler, bir veya daha fazla veri kaynağında tanımlanan dönüştürmeler ve eylemler koleksiyonudur, ancak sonuçta Apache Spark sorguları özgün veri kaynaklarına geri çözümlediğinden verilerin kendisi değiştirilmez ve DataFrame'ler değiştirilmez. Başka bir deyişle, DataFrame'ler sabittir. Bu nedenle, dönüştürmeleri gerçekleştirdikten sonra, sonraki işlemlerde bu değişkene erişmek için bir değişkene kaydedilmesi gereken yeni bir DataFrame döndürülür. Dönüştürmenizin bir ara adımını değerlendirmek istiyorsanız bir eylem çağırın.

API'ler ve kitaplıklar

Spark için tüm API'lerde olduğu gibi PySpark da aşağıdakiler dahil olmak üzere güçlü işlevleri etkinleştiren ve destekleyen birçok API ve kitaplıkla donatılmış olarak gelir:

  • Spark SQL ve DataFrames ile ilişkisel sorgularla yapılandırılmış verilerin işlenmesi. Spark SQL, SQL sorgularını Spark programlarıyla karıştırmanıza olanak tanır. Spark DataFrames ile Python ve SQL kullanarak verileri verimli bir şekilde okuyabilir, yazabilir, dönüştürebilir ve analiz edebilirsiniz. Bu, her zaman Spark'ın tüm gücünden yararlandığınız anlamına gelir. Bkz. PySpark Başlarken.
  • Yapılandırılmış Akış ile akışların ölçeklenebilir işlenmesi. Akış hesaplamanızı statik verilerde toplu işlem ifade ettiğiniz gibi ifade edebilirsiniz ve akış verileri gelmeye devam ettikçe Spark SQL altyapısı bunu artımlı ve sürekli olarak çalıştırır. Bkz . Yapılandırılmış Akışa Genel Bakış.
  • Spark üzerinde Pandas API'siyle Apache Spark üzerinde çalışan Pandas veri yapıları ve veri çözümleme araçları. Spark'ta Pandas API'si, pandas (testler, daha küçük veri kümeleri) ve Spark (üretim, dağıtılmış veri kümeleri) ile çalışan tek bir kod tabanıyla birden çok düğüme dağıtılmış olarak çalıştırarak pandas iş yükünüzü herhangi bir boyuta ölçeklendirmenize olanak tanır. Bkz. Spark üzerinde Pandas API'lerine Genel Bakış.
  • Machine Learning (MLLib) ile makine öğrenmesi algoritmaları. MLlib, kullanıcıların pratik makine öğrenmesi işlem hatlarını oluşturmalarına ve ayarlamalarına yardımcı olan tekdüzen bir API kümesi sağlayan, Spark üzerinde oluşturulmuş ölçeklenebilir bir makine öğrenmesi kitaplığıdır. Bkz. Machine Learning Kitaplığına Genel Bakış.
  • GraphX ile grafikler ve graf paralel hesaplama. GraphX, her köşeye ve kenara eklenen özelliklere sahip yeni bir yönlendirilmiş çarpım sunar ve graf analizi görevlerini basitleştirmek için graf hesaplama işleçlerini, algoritmaları ve oluşturucuları kullanıma sunar. Bkz. GraphX'e Genel Bakış.

Spark öğreticileri

Databricks üzerinde PySpark kullanım örnekleri için aşağıdaki makalelere bakın:

Apache Spark belgelerinde Spark'ı öğrenmeye yönelik aşağıdakiler de dahil olmak üzere hızlı başlangıçlar ve kılavuzlar da bulunur:

PySpark başvurusu

Azure Databricks, PySpark API'lerinin kendi sürümünü ve ilgili başvuruyu şu bölümlerde bulabilirsiniz: