Spark SQL kullanarak verilerle çalışma

Tamamlandı

Veri Çerçevesi API'si, veri analistlerinin verileri sorgulamak ve işlemek için SQL ifadelerini kullanmasına olanak tanıyan Spark SQL adlı spark kitaplığının bir parçasıdır.

Spark kataloğunda veritabanı nesneleri oluşturma

Spark kataloğu, görünümler ve tablolar gibi ilişkisel veri nesneleri için bir meta veri deposudur. Spark çalışma zamanı, spark destekli herhangi bir dilde yazılmış kodu bazı veri analistleri veya geliştiriciler için daha doğal olabilecek SQL ifadeleriyle sorunsuz bir şekilde tümleştirmek için kataloğu kullanabilir.

Aşağıdaki kod örneğinde gösterildiği gibi, bir veri çerçevesindeki verileri Spark kataloğunda sorgulama için kullanılabilir hale getirmenin en basit yollarından biri geçici bir görünüm oluşturmaktır:

df.createOrReplaceTempView("products_view")

Görünüm geçicidir, yani geçerli oturumun sonunda otomatik olarak silinir. Spark SQL kullanılarak sorgulanabilen bir veritabanı tanımlamak için katalogda kalıcı olan tablolar da oluşturabilirsiniz.

Tablolar, temel verilerini katalogla ilişkili depolama konumunda depolayan meta veri yapılarıdır. Microsoft Fabric'te, yönetilen tablolara yönelik veriler veri gölünüzde gösterilen Tablolar depolama konumunda depolanır ve Spark kullanılarak oluşturulan tüm tablolar burada listelenir.

yöntemini kullanarak spark.catalog.createTable boş bir tablo oluşturabilir veya yöntemini kullanarak bir veri çerçevesini saveAsTable tablo olarak kaydedebilirsiniz. Yönetilen bir tablonun silinmesi, temel alınan verileri de siler.

Örneğin, aşağıdaki kod bir veri çerçevesini products adlı yeni bir tablo olarak kaydeder:

df.write.format("delta").saveAsTable("products")

Dekont

Spark kataloğu, çeşitli biçimlerdeki dosyaları temel alan tabloları destekler. Microsoft Fabric'te tercih edilen biçim Delta Lake adlı Spark'taki ilişkisel veri teknolojisinin biçimi olan delta biçimidir. Delta tabloları, işlemler, sürüm oluşturma ve akış verileri desteği dahil olmak üzere ilişkisel veritabanı sistemlerinde yaygın olarak bulunan özellikleri destekler.

Ayrıca, yöntemini kullanarak spark.catalog.createExternalTable dış tablolar oluşturabilirsiniz. Dış tablolar katalogda meta verileri tanımlar ancak temel verilerini bir dış depolama konumundan alır; genellikle bir lakehouse'un Dosyalar depolama alanındaki bir klasör. Dış tablo silindiğinde temel alınan veriler silinmez.

Bahşiş

Delta lake tablolarına, önceki ünitedeki parquet dosyaları için açıklandığı gibi aynı bölümleme tekniğini uygulayabilirsiniz. Tabloların bölümlenmesi, sorgulanırken daha iyi performansa neden olabilir.

Verileri sorgulamak için Spark SQL API'sini kullanma

Spark SQL API'sini herhangi bir dilde yazılmış kodda kullanarak katalogdaki verileri sorgulayabilirsiniz. Örneğin, aşağıdaki PySpark kodu ürünler tablosundan veri çerçevesi olarak veri döndürmek için bir SQL sorgusu kullanır.

bikes_df = spark.sql("SELECT ProductID, ProductName, ListPrice \
                      FROM products \
                      WHERE Category IN ('Mountain Bikes', 'Road Bikes')")
display(bikes_df)

Kod örneğinden elde edilen sonuçlar aşağıdaki tabloya benzer olacaktır:

ProductID ProductName ListPrice
771 Mountain-100 Gümüş, 38 3399.9900
839 Road-750 Siyah, 52 539.9900
... ... ...

SQL kodunu kullanma

Önceki örnekte, Spark koduna SQL ifadelerini eklemek için Spark SQL API'sinin nasıl kullanılacağı gösterilmiştir. Not defterinde, aşağıdaki gibi katalogdaki nesneleri sorgulayan SQL kodunu çalıştırmak için de büyü kullanabilirsiniz %%sql :

%%sql

SELECT Category, COUNT(ProductID) AS ProductCount
FROM products
GROUP BY Category
ORDER BY Category

SQL kodu örneği, not defterinde otomatik olarak tablo olarak görüntülenen bir sonuç kümesi döndürür:

Kategori ProductCount
Bib-Şort 3
Bisiklet Rafları 1
Bisiklet Standları 1
... ...