Примечание редактора. Итай Яффе и Даниэль Хавив выступают на ODSC East 2022. Обязательно ознакомьтесь с их выступлением «Бамбук Pandas: преодоление барьера Pandas с одной машиной с помощью Apache Spark» здесь!

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

Несмотря на то, что их объединение имеет большое значение с точки зрения производительности, масштабируемости и производительности, его часто упускают из виду. В этом сообщении блога мы кратко рассмотрим, как объединить эти инструменты, чтобы насладиться лучшим из обоих миров!

В этом примере мы использовали CSV-файл размером 1,9 ГБ с данными о вызовах пожарных, полученными с https://data.sfgov.org/Public-Safety/Fire-Department-Calls-for-Service/. нуек-вух3 по состоянию на 11.11.2019».

Во-первых, давайте попробуем подсчитать общее количество звонков на почтовый индекс, используя Pandas:

import pandas as pd
import time
# Record the start time
start = time.time()
# Read the CSV file with the header
pandasDF = pd.read_csv('/dbfs/databricks-datasets/timeseries/Fires/Fire_Department_Calls_for_Service.csv', header=0)
# Compute the total number of calls per zip code 
pandasDF.groupby('Zipcode of Incident')['Call Number'].count()
# Record the end time
end = time.time()
print('Command took ', end - start, ' seconds')

Как видно из снимка экрана выше, это заняло примерно 40 секунд на машине i3.xlarge (с 30,5 ГБ ОЗУ и 4 ядрами). Имейте в виду, что это небольшой набор данных для примера.

Можем ли мы улучшить его? С Pandas API on Spark — мы можем!

Apache Spark — это механизм распределенной обработки, который позволит нам легко распараллелить вычисления.

Pandas API on Spark – это сменная замена, совместимая с Pandas API, которая предоставляет пользователям Pandas преимущества Spark с минимальными изменениями кода.

Это также полезно для пользователей PySpark, поддерживая задачи, которые легче выполнить с помощью Pandas, например построение фрейма данных Apache Spark.

Давайте попробуем тот же пример, но на этот раз — с использованием Pandas API в Spark:

import pyspark.pandas as ps
import time
# Record the start time
start = time.time()
# Read the CSV file with the header
pysparkDF = ps.read_csv('dbfs:/databricks-datasets/timeseries/Fires/Fire_Department_Calls_for_Service.csv', header=0)
# Compute the total number of calls per zip code 
pysparkDF.groupby('Zipcode of Incident')['Call Number'].count()
# Record the end time
end = time.time()
print('Command took ', end - start, ' seconds')

Обратите внимание, что нам нужно было только изменить import pandas как pd, чтобы импортировать pyspark.pandas как ps.

На этот раз это заняло всего 7 секунд, что можно объяснить тем фактом, что он выполняется распределенным образом (в отличие от Pandas). В этом примере мы использовали ту же машину i3.xlarge (с 30,5 ГБ ОЗУ и 4 ядрами) в качестве драйвера кластера и 4 машины i3.xlarge в качестве рабочих кластера.

По сути, Spark разделил файл размером 1,9 ГБ на более мелкие фрагменты (которые называются «разделами»), и все разделы обрабатывались одновременно на всех машинах в кластере.

Это означает, что Spark мог одновременно запускать 16 задач, как вы можете видеть ниже:

Важно отметить, что чем больше набор данныхбольшего повышения производительности можно ожидать (например, подумайте, что произошло бы, если бы мы выбрали набор данных размером 1900 ГБ, а не 1,9 ГБ). набор данных…).

Использование Pandas API в Spark — это лишь один из вариантов, доступных разработчикам Python, чтобы легко использовать Spark и наслаждаться преимуществами производительности, масштабируемости и стабильности, которые он предоставляет.

Чтобы узнать больше об API Pandas в Apache Spark и других доступных вам вариантах интеграции кода Python со Spark, присоединяйтесь к нашему выступлению на предстоящей Open Data Science Conference East 2022 20 апреля A Bamboo of Pandas. : Преодолевая барьер одного компьютера Pandas с помощью Apache Spark», который будет включать в себя демонстрации и примеры кода.

Исходное сообщение здесь.

Читайте другие статьи по науке о данных на OpenDataScience.com, включая учебные пособия и руководства от начального до продвинутого уровня! Подпишитесь на нашу еженедельную рассылку здесь и получайте последние новости каждый четверг. Вы также можете пройти обучение по науке о данных по запросу, где бы вы ни находились, с нашей платформой Ai+ Training. Подпишитесь также на нашу быстрорастущую публикацию на Medium, ODSC Journal, и узнайте, как стать писателем.