Spark MLlib на собеседовании Data Engineer

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.

Что такое Spark MLlib

Distributed ML library в Spark. Train models на cluster, scale на TB data.

Two APIs:

  • spark.ml (DataFrame-based, recommended).
  • spark.mllib (RDD-based, deprecated).

Pipelines

from pyspark.ml import Pipeline
from pyspark.ml.feature import StringIndexer, VectorAssembler
from pyspark.ml.classification import GBTClassifier

pipeline = Pipeline(stages=[
    StringIndexer(inputCol="category", outputCol="category_idx"),
    VectorAssembler(inputCols=["age", "category_idx"], outputCol="features"),
    GBTClassifier(featuresCol="features", labelCol="label")
])

model = pipeline.fit(train_df)
predictions = model.transform(test_df)

Same API как scikit-learn pipelines, но distributed.

ALS

Alternating Least Squares. Для collaborative filtering.

from pyspark.ml.recommendation import ALS

als = ALS(rank=10, regParam=0.1, userCol="user", itemCol="item", ratingCol="rating")
model = als.fit(ratings_df)

# recommend top-10 для user
user_recs = model.recommendForAllUsers(10)

Scales до billions ratings.

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Gradient Boosting Trees

from pyspark.ml.classification import GBTClassifier

gbt = GBTClassifier(maxIter=100, maxDepth=5)
model = gbt.fit(train_df)

Caveats:

  • Slower чем XGBoost / LightGBM single-machine.
  • Хорошо если data не fits в одну машину.
  • На single-machine — XGBoost / LightGBM лучше.

Когда использовать

Подходит:

  • Train на petabyte data.
  • Уже Spark stack.
  • Hundreds millions samples.

Не подходит:

  • Deep learning (use TF / PyTorch + Spark for data prep).
  • Single-machine fits — XGBoost / sklearn быстрее.

В РФ MLlib редко используется в production (разнообразие fits single machine). Чаще Spark для data prep, training в отдельных pipelines.

Связанные темы

FAQ

Это официальная информация?

Нет. Статья основана на документации Spark MLlib.


Тренируйте Data Engineering — откройте тренажёр с 1500+ вопросами для собесов.