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


PySpark в Azure Databricks

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

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

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

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

кадры данных

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

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

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

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

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

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

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

Примечание.

Отложенная оценка означает, что DataFrame сохраняют логические запросы в виде set инструкций к источнику данных, а не результаты, сохранённые в памяти. Это резко отличается от активного выполнения, которая является моделью, используемой пандами 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, которая предоставляет единый set API, которые помогают пользователям создавать и настраивать практические конвейеры машинного обучения. Общие сведения о библиотеке Машинное обучение.
  • Графы и параллельные вычисления с помощью GraphX. GraphX представляет новый направленный мультиграф со свойствами, подключенными к каждой вершине и краю, и предоставляет операторы вычислений графа, алгоритмы и построители для упрощения задач аналитики графов. Обзор GraphX.

Руководства по Spark

Примеры использования PySpark в Databricks см. в следующих статьях:

В документации по Apache Spark также содержатся краткие руководства и руководства по обучению Spark, включая следующие:

Справочник по PySpark

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