Een gedistribueerde verzameling gegevens die zijn gegroepeerd in benoemde kolommen.
Een DataFrame is gelijk aan een relationele tabel in Spark SQL en kan worden gemaakt met behulp van verschillende functies in SparkSession.
Belangrijk
Een DataFrame mag niet rechtstreeks worden gemaakt met behulp van de constructor.
Ondersteunt Spark Connect
Eigenschappen
| Vastgoed |
Beschrijving |
sparkSession |
Hiermee wordt SparkSession geretourneerd die dit DataFrame heeft gemaakt. |
rdd |
Retourneert de inhoud als een RDD van rij (alleen klassieke modus). |
na |
Hiermee wordt een DataFrameNaFunctions geretourneerd voor het verwerken van ontbrekende waarden. |
stat |
Hiermee wordt een DataFrameStatFunctions geretourneerd voor statistische functies. |
write |
Interface voor het opslaan van de inhoud van het niet-streaming DataFrame in externe opslag. |
writeStream |
Interface voor het opslaan van de inhoud van het streaming DataFrame in externe opslag. |
schema |
Retourneert het schema van dit DataFrame als een StructType. |
dtypes |
Retourneert alle kolomnamen en de bijbehorende gegevenstypen als een lijst. |
columns |
Haalt de namen van alle kolommen in het DataFrame op als een lijst. |
storageLevel |
Haal het huidige opslagniveau van het DataFrame op. |
isStreaming |
Retourneert Waar als dit DataFrame een of meer bronnen bevat die continu gegevens retourneren wanneer deze binnenkomen. |
executionInfo |
Retourneert een ExecutionInfo-object nadat de query is uitgevoerd. |
plot |
Hiermee wordt een PySparkPlotAccessor geretourneerd voor het tekenen van functies. |
Methods
Gegevensweergave en -inspectie
| Methode |
Beschrijving |
toJSON(use_unicode) |
Converteert een DataFrame naar een RDD van tekenreeks of DataFrame. |
printSchema(level) |
Hiermee wordt het schema afgedrukt in de structuurindeling. |
explain(extended, mode) |
Hiermee worden de (logische en fysieke) plannen afgedrukt naar de console voor foutopsporing. |
show(n, truncate, vertical) |
Hiermee worden de eerste n rijen van het DataFrame afgedrukt naar de console. |
collect() |
Retourneert alle records in het DataFrame als een lijst met rijen. |
toLocalIterator(prefetchPartitions) |
Retourneert een iterator die alle rijen in dit DataFrame bevat. |
take(num) |
Retourneert de eerste getalrijen als een lijst met rijen. |
tail(num) |
Retourneert de laatste getalrijen als een lijst met rijen. |
head(n) |
Retourneert de eerste n rijen. |
first() |
Retourneert de eerste rij als een rij. |
count() |
Retourneert het aantal rijen in dit DataFrame. |
isEmpty() |
Controleert of het DataFrame leeg is en retourneert een Booleaanse waarde. |
describe(*cols) |
Berekent basisstatistieken voor numerieke en tekenreekskolommen. |
summary(*statistics) |
Berekent de opgegeven statistieken voor numerieke en tekenreekskolommen. |
Tijdelijke weergaven
Selectie en projectie
| Methode |
Beschrijving |
select(*cols) |
Projecteert een set expressies en retourneert een nieuw DataFrame. |
selectExpr(*expr) |
Projecteert een set SQL-expressies en retourneert een nieuw DataFrame. |
filter(condition) |
Hiermee filtert u rijen met behulp van de opgegeven voorwaarde. |
where(condition) |
Alias voor filter. |
drop(*cols) |
Retourneert een nieuw DataFrame zonder opgegeven kolommen. |
toDF(*cols) |
Retourneert een nieuw DataFrame met nieuwe opgegeven kolomnamen. |
withColumn(colName, col) |
Retourneert een nieuw DataFrame door een kolom toe te voegen of de bestaande kolom met dezelfde naam te vervangen. |
withColumns(*colsMap) |
Retourneert een nieuw DataFrame door meerdere kolommen toe te voegen of de bestaande kolommen met dezelfde namen te vervangen. |
withColumnRenamed(existing, new) |
Retourneert een nieuw DataFrame door de naam van een bestaande kolom te wijzigen. |
withColumnsRenamed(colsMap) |
Retourneert een nieuw DataFrame door de naam van meerdere kolommen te wijzigen. |
withMetadata(columnName, metadata) |
Retourneert een nieuw DataFrame door een bestaande kolom met metagegevens bij te werken. |
metadataColumn(colName) |
Selecteert een kolom met metagegevens op basis van de naam van de logische kolom en retourneert deze als een kolom. |
colRegex(colName) |
Selecteert de kolom op basis van de kolomnaam die is opgegeven als een regex en retourneert deze als kolom. |
Sorteren en ordenen
Aggregatie en groepering
| Methode |
Beschrijving |
groupBy(*cols) |
Hiermee wordt het DataFrame gegroepeerd op basis van de opgegeven kolommen, zodat aggregatie erop kan worden uitgevoerd. |
rollup(*cols) |
Maak een multidimensionale rollup voor het huidige DataFrame met behulp van de opgegeven kolommen. |
cube(*cols) |
Maak een multidimensionale kubus voor het huidige DataFrame met behulp van de opgegeven kolommen. |
groupingSets(groupingSets, *cols) |
Maak multidimensionale aggregatie voor het huidige DataFrame met behulp van de opgegeven groeperingssets. |
agg(*exprs) |
Aggregeren op het hele DataFrame zonder groepen (afkorting voor df.groupBy().agg()). |
observe(observation, *exprs) |
Definieer (benoemde) metrische gegevens om te observeren op het DataFrame. |
[Samenvoegingen]
| Methode |
Beschrijving |
join(other, on, how) |
Wordt samengevoegd met een ander DataFrame, met behulp van de opgegeven join-expressie. |
crossJoin(other) |
Retourneert het cartesische product met een ander DataFrame. |
lateralJoin(other, on, how) |
Lateral joins met een ander DataFrame, met behulp van de opgegeven join-expressie. |
Bewerkingen instellen
| Methode |
Beschrijving |
union(other) |
Retourneert een nieuw DataFrame met de samenvoeging van rijen in dit en een ander DataFrame. |
unionByName(other, allowMissingColumns) |
Retourneert een nieuw DataFrame met een samenvoeging van rijen in dit en een ander DataFrame. |
intersect(other) |
Retourneert een nieuw DataFrame dat alleen rijen bevat in zowel dit DataFrame als een ander DataFrame. |
intersectAll(other) |
Retourneer een nieuw DataFrame met rijen in zowel dit DataFrame als een ander DataFrame, met behoud van duplicaten. |
subtract(other) |
Retourneert een nieuw DataFrame met rijen in dit DataFrame, maar niet in een ander DataFrame. |
exceptAll(other) |
Retourneer een nieuw DataFrame met rijen in dit DataFrame, maar niet in een ander DataFrame, terwijl duplicaten behouden blijven. |
Ontdubbeling
| Methode |
Beschrijving |
distinct() |
Retourneert een nieuw DataFrame met de afzonderlijke rijen in dit DataFrame. |
dropDuplicates(subset) |
Retourneer een nieuw DataFrame waarbij dubbele rijen zijn verwijderd, eventueel alleen rekening houdend met bepaalde kolommen. |
dropDuplicatesWithinWatermark(subset) |
Retourneer een nieuw DataFrame met dubbele rijen die zijn verwijderd, eventueel alleen rekening houdend met bepaalde kolommen binnen het watermerk. |
Steekproeven en splitsen
Partitie
| Methode |
Beschrijving |
coalesce(numPartitions) |
Retourneert een nieuw DataFrame met exact numPartitions-partities. |
repartition(numPartitions, *cols) |
Retourneert een nieuw DataFrame dat is gepartitioneerd door de opgegeven partitioneringsexpressies. |
repartitionByRange(numPartitions, *cols) |
Retourneert een nieuw DataFrame dat is gepartitioneerd door de opgegeven partitioneringsexpressies. |
repartitionById(numPartitions, partitionIdCol) |
Retourneert een nieuw DataFrame dat is gepartitioneerd door de opgegeven partitie-id-expressie. |
Herstructurering
Ontbrekende gegevensverwerking
Statistische functies
Schemabewerkingen
| Methode |
Beschrijving |
to(schema) |
Retourneert een nieuw DataFrame waarin elke rij wordt afgestemd op het opgegeven schema. |
alias(alias) |
Retourneert een nieuw DataFrame met een aliasset. |
Iteration
| Methode |
Beschrijving |
foreach(f) |
Hiermee past u de f-functie toe op alle rijen van dit DataFrame. |
foreachPartition(f) |
Hiermee past u de f-functie toe op elke partitie van dit DataFrame. |
Caching en persistentie
| Methode |
Beschrijving |
cache() |
Het DataFrame blijft behouden met het standaardopslagniveau (MEMORY_AND_DISK_DESER). |
persist(storageLevel) |
Hiermee stelt u het opslagniveau in om de inhoud van het DataFrame tussen bewerkingen te behouden. |
unpersist(blocking) |
Markeert het DataFrame als niet-persistent en verwijder alle blokken ervoor uit het geheugen en de schijf. |
Controlepunten maken
Streamingbewerkingen
Optimalisatiehints
Limieten en offsets
| Methode |
Beschrijving |
limit(num) |
Hiermee beperkt u het aantal resultaten tot het opgegeven getal. |
offset(num) |
Retourneert een nieuw DataFrame door de eerste n rijen over te slaan. |
| Methode |
Beschrijving |
transform(func, *args, **kwargs) |
Hiermee wordt een nieuw DataFrame geretourneerd. Beknopte syntaxis voor het koppelen van aangepaste transformaties. |
Conversiemethoden
| Methode |
Beschrijving |
toPandas() |
Retourneert de inhoud van dit DataFrame als Pandas pandas. DataFrame. |
toArrow() |
Retourneert de inhoud van dit DataFrame als PyArrow pyarrow. Tabel. |
pandas_api(index_col) |
Converteert het bestaande DataFrame naar een Pandas-on-Spark DataFrame. |
mapInPandas(func, schema, barrier, profile) |
Hiermee wordt een iterator van batches in het huidige DataFrame toegewezen met behulp van een systeemeigen Python-functie. |
mapInArrow(func, schema, barrier, profile) |
Hiermee wordt een iterator van batches in het huidige DataFrame toegewezen met behulp van een systeemeigen Python-functie die wordt uitgevoerd op pyarrow. RecordBatch. |
Gegevens schrijven
| Methode |
Beschrijving |
writeTo(table) |
Maak een opbouwfunctie voor schrijfconfiguratie voor v2-bronnen. |
mergeInto(table, condition) |
Voegt een set updates, invoegingen en verwijderingen samen op basis van een brontabel in een doeltabel. |
DataFrame-vergelijking
| Methode |
Beschrijving |
sameSemantics(other) |
Retourneert Waar wanneer de logische queryplannen in beide DataFrames gelijk zijn. |
semanticHash() |
Retourneert een hashcode van het logische queryplan voor dit DataFrame. |
| Methode |
Beschrijving |
inputFiles() |
Retourneert een momentopname van de best effort van de bestanden die dit DataFrame vormen. |
Geavanceerde SQL-functies
| Methode |
Beschrijving |
isLocal() |
Retourneert True als de methoden voor verzamelen en nemen lokaal kunnen worden uitgevoerd. |
asTable() |
Converteert het DataFrame naar een TableArg-object, dat kan worden gebruikt als een tabelargument in een TVF. |
scalar() |
Retourneert een kolomobject voor een SCALAR-subquery die precies één rij en één kolom bevat. |
exists() |
Retourneert een kolomobject voor een EXISTS-subquery. |
Examples
Eenvoudige DataFrame-bewerkingen
# Create a DataFrame
people = spark.createDataFrame([
{"deptId": 1, "age": 40, "name": "Hyukjin Kwon", "gender": "M", "salary": 50},
{"deptId": 1, "age": 50, "name": "Takuya Ueshin", "gender": "M", "salary": 100},
{"deptId": 2, "age": 60, "name": "Xinrong Meng", "gender": "F", "salary": 150},
{"deptId": 3, "age": 20, "name": "Haejoon Lee", "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()
Aggregatie en groepering
# 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()
[Samenvoegingen]
# 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()