Adlandırılmış sütunlar halinde gruplandırılmış dağıtılmış bir veri koleksiyonu.
DataFrame, Spark SQL'deki ilişkisel tabloya eşdeğerdir ve SparkSession'daki çeşitli işlevler kullanılarak oluşturulabilir.
Önemli
DataFrame oluşturucu kullanılarak doğrudan oluşturulmamalıdır.
Spark Connect'i destekler
Özellikler
| Mülkiyet |
Açıklama |
sparkSession |
Bu DataFrame'i oluşturan SparkSession'ı döndürür. |
rdd |
İçeriği Satır RDD'si olarak döndürür (yalnızca Klasik mod). |
na |
Eksik değerleri işlemek için bir DataFrameNaFunctions döndürür. |
stat |
İstatistik işlevleri için bir DataFrameStatFunctions döndürür. |
write |
Akış dışı DataFrame'in içeriğini dış depolama alanına kaydetme arabirimi. |
writeStream |
DataFrame akışının içeriğini dış depolama alanına kaydetme arabirimi. |
schema |
Bu DataFrame'in şemasını StructType olarak döndürür. |
dtypes |
Tüm sütun adlarını ve bunların veri türlerini liste olarak döndürür. |
columns |
DataFrame'deki tüm sütunların adlarını liste olarak alır. |
storageLevel |
DataFrame'in geçerli depolama düzeyini alın. |
isStreaming |
Bu DataFrame geldikçe sürekli veri döndüren bir veya daha fazla kaynak içeriyorsa True döndürür. |
executionInfo |
Sorgu yürütüldükten sonra bir ExecutionInfo nesnesi döndürür. |
plot |
İşlevleri çizmek için bir PySparkPlotAccessor döndürür. |
Methods
Veri görüntüleme ve denetleme
Geçici görünümler
Seçim ve projeksiyon
Sıralama ve sıralama
Toplama ve gruplandırma
| Yöntem |
Açıklama |
groupBy(*cols) |
DataFrame'i belirtilen sütunlara göre gruplandırarak bunlar üzerinde toplama gerçekleştirilebilmesini sağlayın. |
rollup(*cols) |
Belirtilen sütunları kullanarak geçerli DataFrame için çok boyutlu bir toplama oluşturun. |
cube(*cols) |
Belirtilen sütunları kullanarak geçerli DataFrame için çok boyutlu bir küp oluşturun. |
groupingSets(groupingSets, *cols) |
Belirtilen gruplandırma kümelerini kullanarak geçerli DataFrame için çok boyutlu toplama oluşturun. |
agg(*exprs) |
DataFrame'in tamamında gruplar olmadan toplama (df.groupBy().agg() kısaltması). |
observe(observation, *exprs) |
DataFrame'de gözlemlenen (adlandırılmış) ölçümleri tanımlayın. |
Joins
İşlemleri ayarlama
| Yöntem |
Açıklama |
union(other) |
Bu ve başka bir DataFrame'deki satırların birleşimini içeren yeni bir DataFrame döndürür. |
unionByName(other, allowMissingColumns) |
Bu ve başka bir DataFrame'deki satırların birleşimini içeren yeni bir DataFrame döndürür. |
intersect(other) |
Yalnızca bu DataFrame'de ve başka bir DataFrame'de satırlar içeren yeni bir DataFrame döndürür. |
intersectAll(other) |
Yinelenenleri korurken hem bu DataFrame'de hem de başka bir DataFrame'de satırlar içeren yeni bir DataFrame döndürür. |
subtract(other) |
Bu DataFrame'de satır içeren ancak başka bir DataFrame'de olmayan yeni bir DataFrame döndür. |
exceptAll(other) |
Yinelenenleri korurken bu DataFrame'de satır içeren ancak başka bir DataFrame'de olmayan yeni bir DataFrame döndürür. |
Deduplication
| Yöntem |
Açıklama |
distinct() |
Bu DataFrame'deki ayrı satırları içeren yeni bir DataFrame döndürür. |
dropDuplicates(subset) |
İsteğe bağlı olarak yalnızca belirli sütunları dikkate alarak yinelenen satırların kaldırıldığı yeni bir DataFrame döndürür. |
dropDuplicatesWithinWatermark(subset) |
Filigran içinde isteğe bağlı olarak yalnızca belirli sütunları dikkate alarak yinelenen satırların kaldırıldığı yeni bir DataFrame döndürür. |
Örnekleme ve bölme
Partitioning
Yeniden şekillendirme
Eksik veri işleme
İstatistiksel işlevler
Şema işlemleri
| Yöntem |
Açıklama |
to(schema) |
Her satırın belirtilen şemayla eşleşecek şekilde uzlaştırıldığı yeni bir DataFrame döndürür. |
alias(alias) |
Diğer ad kümesine sahip yeni bir DataFrame döndürür. |
Yineleme
| Yöntem |
Açıklama |
foreach(f) |
f işlevini bu DataFrame'in tüm Satırlarına uygular. |
foreachPartition(f) |
f işlevini bu DataFrame'in her bölümüne uygular. |
Önbelleğe alma ve kalıcılık
Aşağıdaki tablo, klasik hesaplamadaki davranışı açıklar.
| Yöntem |
Açıklama |
cache() |
DataFrame'i varsayılan depolama düzeyiyle (MEMORY_AND_DISK_DESER) kalıcı hale getirir. |
persist(storageLevel) |
DataFrame'in içeriğini işlemler arasında kalıcı hale getirmek için depolama düzeyini ayarlar. |
unpersist(blocking) |
DataFrame'i kalıcı olmayan olarak işaretler ve bellekten ve diskten tüm blokları kaldırır. |
Sunucusuz hesaplamada cache() , persist() DataFrame'i hemen hesaplayın ve sonucu oturumunuz için sabit bir anlık görüntü olarak saklayın, persist() depolama seviyesini görmezden gelin.
unpersist() Snapshot'u geri alınmaya hazır olarak işaretler ve DataFrame ile ondan türetilen DataFrame'ler artık kullanılamaz.
Bkz. Cache DataFrames (Sunucusuz hesaplamada).
Kontrol noktası oluşturma
Akış işlemleri
İyileştirme ipuçları
Sınırlar ve uzaklıklar
| Yöntem |
Açıklama |
limit(num) |
Sonuç sayısını belirtilen sayıyla sınırlar. |
offset(num) |
İlk n satırı atlayarak yeni bir DataFrame döndürür. |
Dönüştürme yöntemleri
Veri yazımı
| Yöntem |
Açıklama |
writeTo(table) |
v2 kaynakları için bir yazma yapılandırma oluşturucusu oluşturun. |
mergeInto(table, condition) |
Kaynak tabloyu temel alan bir dizi güncelleştirme, ekleme ve silmeyi hedef tabloyla birleştirir. |
DataFrame karşılaştırması
| Yöntem |
Açıklama |
sameSemantics(other) |
Her iki DataFrame içindeki mantıksal sorgu planları eşit olduğunda True döndürür. |
semanticHash() |
Bu DataFrame'e karşı mantıksal sorgu planının karma kodunu döndürür. |
| Yöntem |
Açıklama |
inputFiles() |
Bu DataFrame'i oluşturan dosyaların en iyi çaba anlık görüntüsünü döndürür. |
Gelişmiş SQL özellikleri
| Yöntem |
Açıklama |
isLocal() |
Toplama ve alma yöntemleri yerel olarak çalıştırılabilirse True döndürür. |
asTable() |
DataFrame'i, TVF'de tablo bağımsız değişkeni olarak kullanılabilen tableArg nesnesine dönüştürür. |
scalar() |
Tam olarak bir satır ve bir sütun içeren bir SCALAR Alt Sorgusu için Sütun nesnesi döndürür. |
exists() |
EXISTS Alt Sorgusu için Sütun nesnesi döndürme. |
Örnekler
Temel DataFrame işlemleri
# Create a DataFrame
people = spark.createDataFrame([
{"deptId": 1, "age": 40, "name": "Alice", "gender": "M", "salary": 50},
{"deptId": 1, "age": 50, "name": "Bob", "gender": "M", "salary": 100},
{"deptId": 2, "age": 60, "name": "Sue", "gender": "F", "salary": 150},
{"deptId": 3, "age": 20, "name": "Tom", "gender": "M", "salary": 200}
])
# Select columns
people.select("name", "age").show()
# Filter rows
people.filter(people.age > 30).show()
# Add a new column
people.withColumn("age_plus_10", people.age + 10).show()
Toplama ve gruplandırma
# Group by and aggregate
people.groupBy("gender").agg({"salary": "avg", "age": "max"}).show()
# Multiple aggregations
from pyspark.sql import functions as F
people.groupBy("deptId").agg(
F.avg("salary").alias("avg_salary"),
F.max("age").alias("max_age")
).show()
Joins
# Create another DataFrame
department = spark.createDataFrame([
{"id": 1, "name": "PySpark"},
{"id": 2, "name": "ML"},
{"id": 3, "name": "Spark SQL"}
])
# Join DataFrames
people.join(department, people.deptId == department.id).show()
# Chained operations
result = people.filter(people.age > 30) \
.join(department, people.deptId == department.id) \
.groupBy(department.name, "gender") \
.agg({"salary": "avg", "age": "max"}) \
.sort("max(age)")
result.show()