Спочатку, Apache представив Mahout, побудований на основі MapReduce. Mahout був досить зрілим і прийшов з багатьма алгоритмами ML. Однак алгоритми ML зазвичай використовують багато ітерацій, тому Mahout працював дуже повільно.
Тоді Apache представив Spark MLLib та Spark ML, побудовані на основі екосистеми Spark на Hadoop, що робить їх набагато швидшими, ніж Mahout. Spark MLLib містить старий API на базі RDD (Resilient Distributed Dataset). RDD – це основна абстракція даних Spark, що представляє собою незмінний, розділений набір елементів, яким можна керувати паралельно з API низького рівня. Spark ML містить нову збірку API навколо конвеєрів API та ML на основі DataFrame, і він є основним ML API для Spark. DataFrame – це набір даних, організований у іменовані стовпці, і він концептуально еквівалентний таблиці в реляційній базі даних. Перетворення та дії над DataFrame можна вказувати як SQL запити, що зручно для розробників із фоном SQL. Більше того, Spark SQL надає Spark більше інформації про структуру даних і обчислень, що виконуються, ніж Spark RDD API. Spark ML пропонує концепцію пайплайнів ML, які допомагають користувачам створювати та налаштовувати практичні пайплайни ML; він стандартизує API для алгоритмів ML, тому є можливість об’єднати кілька алгоритмів ML в один пайплайн або робочий процес. Spark MLlib повільно перестає існувати і, швидше за все, буде видалений у майбутньому великому релізі.
Spark MLLib та Spark ML містять алгоритми машинного навчання, такі як класифікація, регресія, кластеризація та спільна фільтрація; засоби інструменталізації для вилучення, перетворення, зменшення розмірності та вибору ознак; інструменти для побудови, оцінки та налаштування ML пайплайнів; і утиліти для збереження та завантаження алгоритмів, моделей і пайплайнів. Вони також містять інструменти для лінійної алгебри, статистики та обробки даних. За винятком паралельної моделі розподілених даних, MLlib може легко використовуватися разом із потоковими даними. З цією метою MLlib пропонує кілька основних алгоритмів машинного навчання для потокових даних, таких як потокова лінійна регресія або потоковий k-means. Для більшого класу ML алгоритмів потрібно дозволити моделі навчатися в режимі офлайн, а потім застосувати модель для потокової передачі даних в Інтернеті.
Сильні сторони:
- Інструменти ML для великих даних, які вже інтегровані в екосистему Apache Spark, зручні для використання в розробці та виробництві.
- Оптимізований алгоритм вибору з оптимізованими реалізаціями для Hadoop включає методи попередньої обробки.
- Будівництво пайплайну (робочого процесу) для обробки даних Big Data включає набір функціональних інженерних методів для аналізу даних (класифікація, регресія, кластеризація, спільна фільтрація та функціоналізація), а також потокових даних.
- Масштабованість із підтримкою SQL та дуже швидка робота завдяки in-memory processing.
Слабкі сторони:
- Основна увага зосереджена на роботі з табличними даними.
- Високе споживання пам’яті через in-memory processing.
- Spark MLlib та Spark ML є досить молодими бібліотеками ML які знаходяться в процессі залучення. Вони не дуже популярні, і кількість впроваджених алгоритмів ML не дуже велика.