Как происходит взаимодействие Spark и реляционных СУБД

курсы hadoop sql, big data обучение, bigdata курсы, hadoop spark, анализ с использование spark, bigdata курсы,аналитика больших данных курсы, курсы spark, основы spark, основы hadoop, обучение администраторов spark, spark mllib, spark rdd, spark streaming, apache hadoop, обучение spark sql, курсы spark streaming, курсы по apache spark, обучение apache spark, apache hadoop курсы

В прошлый раз мы говорили про механизм распределения данных в Apache Spark. Сегодня рассмотрим механизм взаимодействия Spark с реляционными системами управления базами данных (СУБД). Читайте далее про особенности соединения и взаимодействия распределенного Big Data фреймворка Spark с реляционными СУБД для распределенной обработки больших массивов данных.

Особенности взаимодействия Spark с реляционными СУБД

Реляционные СУБД (Relational Database Management System, RDBMS) — системы управления базами данных, в которых базовой структурой данных являются таблицы (отношения), которые связаны друг с другом посредством ссылок (когда данные одной таблицы ссылаются на данные другой таблицы). Самыми известными реляционными СУБД считаются PostgreSQL, MySQL, MSSQL Server, SQLite. Фреймворк Spark взаимодействует с реляционными СУБД c помощью специального коннектора JDBC (Java Database Conneсtivity), который реализован на языке Java. JDBC позволяет получать соединение с базой данных по специальному URL (Uniform Resource Locator). В качестве URL коннектор JDBC принимает адрес сервера и порт (обычно 4 цифры), по которому он принимает все запросы [1].

курсы hadoop sql, big data обучение, bigdata курсы, hadoop spark, анализ с использование spark, bigdata курсы,аналитика больших данных курсы, курсы spark, основы spark, основы hadoop, обучение администраторов spark, spark mllib, spark rdd, spark streaming, apache hadoop, обучение spark sql, курсы spark streaming, курсы по apache spark, обучение apache spark, apache hadoop курсы
Структура взаимодействия Spark с реляционными СУБД

Как начать взаимодействие с реляционными БД в Spark: несколько практических примеров

Для того, чтобы начать соединение, необходимо настроить базовую конфигурацию, в которую входят:

  • количество исполнителей (executors) — параллельные процессы, ответственные за выполнение Spark-задач (Spark tasks);
  • количество ядер для каждого исполнителя (executor cores) — максимальное количество задач для одного исполнителя;
  • память для каждого исполнителя (executor memory) — количество оперативной памяти, выделяемое системой на одного исполнителя;
  • память для драйвера (driver memory) — количество оперативной памяти, выделяемое для драйвера Spark. Драйвер Spark — это процесс, ответственный за распределение задач по исполнителям;
  • RDBMS-драйвер (RDMS driver) — JDBC-коннектор, обеспечивающий соединение Spark и СУБД [1].

Следующий код на языке Python отвечает за настройку базовой конфигурации и запуск сессии Spark для взаимодействия с PostgreSQL:

spark = SparkSession.builder.config('spark.driver.extraClassPath', 'C:/spark/postgresql-42.2.19.jar')\
.config("spark.executor.instances", "4")\
.config("spark.executor.memory", "2g")\
.config('spark.executor.cores','2')\
.config("spark.driver.memory", "16g").getOrCreate()

Для того, чтобы считывать данные из реляционной таблицы, необходимо также задать набор свойств (properties), в который входят: URL сервера БД, имя пользователя и пароль для авторизации на сервер, а также таблица, из которой будут считываться данные. За соединение с БД отвечает метод jdbc(), который в качестве параметров принимает набор свойств для входа на сервер:

url = 'jdbc:postgresql://localhost:5432/db_1'
properties = {'user': 'postgres', 'password': 'root'}
data = spark.read.option('partitionColumn','id_column')\
.option('numPartitions',500)\
.option("lowerBound", 0)\
.option("upperBound", 1000000)\
.jdbc(url= url, table= 'public.balances', properties= properties)

Как видно из вышерассмотренного фрагмента кода, для считывания данных  указываются разделы (параметр numPartititons), а также верхняя и нижняя граница (параметры lowerBound и upperBound), так как при параллельном считывании данные разбиваются на разделы, состоящие из определенных диапазонов. Это позволяет фреймворку Spark весьма быстро вычитывать большие массивы данных.

Таким образом, благодаря удобному и гибкому механизму взаимодействия с реляционными базами данных, Spark может эффективно работать с Big Data затрачивая при этом минимум ресурсов кластера. Это делает фреймворк Apache Spark весьма полезным средством для Data Scientist’а и разработчика распределенных Big Data приложений. В следующей статье мы поговорим про работу с JSON в Spark.

Больше подробностей про применение Apache Spark в проектах анализа больших данных, разработки Big Data приложений и прочих прикладных областях Data Science вы узнаете на практических курсах по Spark в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве:

Записаться на курс

Смотреть раcписание

Источники

  1. К.Харау, Э.Ковински, П.Венделл, М.Захария. Изучаем Spark: молниеносный анализ данных

Добавить комментарий

Поиск по сайту