Apache выпускает Spark 1.6


Выпущена новая более быстрая версия механизма обработки данных Apache Spark с открытым исходным кодом с новым API набора данных и улучшенными функциями обработки данных.

Apache Spark 1.6 быстрее, имеет новый API набора данных и улучшены функции анализа данных.

Повышение производительности начинается с изменений в сканировании данных Parquet. Parquet — один из наиболее часто используемых форматов данных в Spark. В прошлом программа чтения Parquet от Spark использовала parquet-mr для чтения и декодирования файлов Parquet.

Разработчики профилировали множество приложений Spark и обнаружили, что многие циклы, как правило, тратятся на «сборку записей», процесс, который восстанавливает записи из столбцов Parquet. Представлен новый считыватель Parquet, который обходит сборку записей parquert-mr и использует более оптимизированный путь кода для плоских схем. Согласно сообщению в блоге о новой версии:

«В наших тестах этот новый считыватель увеличивает скорость сканирования для 5 столбцов с 2,9 миллиона строк в секунду до 4,5 миллиона строк в секунду, то есть почти на 50%!»

Управление памятью — еще одна область, которая была улучшена. До Spark 1.6 Spark статически разделял доступную память на две области: память выполнения и кэш-память. Оперативная память использовалась для сортировки, хеширования и перемешивания, в то время как кэш-память использовалась для кэширования горячих данных.

Spark 1.6 представляет новый менеджер памяти, который автоматически настраивает размер различных областей памяти. Размер областей автоматически увеличивается или уменьшается диспетчером памяти в соответствии с потребностями исполняемого приложения. Разработчики говорят, что для многих приложений это будет означать значительное увеличение доступной памяти, которую можно использовать для таких операторов, как объединения и агрегации, без какой-либо пользовательской настройки.

Новый API — это еще одна область, которая призвана обеспечить лучшую производительность, хотя вам может потребоваться изменить способ написания кода ваших приложений. По словам разработчиков, в новой версии управление состоянием потоковой передачи выполняется в десять раз быстрее.

Переработанный API управления состоянием в Spark Streaming представляет новый API mapWithState, который линейно масштабируется по количеству обновлений, а не к общему количеству записей. Это достигается за счет эффективной реализации, которая отслеживает «дельты», вместо того, чтобы всегда требовать полного сканирования данных, и разработчики говорят, что это привело к повышению производительности на порядок во многих рабочих нагрузках.

DatFrame API — еще одна область, которая была улучшена за счет добавления типизированного расширения под названием Datasets. DataFrames были представлены ранее в 2015 году для добавления высокоуровневых функций, которые дают Spark более четкое представление о структуре данных, а также о выполняемых вычислениях.

Эта информация используется оптимизатором Catalyst и механизмом выполнения Tungsten для автоматического ускорения реального анализа больших данных. Однако пользователи Spark сообщают о проблемах по поводу отсутствия поддержки безопасности типов во время компиляции, что привело к появлению расширения Datasets typed. Это расширяет API DataFrame для поддержки статической типизации и пользовательских функций, которые выполняются непосредственно на существующих типах Scala или Java.

Еще одна область, которая была улучшена, — это поддержка науки о данных с добавлением персистентности конвейера машинного обучения: разработчики говорят, что многие приложения машинного обучения используют функцию конвейера машинного обучения Spark для построения конвейеров обучения. Однако до сих пор, если вы хотели, чтобы ваше приложение сохраняло конвейер извне, вам нужно было реализовать собственный код сохранения. В Spark 1.6 API конвейера предоставляет средства для сохранения и перезагрузки конвейеров из предыдущего состояния и последующего применения моделей, созданных ранее, к новым данным.

В новой версии добавлен ряд алгоритмов машинного обучения, в том числе:

одномерная и двумерная статистика

анализ выживаемости

нормальное уравнение для наименьших квадратов

пополам кластеризация K-средних

онлайн-проверка гипотез

Скрытое распределение Дирихле (LDA) в конвейерах ML

R-подобная статистика для GLM

взаимодействия функций в формуле R

веса экземпляров для GLM

одномерная и двумерная статистика в DataFrames

Источник данных LIBSVM

нестандартные данные JSON

Более подробную информацию о новой версии можно найти в Примечаниях к выпуску вместе с рабочими примерами.


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