Spark SQL

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

Спарк SQL — это модуль фреймворка Spark для структурированной обработки распределенных данных, позволяющий выполнять запросы на языке SQL (Structured Query Language). Спарк SQL использует датафреймы (dataframe) для работы с данными. Датафрейм — это структура данных, представляющая собой таблицу c данными, упорядоченными по именованным столбцам. Спарк SQL поддерживает загрузку данных из различных внешних источников (например, Hive, JSON, Avro,) для формирования датафреймов [1].

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

Что такое Spark SQL: основные свойства и особенности архитектуры

Спарк SQL — это компонент фреймворка Apache Spark для структурированной (упорядоченной) обработки данных. Внутренний механизм вычислений и преобразований в Spark SQL не зависит от языка программирования, поэтому разработчик имеет возможность самостоятельно определять интерфейс языка программирования (например, Java, Python, Scala или R). Спарк SQL имеет следующий свойства:

  • интеграция — Спарк SQL может запрашивать данные с помощью SQL-запросов из различных СУБД (например, MySQL, MS SQL Server, Oracle, Hive) в виде распределенной коллекции данных (Resilient Distributed Dataset, RDD);
  • универсальный доступ к данным — работа со всеми источниками данных происходит по одной и той же схеме, так как доступ к данным обеспечивается посредством механизма SQL-запросов;
  • источники данных — Спарк SQL поддерживает работу с различными файловыми источниками (например, JSON, CSV, Parquet). Существует также возможность смешивать данные из различных источников.

В архитектуру Спарк SQL входят следующие составляющие:

  1. Программный API (Application Program Interface) — Спарк SQL поддерживает работу в таких языках программирования, как Java, Python, Scala и R, предоставляя методы и функции для работы с данными. Также имеется возможность работы с Hive благодаря поддержке SQL-подобного диалекта HiveQL и предоставляя доступ к хранилищу Hive.
  2. SchemaRDD — таблица для временного (промежуточного) хранения данных, которая используется для работы с SQL-запросами при разработке приложений на языках Python, Java, Scala или R. SchemaRDD также позволяет задавать необходимые типы данных для создания датафреймов на основе этих данных [1].
курсы hadoop sql, big data обучение, bigdata курсы, hadoop spark, анализ с использование spark, bigdata курсы,аналитика больших данных курсы, курсы spark, основы spark, основы hadoop, обучение администраторов spark, spark mllib
Архитектура Spark SQL

Как появился Спарк SQL: краткая история

Работа над Спарк SQL началась в 2009 году. Это было связано с идеей проекта для работы с распределёнными данными — Apache Spark. Предполагалось, что модуль Спарк SQL позволит работать с большими данными посредством SQL-запросов, что сделает ферймворк Spark универсальным средством для обработки Big Data. Автором Спарк SQL является румынско-канадский ученый в области информатики Матей Захария. В 2010 году Спарк SQL был опубликован как модуль Spark для работы с SQL-запросами под лицензией BSD (Berkeley Software Distribution), а в 2013 году передан фонду Apache и переведен на лицензию Apache 2.0. Первая версия Spark SQL 1.0.0 выпущена 15 октября 2012 года. В 2014 году проект Spark принят в число проектов верхнего уровня Apache. Последняя версия Спарк SQL 3.1.0 была выпущена 5 января 2021 года [2].

Начало работы со Spark SQL

Для того, чтобы начать работу со Спарк SQL, необходимо настроить базовую конфигурацию. Для этого нужно импортировать класс SparkSession, который служит точкой входа для работы со Spark. Следующий код на языке Python отвечает за настройку базовой конфигурации Спарк SQL:

from pyspark.sql import SparkSession
spark = SparkSession \
.builder \
.appName("Python Spark SQL basic example") \
.config("spark.some.config.option", "some-value") \
.getOrCreate()

Для работы с данными через SQL-запросы необходимо создать представление (view) с помощью метода createOrReplaceTempView:

my_table = csv_data.createOrReplaceTempView('my_table')

После создания представления можно работать с ним как SQL-таблицей. Для этого в Spark есть специальный метод sql, который принимает в качестве параметра строку, содержащую SQL-запрос:

sql_table = spark.sql('SELECT * FROM my_table')

При работе с данными можно задавать условие выборки с помощью ключевого слова WHERE. В качестве примера можно рассмотреть выборку твитов, id которых лежит в диапазоне от 1 до 10:

sql_table = spark.sql('SELECT  Tweet FROM my_table WHERE id IN (1,10)')
sql_table.show()

 

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

Из вышерассмотренного примера, что некоторые данные являются отсутствующими, т.е. имеют null-значения. Чтобы удалить эти пропуски, необходимо использовать метод Spark SQL na.drop(), который их удалит [3]:

sql_table = spark.sql('SELECT  Tweet FROM tweets_table WHERE id IN (1,10)').na.drop()
sql_table.show()

 

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

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

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

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

Источники

  1. https://ru.bmstu.wiki/Spark_SQL
  2. https://ru.wikipedia.org/wiki/Apache_Spark
  3. К.Харау, Э.Ковински, П.Венделл, М.Захария. Изучаем Spark: молниеносный анализ данных

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