Elnevezett oszlopokba csoportosított elosztott adatgyűjtemény.
A DataFrame egyenértékű a Spark SQL relációs tábláival, és a SparkSession különböző függvényeivel hozható létre.
Fontos
A DataFrame nem hozható létre közvetlenül a konstruktor használatával.
Támogatja a Spark Connectet
Tulajdonságok
| Ingatlan |
Leírás |
sparkSession |
A DataFrame-et létrehozó SparkSession értéket adja vissza. |
rdd |
A tartalmat a sor RDD-jeként adja vissza (csak klasszikus módban). |
na |
A hiányzó értékek kezelésére szolgáló DataFrameNaFunctions értéket ad vissza. |
stat |
A statisztikai függvényekhez tartozó DataFrameStatFunctions értéket ad vissza. |
write |
Interfész a nem streamelt DataFrame tartalmának külső tárolóba való mentéséhez. |
writeStream |
A streamelt DataFrame tartalmának külső tárolóba mentésére szolgáló felület. |
schema |
Ennek a DataFrame-nek a sémáját adja vissza StructType-ként. |
dtypes |
Az összes oszlopnevet és adattípust listaként adja vissza. |
columns |
Lekéri a DataFrame összes oszlopának nevét listaként. |
storageLevel |
A DataFrame aktuális tárolási szintjének lekérése. |
isStreaming |
Igaz értéket ad vissza, ha ez a DataFrame egy vagy több olyan forrást tartalmaz, amely folyamatosan adatokat ad vissza a beérkezéskor. |
executionInfo |
Egy ExecutionInfo objektumot ad vissza a lekérdezés végrehajtása után. |
plot |
Függvények ábrázolására szolgáló PySparkPlotAccessor értéket ad vissza. |
Metódusok
Adatmegtekintés és -ellenőrzés
Ideiglenes nézetek
Kijelölés és vetítés
Rendezés és rendezés
Összesítés és csoportosítás
| Módszer |
Leírás |
groupBy(*cols) |
Csoportosítja a DataFrame-et a megadott oszlopok szerint, hogy az összesítés végrehajtható legyen rajtuk. |
rollup(*cols) |
Hozzon létre egy többdimenziós összesítőt az aktuális DataFrame-hez a megadott oszlopok használatával. |
cube(*cols) |
Hozzon létre egy többdimenziós kockát az aktuális DataFrame-hez a megadott oszlopok használatával. |
groupingSets(groupingSets, *cols) |
Hozzon létre többdimenziós összesítést az aktuális DataFrame-hez a megadott csoportosítási csoportokkal. |
agg(*exprs) |
Összesítés a teljes DataFrame-en csoportok nélkül (a df.groupBy().agg() rövidítése). |
observe(observation, *exprs) |
Definiáljon (elnevezett) metrikákat a DataFrame-en megfigyelni. |
Joins
| Módszer |
Leírás |
join(other, on, how) |
Egy másik DataFrame-hez csatlakozik a megadott illesztési kifejezés használatával. |
crossJoin(other) |
A cartesian terméket egy másik DataFrame-tal adja vissza. |
lateralJoin(other, on, how) |
Oldalirányú illesztések egy másik DataFrame-hez a megadott illesztési kifejezés használatával. |
Műveletek beállítása
| Módszer |
Leírás |
union(other) |
Adjon vissza egy új DataFrame-et, amely tartalmazza az ebben és egy másik DataFrame-ben lévő sorok egyesítését. |
unionByName(other, allowMissingColumns) |
Egy új DataFrame-et ad vissza, amely az ebben és egy másik DataFrame-ben lévő sorok egyesítését tartalmazza. |
intersect(other) |
Adjon vissza egy új DataFrame-et, amely csak ebben a DataFrame-ben és egy másik DataFrame-ben is tartalmaz sorokat. |
intersectAll(other) |
Adjon vissza egy új DataFrame-et, amely a DataFrame-ben és egy másik DataFrame-ben is tartalmaz sorokat az ismétlődések megőrzése mellett. |
subtract(other) |
Adjon vissza egy új DataFrame-et, amely sorokat tartalmaz ebben a DataFrame-ben, de nem egy másik DataFrame-ben. |
exceptAll(other) |
Adjon vissza egy új DataFrame-et, amely sorokat tartalmaz ebben a DataFrame-ben, de nem egy másik DataFrame-ben, miközben megőrzi az ismétlődéseket. |
Deduplication
| Módszer |
Leírás |
distinct() |
Egy új DataFrame-et ad vissza, amely a DataFrame különböző sorait tartalmazza. |
dropDuplicates(subset) |
Adjon vissza egy új DataFrame-et, amely ismétlődő sorokat távolít el, opcionálisan csak bizonyos oszlopokat figyelembe véve. |
dropDuplicatesWithinWatermark(subset) |
Adjon vissza egy új DataFrame-et, amely ismétlődő sorokat távolít el, opcionálisan csak bizonyos oszlopokat figyelembe véve, a vízjelen belül. |
Mintavételezés és felosztás
Partitioning
Átalakítása
Hiányzó adatkezelés
Statisztikai függvények
Sémaműveletek
| Módszer |
Leírás |
to(schema) |
Egy új DataFrame-et ad vissza, amelyben minden sor egyeztetve van a megadott sémával. |
alias(alias) |
Egy új DataFrame-et ad vissza aliaskészlettel. |
Iteration
| Módszer |
Leírás |
foreach(f) |
Alkalmazza az f függvényt a DataFrame összes sorára. |
foreachPartition(f) |
Alkalmazza az f függvényt a DataFrame minden partíciójára. |
Gyorsítótárazás és adatmegőrzés
| Módszer |
Leírás |
cache() |
Megőrzi a DataFrame-et az alapértelmezett tárolási szinttel (MEMORY_AND_DISK_DESER). |
persist(storageLevel) |
A tárolási szintet úgy állítja be, hogy a DataFrame tartalmát a műveletek során is megőrizze. |
unpersist(blocking) |
A DataFrame-et nem állandóként jelöli meg, és eltávolítja annak összes blokkját a memóriából és a lemezről. |
Ellenőrző pontok használata
Streamelési műveletek
Optimalizálási tippek
Korlátok és eltolások
| Módszer |
Leírás |
limit(num) |
Az eredményszámot a megadott számra korlátozza. |
offset(num) |
Új DataFrame-et ad vissza az első n sor kihagyásával. |
Konvertálási módszerek
Adatok írása
| Módszer |
Leírás |
writeTo(table) |
Hozzon létre egy írási konfigurációszerkesztőt a v2-forrásokhoz. |
mergeInto(table, condition) |
A forrástáblán alapuló frissítések, beszúrások és törlések halmazát egyesíti egy céltáblában. |
DataFrame összehasonlítása
| Módszer |
Leírás |
sameSemantics(other) |
Igaz értéket ad vissza, ha a logikai lekérdezési tervek mindkét DataFrame-ben egyenlőek. |
semanticHash() |
A logikai lekérdezési terv kivonatkódját adja vissza ehhez a DataFrame-hez. |
| Módszer |
Leírás |
inputFiles() |
A DataFrame-et alkotó fájlok részletes pillanatképét adja vissza. |
Speciális SQL-funkciók
| Módszer |
Leírás |
isLocal() |
Igaz értéket ad vissza, ha a gyűjtési és az átvételi metódusok helyileg futtathatók. |
asTable() |
A DataFrame-et TableArg objektummá alakítja, amely táblaargumentumként használható a TVF-ben. |
scalar() |
Oszlopobjektumot ad vissza egy SKALÁRIS al lekérdezéshez, amely pontosan egy sort és egy oszlopot tartalmaz. |
exists() |
Oszlopobjektumot ad vissza egy EXISTS-alqueryhez. |
Examples
Alapszintű DataFrame-műveletek
# 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()
Összesítés és csoportosítás
# 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()