Arenadata выпустила инструмент для обмена данными между Arenadata DB (аналитической MPP-СУБД на базе Greenplum) и Apache Spark (фреймворком для распределенной обработки данных, входящим в экосистему Hadoop) — ADB-Spark Connector.
ADB-Spark Connector предназначен для высокоскоростной и параллельной передачи информации между Spark и Arenadata DB. До выхода нового продукта задачи загрузки и выгрузки данных частично решались при помощи фреймворка Greenplum Platform Extension Framework (PXF).
Коннектор построен с использованием 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, сказал: «Разработанное нами решение будет полезно для заказчиков, которые при построении своих корпоративных хранилищ комбинируют Arenadata Hadoop и Arenadata DB. ADB-Spark Connector обеспечивает быструю двунаправленную связь между ними, позволяя выполнять чтение и запись данных максимально эффективно».
По сравнению с ближайшим аналогом на рынке — Spark-Greenplum, коннектором от компании Pivotal — ADB-Spark Connector обеспечивает более гибкое партиционирование (пять способов вместо двух) и большее число типов данных (в том числе интервалы и массивы), а также предоставляет дополнительные функциональные возможности, включая поддержку Batch-режима в Spark, сбор статистики для построения планов запросов при помощи Catalyst и выполнение произвольных SQL-запросов через Master-ноду ADB.
В настоящий момент ADB-Spark Connector поддерживает версии Spark 2.3.x и 2.4.x. В дальнейших планах по развитию продукта — добавление поддержки Spark 3.x и реализация функционала стриминга.