Поделиться через


PySpark в Azure Databricks

Azure Databricks построена на основе Apache Spark, унифицированного модуля аналитики для больших данных и машинного обучения. PySpark помогает работать с Apache Spark с помощью языка программирования Python, который является гибким языком, который легко изучать, реализовывать и поддерживать. Он также предоставляет множество вариантов визуализации данных в Databricks. PySpark объединяет возможности Python и Apache Spark.

В этой статье представлен обзор основных принципов PySpark на Databricks.

Общие сведения о концепциях Spark

Важно понимать основные понятия Apache Spark перед погружением в использование PySpark.

кадры данных

Кадры данных — это основные объекты в Apache Spark. Кадр данных — это набор данных, организованный по именованным столбцам. Вы можете представить кадр данных, например электронную таблицу или таблицу SQL, двухмерную структуру данных серии записей (аналогично строкам таблицы) и столбцам различных типов. Кадры данных предоставляют широкий набор функций (например, выбор столбцов, фильтров, соединений и агрегатов), которые позволяют эффективно выполнять общие задачи обработки и анализа данных.

Ниже перечислены некоторые важные элементы DataFrame:

  • Схема: схема определяет имена столбцов и типы кадра данных. Форматы данных имеют разные семантики для определения схемы и применения. Некоторые источники данных предоставляют сведения о схеме, а другие используют определение схемы вручную или разрешают вывод схемы. Пользователи могут определять схемы вручную или схемы можно считывать из источника данных.
  • Строки: Spark представляет записи в кадре данных в виде Row объектов. Хотя базовые форматы данных, такие как Delta Lake, используют столбцы для хранения данных, для оптимизации кэшей Spark и перетасовки данных с помощью строк.
  • Столбцы: столбцы в Spark похожи на столбцы в электронной таблице и могут представлять простой тип, например строку или целое число, но и сложные типы, такие как массив, карта или null. Вы можете создавать запросы, которые выбирают, управляют или удаляют столбцы из источника данных. Возможные источники данных включают таблицы, представления, файлы или другие кадры данных. Столбцы никогда не удаляются из набора данных или кадра данных, они просто опущены из результатов путем .drop преобразований или пропусков в select инструкциях.

Обработка данных

Apache Spark использует отложенную оценку для обработки преобразований и действий, определенных с помощью кадров данных. Эти понятия являются основными для понимания обработки данных с помощью Spark.

Преобразования. В Spark вы выражаете логику обработки в виде преобразований, которые являются инструкциями по загрузке и обработке данных с помощью кадров данных. Распространенные преобразования включают чтение данных, соединения, агрегаты и приведение типов. Сведения о преобразованиях в Azure Databricks см. в разделе "Преобразование данных".

Отложенная оценка: Spark оптимизирует обработку данных, определяя наиболее эффективный физический план для оценки логики, указанной преобразованиями. Однако Spark не действует на преобразования, пока не будут вызваны действия. Вместо того чтобы оценивать каждое преобразование в указанном порядке, Spark ожидает, пока действие не активирует вычисления для всех преобразований. Это называется отложенной оценкой или отложенной загрузкой, которая позволяет цепочке нескольких операций, так как Spark обрабатывает их выполнение в отложенном режиме, а не сразу же выполняет их при определении.

Примечание.

Отложенная оценка означает, что кадры данных хранят логические запросы в виде набора инструкций для источника данных, а не результата в памяти. Это резко отличается от активного выполнения, которая является моделью, используемой пандами DataFrames.

Действия. Действия. Действия поручает Spark вычислить результат из ряда преобразований на одном или нескольких кадрах данных. Операции действия возвращают значение и могут быть следующими:

  • Действия для вывода данных в консоли или редакторе, например display или show
  • Действия для сбора данных (возвращаемых Row объектов), таких как take(n), или firsthead
  • Действия для записи в источники данных, такие как saveAsTable
  • Агрегаты, которые активируют вычисление, например count

Внимание

В рабочих конвейерах данных запись данных обычно является единственным действием, которое должно присутствовать. Все остальные действия прерывают оптимизацию запросов и могут привести к узким местам.

Что означает, что кадры данных неизменяемы?

Кадры данных — это коллекция преобразований и действий, определенных для одного или нескольких источников данных, но в конечном счете Apache Spark разрешает запросы обратно в исходные источники данных, поэтому сами данные не изменяются, и кадры данных не изменяются. Другими словами, кадры данных неизменяемы. Из-за этого после выполнения преобразований возвращается новый кадр данных, который должен быть сохранен в переменной, чтобы получить доступ к ней в последующих операциях. Если вы хотите оценить промежуточный шаг преобразования, вызовите действие.

API и библиотеки

Как и во всех API для Spark, PySpark оснащен множеством API и библиотек, которые обеспечивают и поддерживают мощные функциональные возможности, в том числе:

  • Обработка структурированных данных с реляционными запросами с помощью Spark SQL и DataFrames. Spark SQL позволяет смешивать запросы SQL с программами Spark. Благодаря кадрам данных Spark можно эффективно считывать, записывать, преобразовывать и анализировать данные с помощью Python и SQL, что означает, что вы всегда используете полную мощность Spark. См. статью " Приступая к работе с PySpark".
  • Масштабируемая обработка потоков с помощью структурированной потоковой передачи. Вы можете выразить вычисление потоковой передачи так же, как вы будете экспрессировать пакетное вычисление статических данных, и подсистема SQL Spark выполняет его постепенно и непрерывно, как потоковые данные продолжают поступать. Обзор структурированной потоковой передачи.
  • Структуры данных 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

Azure Databricks поддерживает собственную версию API PySpark и соответствующую ссылку, которую можно найти в следующих разделах: