4 этапа SQL-оптимизации в Big Data: насколько эффективен Catalyst в Apache Spark

Big Data, Большие данные, архитектура, Spark, SQL

Завершая тему SQL-оптимизации в Big Data на примере Apache Spark, сегодня мы подробнее расскажем, какие действия выполняются на каждом этапе преобразования дерева запросов в исполняемый код. А рассмотрим, за счет чего так эффективна автоматическая кодогенерация в Catalyst. Читайте в нашей статье про планы выполнения запросов, квазиквоты Scala и операции с абстрактными синтаксическими деревьями. Как Catalyst преобразует SQL-запросы в исполняемый код Весь процесс оптимизации SQL-запросов в рамках Catalyst состоит из 4-х этапов [1]: анализ, когда вычисляются отношения из абстрактного синтаксического дерева, возвращаемого синтаксическим анализатором SQL, либо из объекта DataFrame, созданного с использованием API. логическая оптимизация, когда типовые правила применяются к логическому плану: свертка (constant folding), предикатное сжатие (predicate pushdown), сокращение проекций (projection pruning) и другие правила. Catalyst позволяет добавлять свои правила Далее …

Как работает оптимизация SQL-запросов в Apache Spark: деревья запросов в Catalyst optimizer

дерево запросов, Big Data, Catalyst, Большие данные, архитектура, Spark, SQL

Продолжая разговор про SQL-оптимизацию в Apache Spark, сегодня мы рассмотрим, что такое дерево запросов и как оптимизатор Catalyst преобразует его в исполняемый байт-код при аналитической обработке Big Data в рамках Спарк. Деревья структурированных запросов и правила управления ими в Apache Spark Отметим, что деревья запросов отличаются от алгебраических деревьев операций тем, что дерево запроса позволяет сохранить всю декларативность языка SQL. Дерево запроса превращается в дерево операций после физической оптимизации [1]. Дерево является основным типом данных в Catalyst. Дерево содержит объект узла, который может иметь один или нескольких дочерних элементов. Новые узлы определяются как подклассы класса TreeNode. Эти объекты неизменны по своей природе. Объектами можно управлять с помощью функционального преобразования. В качестве примера рассмотрим дерево из 3 классов узлов [2]: Literal(value: Int) – Далее …

Что такое оптимизация SQL-запросов в Apache Spark: разбираемся с Catalyst optimizer

Big Data, Большие данные, архитектура, Spark, SQL, SQL-оптимизация, Apache Spark, Catalyst

Мы уже немного рассказывали об SQL-оптимизации в Apache Spark. Продолжая эту тему, сегодня рассмотрим подробнее, что такое Catalyst – встроенный оптимизатор структурированных запросов в Spark SQL, а также поговорим про базовые понятия SQL-оптимизации. Читайте в нашей статье о логической и физической оптимизации, плане выполнения запросов и зачем эти концепции нужны при аналитической обработке Big Data в рамках фреймворка Спарк. Как работает SQL-оптимизация и зачем она нужна: немного теории Благодаря наличию модуля SQL, Apache Spark позволяет группировать, фильтровать и преобразовывать большие данные с помощью структурированных запросов. Однако, в отличие от реляционных СУБД, Apache Spark работает с данными различных форматов и структур, которые не являются типовой таблицей: RDD (распределенная коллекция данных), DataSet и DataFrame. Тем не менее, некоторые аспекты классической теории баз Далее …

Что лучше: RDD, DataFrame или DataSet и почему – выбор структуры данных Apache Spark

RDD, DataFrame, DataSet, Big Data, Большие данные, архитектура, Spark, SQL

Завершая сравнение структур данных Apache Spark, сегодня мы рассмотрим, в каких случаях разработчику Big Data стоит выбирать датафрейм (DataFrame), датасет (DataSet) или RDD и почему. Также мы приведем практический примеры и сценарии использования (use cases) этих программных абстракций, важных при разработке систем и сервисов по интерактивной аналитике больших данных с помощью Spark SQL. Кэширование разных структур данных Apache Spark Прежде чем перейти к обоснованию выбора той или иной структуры данных Apache Spark, рассмотрим, как выполняется их кэширование, т.к. это влияет на процесс их использования. Мы уже отмечали, что из-за особенностей сериализации распределенные коллекции данных (RDD) обрабатываются медленнее табличных наборов данных (DataFrame и DataSet). Поэтому для ускорения работы с RDD имеет смысл кэшировать данные в следующих случаях [1]: итеративные циклы, которые Далее …

RDD, DataFrame и DataSet с точки зрения программиста Apache Spark: в чем разница

Big Data, RDD, DataFrame, DataSet, Большие данные, архитектура, Spark, SQL,

Продолжая говорить о сходствах и отличиях структур данных Apache Spark, сегодня мы рассмотрим, чем похожи датафрейм (DataFrame), датасет (DataSet) и RDD с позиции разработчика Big Data. Читайте в нашей статье, как обеспечивается оптимизация кода, безопасность типов при компиляции и прочие аспекты, важные при разработке распределенных программ и интерактивной аналитике больших данных с помощью Spark SQL. Сравнение RDD, DataFrame и DataSet с позиции разработчика Big Data Прежде всего перечислим, какие именно аспекты разработки программного обеспечения мы будем учитывать при сравнении структур данных Apache Spark: поддерживаемые языки программирования; безопасность типов при компиляции; оптимизация; сборка мусора (Garbage Collection); неизменность (Immutability) и совместимость (Interoperability). Начнем с языков программирования: API-интерфейсы RDD и DataFrame доступны в Java, Scala, Python и R. А Dataset API поддерживается только Далее …

RDD vs DataFrame vs DataSet: чем отличаются эти структуры данных Apache Spark

Big Data, Большие данные, архитектура, Spark, SQL, DataFrame, DataSet, RDD

В прошлый раз мы рассмотрели понятия датафрейм (DataFrame), датасет (DataSet) и RDD в контексте интерактивной аналитики больших данных (Big Data) с помощью Spark SQL. Сегодня поговорим подробнее, чем отличаются эти структуры данных, сравнив их по разным характеристикам: от времени возникновения до специфики вычислений. Критерии для сравнения структур данных Apache Spark Прежде всего, определим, по каким параметрам мы будем сравнивать DataFrame, DataSet и RDD. Для этого выделим несколько точек зрения: данные – представления, форматы, схемы; вычисления – сериализация, отложенные (ленивые) вычисления, операции агрегирования, использование памяти; разработка – поддерживаемые языки программирования, безопасность типов при компиляции, оптимизация, сборка мусора (Garbage Collection), неизменность (Immutability) и совместимость (Interoperability), область применения. Перед тем, как приступить к сравнению RDD, DataFrame и DataSet по вышеперечисленным критериям, отметим разный Далее …

3 набора данных в Spark SQL для аналитики Big Data: что такое dataframe, dataset и RDD

Big Data, Большие данные, архитектура, Spark, SQL

Этой статьей мы открываем цикл публикаций по аналитике больших данных (Big Data) с помощью SQL-инструментов: Apache Impala, Spark SQL, KSQL, Drill, Phoenix и других средств работы с реляционными базами данных и нереляционными хранилищами информации. Начнем со Spark SQL: сегодня мы рассмотрим, какие структуры данных можно анализировать с его помощью и чем они отличаются друг от друга. Что такое Spark SQL и как он работает Прежде всего, напомним, что Spark SQL – это модуль Apache Spark для работы со структурированными данными. На практике такая задача возникает при работе с реляционными базами данных, где хранится нужная информация, например, если требуется избирательное изучение пользовательского поведения на основании серверных логов. Однако, в случае множества СУБД и файловых хранилищ необходимо работать с каждой схемой данных в Далее …

Блокчейн, озеро данных и еще 3 кейса Apache NiFi в комплексных Big Data системах

Большие данные, предиктивная аналитика, Internet of Things, IIoT, IoT, интернет вещей, архитектура, Kafka, Spark

В прошлый раз мы рассмотрели пример прототипа IIoT-системы на основе одноплатного мини-компьютера Raspberry Pi, брокере обмена сообщениями Mosquitto и платформе маршрутизации данных Apache NiFi. Сегодня мы покажем, что этот инструмент преобразования и доставки данных из множества сторонних систем может применяться не только в IoT-решениях. Читайте в нашей статье про 5 примеров практического использования Apache NiFi в реальных Big Data проектах, представленных на международном саммите DataWorks в 2018 и 2019 годах. Построение Data Lake в автомобилестроительной компании Renault В корпорации Renault Apache NiFi используется в 2-х направлениях [1]: Industrial Internet of Things, выполняя роль ETL-интегратора технологических данных с производственных участков, где производятся и собираются автомобильные запчасти; как распределенная платформа передачи информации в корпоративное озеро данных (Data Lake) и средство выгрузки из Далее …

12 уровней IIoT-архитектуры: от периферийных датчиков до аналитики Big Data

Big Data, Большие данные, Internet of Things, IoT, IIoT, интернет вещей, архитектура, Kafka, обработка данных, Spark, машинное обучение, Machine Learning

Мы уже рассматривали типовую архитектуру систем Internet of Things (IoT). Сегодня поговорим подробнее про уровневую модель передачи и обработки данных от конечных устройств до облачных IoT-платформ, а также приведем примеры наиболее популярных средств обеспечения каждого из уровней этой сложной архитектуры Industrial Internet of Things, включая инструменты Big Data. Многоуровневый IIoT: 12 слоев архитектуры В отличие от типовой Big Data системы, работающей по принципу клиент-серверного приложения, модель IIoT-решения гораздо сложнее. Аналогично клиент-серверному принципу, в IIoT-архитектуре можно выделить 2 разных по физическому расположению группы обязательных компонентов: периферия (Edge) — конечные smart-устройства, расположенные на технологическом оборудовании, за которым осуществляется удаленный мониторинг и управление; мощные Big Data инструменты, развернутые в центре обработки данных на серверах или в облаке (Backend). Тем не менее, из-за особенностей Далее …

Блеск и нищета главной технологии Big Data: достоинства и недостатки MapReduce

Big Data, Большие данные, архитектура, обработка данных, Spark, Hadoop

MapReduce можно назвать основой Big Data, т.к. именно данная технология позволяет обрабатывать огромные массивы информации параллельно в распределенных кластерах. Эту вычислительную модель поддерживают множество различных коммерческих и свободных продуктов: Apache Hadoop, Spark, Greenplum, Hive, MongoDB, Phoenix, DryadLINQ и прочие Big Data фреймворки и библиотеки, написанные на разных языках программирования [1]. Сегодня мы рассмотрим главные достоинства и недостатки этой технологии и поговорим о том, как ведущие Big Data разработчики пытаются обойти ее основные проблемы. Чем хорош MapReduce: основные преимущества модели Ключевыми достоинствами MapReduce являются следующие [2]: возможность распределенного выполнения операций предварительной обработки (map) и свертки (reduce) большого объема данных. При этом функции map работают независимо друг от друга и могут выполняться параллельно на разных узлах кластера. Отметим, что на практике количество одновременно Далее …