Распределенная коллекция данных, сгруппированных в именованные столбцы.
Кадр данных эквивалентен реляционной таблице в Spark SQL и может быть создан с помощью различных функций в SparkSession.
Это важно
Кадр данных не должен быть создан напрямую с помощью конструктора.
Поддержка Spark Connect
Свойства
| Недвижимость |
Описание |
sparkSession |
Возвращает SparkSession , создавший этот кадр данных. |
rdd |
Возвращает содержимое в виде RDD строки (только в классическом режиме). |
na |
Возвращает значения DataFrameNaFunctions для обработки отсутствующих значений. |
stat |
Возвращает данные DataFrameStatFunctions для статистических функций. |
write |
Интерфейс для сохранения содержимого непотокового кадра данных в внешнее хранилище. |
writeStream |
Интерфейс для сохранения содержимого кадра данных потоковой передачи в внешнее хранилище. |
schema |
Возвращает схему этого кадра данных в виде StructType. |
dtypes |
Возвращает все имена столбцов и их типы данных в виде списка. |
columns |
Извлекает имена всех столбцов в кадре данных в виде списка. |
storageLevel |
Получите текущий уровень хранения кадра данных. |
isStreaming |
Возвращает значение True, если этот кадр данных содержит один или несколько источников, которые постоянно возвращают данные по мере поступления. |
executionInfo |
Возвращает объект ExecutionInfo после выполнения запроса. |
plot |
Возвращает PySparkPlotAccessor для функций построения. |
Методы
Просмотр и проверка данных
Временные представления
Выбор и проекция
Сортировка и упорядочение
Агрегирование и группирование
| Метод |
Описание |
groupBy(*cols) |
Группировать кадр данных по указанным столбцам, чтобы агрегирование можно было выполнять на них. |
rollup(*cols) |
Создайте многомерный накопительный пакет для текущего кадра данных с помощью указанных столбцов. |
cube(*cols) |
Создайте многомерный куб для текущего кадра данных с помощью указанных столбцов. |
groupingSets(groupingSets, *cols) |
Создайте многомерную агрегирование для текущего кадра данных с помощью указанных наборов группирования. |
agg(*exprs) |
Агрегирование для всего кадра данных без групп (сокращенно для df.groupBy().agg()). |
observe(observation, *exprs) |
Определите (именованные) метрики для наблюдения на кадре данных. |
Присоединения
Установка операций
| Метод |
Описание |
union(other) |
Возвращает новый кадр данных, содержащий объединение строк в этом и другом кадре данных. |
unionByName(other, allowMissingColumns) |
Возвращает новый кадр данных, содержащий объединение строк в этом и другом кадре данных. |
intersect(other) |
Возвращает новый кадр данных, содержащий строки только в этом кадре данных и другом кадре данных. |
intersectAll(other) |
Возвращает новый кадр данных, содержащий строки в этом кадре данных и другом кадре данных при сохранении повторяющихся данных. |
subtract(other) |
Возвращает новый кадр данных, содержащий строки в этом кадре данных, но не в другом кадре данных. |
exceptAll(other) |
Возвращает новый кадр данных, содержащий строки в этом кадре данных, но не в другом кадре данных при сохранении дубликатов. |
Дедупликация
| Метод |
Описание |
distinct() |
Возвращает новый кадр данных, содержащий отдельные строки в этом кадре данных. |
dropDuplicates(subset) |
Возвращает новый кадр данных с удаленными повторяющимися строками, при необходимости только учитывая определенные столбцы. |
dropDuplicatesWithinWatermark(subset) |
Возвращает новый кадр данных с удаленными повторяющимися строками, при необходимости только учитывая определенные столбцы в подложку. |
Выборка и разделение
Partitioning
Переформирование
Обработка отсутствующих данных
Статистические функции
| Метод |
Описание |
approxQuantile(col, probabilities, relativeError) |
Вычисляет приблизительные квантили числовых столбцов кадра данных. |
corr(col1, col2, method) |
Вычисляет корреляцию двух столбцов кадра данных как двойное значение. |
cov(col1, col2) |
Вычислите пример ковариации для заданных столбцов, указанных их именами. |
crosstab(col1, col2) |
Вычисляет таблицу с парой частоты заданных столбцов. |
freqItems(cols, support) |
Поиск частых элементов для столбцов, возможно, с ложными срабатываниями. |
Операции схемы
| Метод |
Описание |
to(schema) |
Возвращает новый кадр данных, в котором каждая строка сопоставляется с указанной схемой. |
alias(alias) |
Возвращает новый кадр данных с набором псевдонимов. |
Итерация
| Метод |
Описание |
foreach(f) |
Применяет функцию f ко всей строке этого кадра данных. |
foreachPartition(f) |
Применяет функцию f к каждой секции этого кадра данных. |
Кэширование и сохраняемость
| Метод |
Описание |
cache() |
Сохраняет кадр данных с уровнем хранения по умолчанию (MEMORY_AND_DISK_DESER). |
persist(storageLevel) |
Задает уровень хранилища для сохранения содержимого кадра данных в операциях. |
unpersist(blocking) |
Помечает кадр данных как непрестойчивый и удалите все блоки для него из памяти и диска. |
Создание контрольных точек
Операции потоковой передачи
Указания по оптимизации
Ограничения и смещения
| Метод |
Описание |
limit(num) |
Ограничивает число результатов указанным числом. |
offset(num) |
Возвращает новый кадр данных, пропуская первые n строки. |
Методы преобразования
Запись данных
| Метод |
Описание |
writeTo(table) |
Создайте построитель конфигураций записи для источников версии 2. |
mergeInto(table, condition) |
Объединяет набор обновлений, вставок и удалений на основе исходной таблицы в целевую таблицу. |
Сравнение кадров данных
| Метод |
Описание |
sameSemantics(other) |
Возвращает значение True, если планы логических запросов в обоих кадрах данных равны. |
semanticHash() |
Возвращает хэш-код плана логического запроса для этого кадра данных. |
| Метод |
Описание |
inputFiles() |
Возвращает оптимальный моментальный снимок файлов, составляющих этот кадр данных. |
Расширенные возможности SQL
| Метод |
Описание |
isLocal() |
Возвращает значение True, если методы сбора и принятия могут выполняться локально. |
asTable() |
Преобразует кадр данных в объект TableArg, который можно использовать в качестве аргумента таблицы в TVF. |
scalar() |
Возвращает объект Column для вложенных запросов SCALAR, содержащих ровно одну строку и один столбец. |
exists() |
Возвращает объект Column для подзапроса EXISTS. |
Примеры
Базовые операции с кадрами данных
# 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()
Агрегирование и группирование
# 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()
Присоединения
# 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()