Разработчики: | Arenadata (Аренадата Софтвер) |
Дата премьеры системы: | 2021/07/22 |
Технологии: | СОА |
2021: Выпуск ADB-Spark Connector
Компания Arenadata 22 июля 2021 года сообщила о выпуске инструмента для обмена данными между Arenadata DB (аналитической MPP-СУБД на базе Greenplum) и Apache Spark (фреймворком для распределенной обработки данных, входящим в экосистему Hadoop) — ADB-Spark Connector.
Коннектор построен с использованием Scala 2.11.x, 2.12.x, Twitter Finagle и ScalikeJDBC. В основе его работы — HTTP сервер, реализующий протокол gpfdist. Этот метод, по сравнению с другими существующими способами обмена с ADB, обеспечивает параллельную запись на сегменты Greenplum без участия Master, возможность гибкого партиционирования при чтении данных из Greenplum в Spark, отсутствие необходимости устанавливать утилиту gpfdist на каждой Spark-ноде и другие преимущества.
Для реализации протокола gpfdist взят фреймворк Finagle, показавший лучшую производительность при наличии множества одновременных сессий от сегментов ADB, — по сравнению с изначально выбранным Akka HTTP.
К основным функциям ADB-Spark Connector относятся:
- чтение данных из Greenplum в Spark с поддержкой различных способов партиционирования;
- запись данных из Spark в Greenplum с помощью нескольких режимов записи: Append, Overwrite, ErrorIfExists;
- поддержка push-down операторов;
- извлечение дополнительных метаданных из Greenplum, включая статистику и схемы распределения данных;
- автоматическое формирование схем данных;
- оптимизация выполнения агрегатной функции count.
![]() | Разработанное нами решение будет полезно для заказчиков, которые при построении своих корпоративных хранилищ комбинируют Arenadata Hadoop и Arenadata DB. ADB-Spark Connector обеспечивает быструю двунаправленную связь между ними, позволяя выполнять чтение и запись данных максимально эффективно,
сказал Дмитрий Плужников, директор департамента системной архитектуры Arenadata.
| ![]() |
По сравнению с ближайшим аналогом на рынке — Spark-Greenplum коннектором от компании Pivotal — ADB-Spark Connector обеспечивает более гибкое партиционирование (5 способов вместо 2) и большее число типов данных (в том числе интервалы и массивы), а также предоставляет дополнительные функциональные возможности, включая поддержку Batch-режима в Spark, сбор статистики для построения планов запросов при помощи Catalyst и выполнение произвольных SQL-запросов через Master-ноду ADB.
На июль 2021 года ADB-Spark Connector поддерживает версии Spark 2.3.x и 2.4.x. В дальнейших планах по развитию продукта — добавление поддержки Spark 3.x и реализация функционала стриминга.
Подрядчики-лидеры по количеству проектов
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
Данные не найдены
Распределение вендоров по количеству проектов внедрений (систем, проектов) с учётом партнёров
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
Данные не найдены
Распределение систем по количеству проектов, не включая партнерские решения
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)