Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Uma coleção distribuída de dados agrupados em colunas nomeadas.
Um DataFrame é equivalente a uma tabela relacional no Spark SQL e pode ser criado usando várias funções no SparkSession.
Importante
Um DataFrame não deve ser criado diretamente usando o construtor.
Suporta Spark Connect
Propriedades
| Propriedade | Descrição |
|---|---|
sparkSession |
Devolve o SparkSession que criou este DataFrame. |
rdd |
Devolve o conteúdo como RDD de Row (apenas modo Clássico). |
na |
Devolve um DataFrameNaFunctions para lidar com valores em falta. |
stat |
Devolve uma DataFrameStatFunctions para funções estatísticas. |
write |
Interface para guardar o conteúdo do DataFrame não em streaming para armazenamento externo. |
writeStream |
Interface para guardar o conteúdo do DataFrame em streaming para armazenamento externo. |
schema |
Devolve o esquema deste DataFrame como um StructType. |
dtypes |
Devolve todos os nomes das colunas e os seus tipos de dados como uma lista. |
columns |
Recupera os nomes de todas as colunas do DataFrame como uma lista. |
storageLevel |
Obtenha o nível de armazenamento atual do DataFrame. |
isStreaming |
Retorna Verdadeiro se este DataFrame contiver uma ou mais fontes que retornam continuamente dados à medida que chegam. |
executionInfo |
Devolve um objeto ExecutionInfo após a execução da consulta. |
plot |
Devolve um PySparkPlotAccessor para funções de plotamento. |
Methods
Visualização e inspeção de dados
| Método | Descrição |
|---|---|
toJSON(use_unicode) |
Converte um DataFrame num RDD de string ou DataFrame. |
printSchema(level) |
Imprime o esquema no formato de árvore. |
explain(extended, mode) |
Imprime os planos (lógicos e físicos) na consola para efeitos de depuração. |
show(n, truncate, vertical) |
Imprime as primeiras n linhas do DataFrame na consola. |
collect() |
Devolve todos os registos no DataFrame como uma lista de linhas. |
toLocalIterator(prefetchPartitions) |
Devolve um iterador que contém todas as linhas deste DataFrame. |
take(num) |
Devolve as primeiras linhas de números como uma lista de linhas. |
tail(num) |
Devolve as últimas linhas de números como uma lista de linhas. |
head(n) |
Devolve as primeiras n linhas. |
first() |
Devolve a primeira linha como uma fila. |
count() |
Devolve o número de linhas neste DataFrame. |
isEmpty() |
Verifica se o DataFrame está vazio e devolve um valor booleano. |
describe(*cols) |
Calcula estatísticas básicas para colunas numéricas e de cadeia. |
summary(*statistics) |
Calcula estatísticas especificadas para colunas numéricas e de strings. |
Vistas temporárias
| Método | Descrição |
|---|---|
createTempView(name) |
Cria uma vista temporária local com este DataFrame. |
createOrReplaceTempView(name) |
Cria ou substitui uma vista temporária local por este DataFrame. |
createGlobalTempView(name) |
Cria uma vista global temporária com este DataFrame. |
createOrReplaceGlobalTempView(name) |
Cria ou substitui uma vista global temporária usando o nome próprio. |
Seleção e projeção
| Método | Descrição |
|---|---|
select(*cols) |
Projeta um conjunto de expressões e retorna um novo DataFrame. |
selectExpr(*expr) |
Projeta um conjunto de expressões SQL e retorna um novo DataFrame. |
filter(condition) |
Filtra as linhas usando a condição dada. |
where(condition) |
Pseudónimo de filtro. |
drop(*cols) |
Devolve um novo DataFrame sem colunas especificadas. |
toDF(*cols) |
Devolve um novo DataFrame com novos nomes de colunas especificados. |
withColumn(colName, col) |
Devolve um novo DataFrame adicionando uma coluna ou substituindo a coluna existente com o mesmo nome. |
withColumns(*colsMap) |
Devolve um novo DataFrame adicionando várias colunas ou substituindo as colunas existentes com os mesmos nomes. |
withColumnRenamed(existing, new) |
Devolve um novo DataFrame ao renomear uma coluna existente. |
withColumnsRenamed(colsMap) |
Devolve um novo DataFrame ao renomear várias colunas. |
withMetadata(columnName, metadata) |
Devolve um novo DataFrame atualizando uma coluna existente com metadados. |
metadataColumn(colName) |
Seleciona uma coluna de metadados com base no nome lógico da coluna e devolve-a como uma Coluna. |
colRegex(colName) |
Seleciona a coluna com base no nome da coluna especificado como regex e devolve-a como Coluna. |
Ordenação e ordenação
| Método | Descrição |
|---|---|
sort(*cols, **kwargs) |
Devolve um novo DataFrame ordenado por(as) coluna(s) especificada(s). |
orderBy(*cols, **kwargs) |
Um pseudónimo de espécie. |
sortWithinPartitions(*cols, **kwargs) |
Devolve um novo DataFrame com cada partição ordenada pelo(s) coluna(s) especificada(s). |
Agregação e agrupamento
| Método | Descrição |
|---|---|
groupBy(*cols) |
Agrupa o DataFrame pelas colunas especificadas para que a agregação possa ser realizada sobre elas. |
rollup(*cols) |
Crie um rollup multidimensional para o DataFrame atual usando as colunas especificadas. |
cube(*cols) |
Crie um cubo multidimensional para o DataFrame atual usando as colunas especificadas. |
groupingSets(groupingSets, *cols) |
Crie agregação multidimensional para o DataFrame atual usando os conjuntos de agrupamento especificados. |
agg(*exprs) |
Agregar em todo o DataFrame sem grupos (abreviação de df.groupBy().agg()). |
observe(observation, *exprs) |
Defina métricas (nomeadas) a observar no DataFrame. |
Joins
| Método | Descrição |
|---|---|
join(other, on, how) |
Junta-se a outro DataFrame, usando a expressão de junção dada. |
crossJoin(other) |
Devolve o produto cartesiano com outro DataFrame. |
lateralJoin(other, on, how) |
Junções laterais com outro DataFrame, usando a expressão de junção dada. |
Definir operações
| Método | Descrição |
|---|---|
union(other) |
Devolva um novo DataFrame contendo a união de linhas neste e noutro DataFrame. |
unionByName(other, allowMissingColumns) |
Devolve um novo DataFrame contendo a união de linhas neste e noutro DataFrame. |
intersect(other) |
Devolva um novo DataFrame contendo apenas linhas tanto neste DataFrame como noutro DataFrame. |
intersectAll(other) |
Devolva um novo DataFrame contendo linhas tanto neste DataFrame como noutro DataFrame, preservando duplicados. |
subtract(other) |
Devolva um novo DataFrame contendo linhas neste DataFrame mas não noutro DataFrame. |
exceptAll(other) |
Devolva uma nova DataFrame contendo linhas nesse DataFrame mas não noutra DataFrame, preservando duplicados. |
Deduplication
| Método | Descrição |
|---|---|
distinct() |
Devolve um novo DataFrame contendo as linhas distintas deste DataFrame. |
dropDuplicates(subset) |
Devolva um novo DataFrame com as linhas duplicadas removidas, considerando opcionalmente apenas certas colunas. |
dropDuplicatesWithinWatermark(subset) |
Devolva um novo DataFrame com linhas duplicadas removidas, opcionalmente apenas considerando certas colunas, dentro da marca de água. |
Amostragem e divisão
| Método | Descrição |
|---|---|
sample(withReplacement, fraction, seed) |
Devolve um subconjunto amostrado deste DataFrame. |
sampleBy(col, fractions, seed) |
Devolve uma amostra estratificada sem substituição com base na fração dada em cada estrato. |
randomSplit(weights, seed) |
Divide aleatoriamente este DataFrame com os pesos fornecidos. |
Partitioning
| Método | Descrição |
|---|---|
coalesce(numPartitions) |
Devolve um novo DataFrame que tem exatamente as partições numPartitions. |
repartition(numPartitions, *cols) |
Devolve uma nova DataFrame particionada pelas expressões de partição dadas. |
repartitionByRange(numPartitions, *cols) |
Devolve uma nova DataFrame particionada pelas expressões de partição dadas. |
repartitionById(numPartitions, partitionIdCol) |
Devolve uma nova DataFrame particionada pela expressão de ID de partição dada. |
Remodelação
| Método | Descrição |
|---|---|
unpivot(ids, values, variableColumnName, valueColumnName) |
Despivote um DataFrame de formato largo para formato longo. |
melt(ids, values, variableColumnName, valueColumnName) |
Pseudónimo de despivô. |
transpose(indexColumn) |
Transpõe um DataFrame de modo que os valores na coluna de índice especificada se tornem as novas colunas. |
Tratamento de dados em falta
| Método | Descrição |
|---|---|
dropna(how, thresh, subset) |
Devolve um novo DataFrame omitindo linhas com valores nulos ou NaN. |
fillna(value, subset) |
Devolve um novo DataFrame cujos valores nulos são preenchidos com novos valores. |
replace(to_replace, value, subset) |
Devolve um novo DataFrame que substitui um valor por outro. |
Funções estatísticas
| Método | Descrição |
|---|---|
approxQuantile(col, probabilities, relativeError) |
Calcula os quantículos aproximados das colunas numéricas de um DataFrame. |
corr(col1, col2, method) |
Calcula a correlação de duas colunas de um DataFrame como um valor duplo. |
cov(col1, col2) |
Calcule a covariância amostral para as colunas dadas, especificadas pelos seus nomes. |
crosstab(col1, col2) |
Calcula uma tabela de frequências par a par das colunas dadas. |
freqItems(cols, support) |
Encontrar itens frequentes para colunas, possivelmente com falsos positivos. |
Operações de esquema
| Método | Descrição |
|---|---|
to(schema) |
Devolve um novo DataFrame onde cada linha é reconciliada para corresponder ao esquema especificado. |
alias(alias) |
Devolve um novo DataFrame com um alias definido. |
Iteration
| Método | Descrição |
|---|---|
foreach(f) |
Aplica a função f a todas as linhas deste DataFrame. |
foreachPartition(f) |
Aplica a função f a cada partição deste DataFrame. |
Cache e persistência
| Método | Descrição |
|---|---|
cache() |
Persiste o DataFrame com o nível de armazenamento predefinido (MEMORY_AND_DISK_DESER). |
persist(storageLevel) |
Define o nível de armazenamento para persistir o conteúdo do DataFrame entre operações. |
unpersist(blocking) |
Marca o DataFrame como não persistente e remove todos os blocos da memória e do disco. |
Pontos de verificação
| Método | Descrição |
|---|---|
checkpoint(eager) |
Devolve uma versão checkpoint deste DataFrame. |
localCheckpoint(eager, storageLevel) |
Devolve uma versão localmente checkpoint deste DataFrame. |
Operações de streaming
| Método | Descrição |
|---|---|
withWatermark(eventTime, delayThreshold) |
Define uma marca de água de tempo de evento para este DataFrame. |
Dicas de otimização
| Método | Descrição |
|---|---|
hint(name, *parameters) |
Especifica alguma dica sobre o DataFrame atual. |
Limites e deslocamentos
| Método | Descrição |
|---|---|
limit(num) |
Limita a contagem de resultados ao número especificado. |
offset(num) |
Devolve um novo DataFrame ao saltar as primeiras n linhas. |
Transformações avançadas
| Método | Descrição |
|---|---|
transform(func, *args, **kwargs) |
Devolve um novo DataFrame. Sintaxe concisa para encadear transformações personalizadas. |
Métodos de conversão
| Método | Descrição |
|---|---|
toPandas() |
Devolve o conteúdo deste DataFrame como Pandas pandas. DataFrame. |
toArrow() |
Devolve o conteúdo deste DataFrame como PyArrow pyarrow. Mesa. |
pandas_api(index_col) |
Converte o DataFrame existente num DataFrame pandas-on-Spark. |
mapInPandas(func, schema, barrier, profile) |
Mapeia um iterador de lotes no DataFrame atual usando uma função nativa em Python. |
mapInArrow(func, schema, barrier, profile) |
Mapeia um iterador de lotes no DataFrame atual usando uma função nativa em Python que é executada no pyarrow. RecordBatch. |
Gravando dados
| Método | Descrição |
|---|---|
writeTo(table) |
Cria um construtor de configuração de escrita para fontes v2. |
mergeInto(table, condition) |
Funde um conjunto de atualizações, inserções e eliminações baseadas numa tabela de origem numa tabela alvo. |
Comparação de DataFrame
| Método | Descrição |
|---|---|
sameSemantics(other) |
Retorna Verdadeiro quando os planos lógicos de consulta dentro de ambos os DataFrames são iguais. |
semanticHash() |
Devolve um código hash do plano lógico de consulta contra este DataFrame. |
Metadados e informação de ficheiros
| Método | Descrição |
|---|---|
inputFiles() |
Devolve um instantâneo de melhor esforço dos ficheiros que compõem este DataFrame. |
Funcionalidades avançadas de SQL
| Método | Descrição |
|---|---|
isLocal() |
Retornos Verdadeiro se os métodos collect e take puderem ser executados localmente. |
asTable() |
Converte o DataFrame num objeto TableArg, que pode ser usado como argumento de tabela numa TVF. |
scalar() |
Devolva um objeto Coluna para uma Subconsulta SCALAR contendo exatamente uma linha e uma coluna. |
exists() |
Devolva um objeto Coluna para uma Subconsulta EXISTS. |
Exemplos
Operações básicas de DataFrame
# 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()
Agregação e agrupamento
# 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()
Transformações complexas
# 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()