Spark MLlib на собеседовании Data Engineer
Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в 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
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.
Связанные темы
- Spark RDD vs DataFrame для DE
- Collaborative filtering для DS
- XGBoost vs LightGBM vs CatBoost для DS
- Feature store для DS
- Подготовка к собесу Data Engineer
FAQ
Это официальная информация?
Нет. Статья основана на документации Spark MLlib.
Тренируйте Data Engineering — откройте тренажёр с 1500+ вопросами для собесов.