Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Azure Databricks построена на основе Apache Spark, унифицированного модуля аналитики для больших данных и машинного обучения. PySpark помогает работать с Apache Spark с помощью языка программирования Python, который является гибким языком, который легко изучать, реализовывать и поддерживать. Он также предоставляет множество вариантов визуализации данных в Databricks. PySpark объединяет возможности Python и Apache Spark.
В этой статье представлен обзор основных принципов PySpark на Databricks.
Общие сведения о концепциях Spark
Важно понимать основные понятия Apache Spark перед погружением в использование PySpark.
таблицы данных
Основные объекты в Apache Spark — это DataFrames. DataFrame (кадр данных) — это набор данных, организованный по именованным столбцам. Вы можете представить себе DataFrame как электронную таблицу или таблицу SQL — это двухмерная структура данных с метками, содержащая записи (подобно строкам в таблице) и столбцы различных типов данных. DataFrame предоставляет широкий набор функций (например, выбор столбцов, фильтрация, объединение и агрегация), которые позволяют эффективно выполнять общие задачи обработки и анализа данных.
Ниже перечислены некоторые важные элементы DataFrame:
- Схема: схема определяет имена столбцов и типы в DataFrame. Форматы данных имеют разные семантики для определения схемы и применения. Некоторые источники данных предоставляют сведения о схеме, а другие используют определение схемы вручную или разрешают вывод схемы. Пользователи могут определять схемы вручную или схемы можно считывать из источника данных.
-
Строки: Spark представляет записи в объектном виде в кадре данных
Row. Хотя базовые форматы данных, такие как Delta Lake, используют столбцы для хранения данных, Spark кэширует и перетасовывает данные строками для оптимизации. -
столбцы: столбцы в Spark похожи на столбцы в электронной таблице и могут представлять простой тип, например строку или целое число, но и сложные типы, такие как массив, карта или null. Вы можете создавать запросы, которые выбирают, управляют или удаляют столбцы из источника данных. Возможные источники данных включают таблицы, представления, файлы или другие объекты DataFrame. Столбцы никогда не удаляются из набора данных или кадра данных, они просто исключены из результатов путем преобразования
.dropили исключения в операторахselect.
Обработка данных
Apache Spark использует отложенную оценку для обработки преобразований и действий, определенных с помощью кадров данных. Эти понятия являются основными для понимания обработки данных с помощью Spark.
Преобразования: в Spark вы выражаете логику обработки в виде преобразований, которые являются инструкциями по загрузке и обработке данных с помощью кадров данных. Распространённые преобразования включают чтение данных (например, spark.read и spark.table), операции соединения, агрегирование и приведение типов.
Отложенная оценка: Spark оптимизирует обработку данных, определяя наиболее эффективный физический план для оценки логики, заданной преобразованиями. Однако Spark не действует на преобразования, пока не будут вызваны действия. Вместо того чтобы оценивать каждое преобразование в указанном порядке, Spark ожидает, пока действие не активирует вычисления для всех преобразований. Это называется отложенной оценкой или отложенной загрузкой, которая позволяет последовательное выполнение нескольких операций, так как Spark обрабатывает их выполнение в отложенном режиме, а не сразу же исполняет их при их определении.
Примечание.
Отложенная оценка в программировании означает, что DataFrame хранит логические запросы в форме набора инструкций применительно к источнику данных, а не как результирующее значение в памяти. Это резко отличается от активного выполнения, который является моделью, используемой pandas DataFrames.
Действия: Действия инструктируют Spark вычислить результат из ряда преобразований на одном или нескольких фреймах данных. Операции действия возвращают значение и могут быть следующими:
- Действия для вывода данных в консоли или редакторе, например
displayилиshow - Действия для сбора данных (возвращаемых
Rowобъектов), таких какtake(n), илиfirsthead - Действия для записи в источники данных, такие как
saveAsTable - Агрегаты, которые активируют вычисление, например
count
Внимание
В рабочих конвейерах данных запись данных обычно является единственным действием, которое должно присутствовать. Все остальные действия прерывают оптимизацию запросов и могут привести к узким местам.
Что означает, что DataFrame (таблица данных) неизменяемы?
Кадры данных — это коллекция преобразований и действий, определенных для одного или нескольких источников данных, но в конечном счете Apache Spark разрешает запросы обратно в исходные источники данных, поэтому сами данные не изменяются, и кадры данных не изменяются. Другими словами, DataFrames неизменяемы. Из-за этого после выполнения преобразований возвращается новый кадр данных, который должен быть сохранен в переменной, чтобы получить доступ к ней в последующих операциях. Если вы хотите оценить промежуточный шаг преобразования, вызовите действие.
API и библиотеки
Как и во всех API для Spark, PySpark оснащен множеством API и библиотек, которые обеспечивают и поддерживают мощные функциональные возможности, в том числе:
- Обработка структурированных данных с реляционными запросами с помощью Spark SQL и DataFrames. Spark SQL позволяет смешивать запросы SQL с программами Spark. Благодаря Spark DataFrames можно эффективно читать, записывать, преобразовывать и анализировать данные с помощью Python и SQL, что позволяет всегда использовать полную мощность Spark. См. статью " Приступая к работе с PySpark".
- Масштабируемая обработка потоков с помощью структурированной потоковой передачи. Вы можете представить ваше потоковое вычисление так же, как пакетное вычисление для статических данных, и движок Spark SQL выполняет его постепенно и непрерывно по мере поступления потоковых данных. Обзор структурированной потоковой передачи.
- Структуры данных Pandas и средства анализа данных, работающие в Apache Spark с API Pandas в Spark. API Pandas в Spark позволяет масштабировать нагрузку pandas до любого размера, распределяя её по нескольким узлам. Единая кодовая база, совместимая как с pandas (для тестов и небольших наборов данных), так и с Spark (для производственных, распределённых наборов данных). Просмотрите обзор API Pandas для Spark.
- Алгоритмы машинного обучения с Машинное обучение (MLLib). MLlib — это масштабируемая библиотека машинного обучения, основанная на Spark, которая предоставляет универсальный набор API, которые помогают пользователям создавать и настраивать практические конвейеры машинного обучения. См. Обзор библиотеки машинного обучения.
- Графы и параллельные вычисления с помощью GraphX. GraphX представляет новый направленный мультиграф со свойствами, подключенными к каждой вершине и краю, и предоставляет операторы вычислений графа, алгоритмы и построители для упрощения задач аналитики графов. Обзор GraphX.
Руководства по Spark
Примеры использования PySpark в Databricks см. в следующих статьях:
В документации Apache Spark также содержатся краткие справочники и руководства по изучению Spark, включая следующие:
- Руководство пользователя PySpark
- Краткое руководство по DataFrames в PySpark
- Начало работы с Spark SQL
- Руководство по программированию структурированной потоковой передачи
- Краткое руководство по API Pandas в Spark
- Руководство по программированию библиотеки машинного обучения
Справочник по PySpark
Справочник по PySpark можно найти в следующих разделах: