Какая разница между пакетами Spark ML и MLLIB

Я заметил, что в SparkML есть два класса LinearRegressionModel, один в ML и еще один в пакете MLLib.

Эти два реализованы совершенно по-другому - например. один из MLLib реализует Serializable, а другой - нет.

Кстати, истина о RandomForestModel.

Почему существуют два класса? Какой из них "правильный"? И есть ли способ конвертировать один в другой?

Ответ 1

oasmllib содержит старый API на основе RDD, в то время как oasml содержит новую сборку API вокруг Dataset и ML Pipelines. ml и mllib достигли функционального паритета в 2.0.0, а mllib медленно устаревает (это уже произошло в случае линейной регрессии) и, скорее всего, будет удалено в следующем основном выпуске.

Так что, если ваша цель - обратная совместимость, тогда "правильный выбор" - это oasml.

Ответ 2

Spark Mllib

spark.mllib содержит устаревший API, созданный на основе RDD.

Spark ML

spark.ml предоставляет высокоуровневый API, построенный поверх DataFrames, для построения конвейеров ML.

Согласно [ официальное объявление

Начиная с Spark 2.0, API на основе RDD в пакете spark.mllib перешли в режим обслуживания. Основным API машинного обучения для Spark теперь является API на основе DataFrame в пакете spark.ml. Apache spark рекомендуется использовать spark.ml

  • MLlib по-прежнему будет поддерживать API на основе RDD в spark.mllib с исправлениями ошибок.
  • MLlib не будет добавлять новые функции в API на основе RDD.

  • В выпусках Spark 2.x MLlib будет добавлять функции в API на основе DataFrames для достижения паритета функций с помощью API на основе RDD.

  • После достижения паритета функциональных возможностей (примерно для Spark 2.3) API на основе RDD будет объявлен устаревшим.
  • Ожидается, что API на основе RDD будет удален в Spark 3.0.

Почему MLlib переключается на API на основе DataFrame?

  • DataFrames предоставляют более удобный API, чем RDD. Многочисленные преимущества DataFrames включают источники данных Spark, запросы SQL/DataFrame, оптимизации Tungsten и Catalyst, а также унифицированные API для разных языков.

  • API на основе DataFrame для MLlib предоставляет единый API для алгоритмов ML и для нескольких языков.

  • DataFrames облегчают практические ML Pipelines, в частности, преобразования функций. Смотрите руководство по трубопроводам для деталей.

Подробнее читайте в документе - https://spark.apache.org/docs/latest/ml-guide.html.