MOBI BOOT CAMP CORP. logoLearning Buddy
  • SIGN IN
  • Foundations
  • The Hadoop Ecosystem: Batch at Scale
  • The Spark Ecosystem: In-Memory Processing
    • Apache Spark Intro
    • RDD
    • Spark DataFrame and SQL
    • Spark Streaming
    • MLlib in Spark
    • Slides
  • Data Pipelines and Transport
  • Search & Information Retrieval
  • The Modern Data Stack
  • Glossary

MLlib: Scalable Machine Learning in Spark

MLlib is Spark's native, scalable machine learning library. Its goal is to make practical machine learning easy and scalable. While libraries like scikit-learn are excellent for single-machine model development, MLlib is designed from the ground up to train models on massive datasets distributed across a cluster.

MLlib provides a wide range of common ML algorithms for tasks like:

  • Classification (e.g., Logistic Regression, Decision Trees, Random Forests)
  • Regression (e.g., Linear Regression, Gradient-Boosted Trees)
  • Clustering (e.g., K-Means, LDA)
  • Collaborative Filtering (for recommendation engines)

The DataFrame-Based API: spark.ml

MLlib has two APIs: the original RDD-based API (spark.mllib) and the modern DataFrame-based API (spark.ml). The spark.ml API is now the recommended standard as it provides a higher-level, more user-friendly interface built around DataFrames.

The spark.ml API introduces a few key concepts that form the building blocks of a machine learning workflow:

  • DataFrame: The standard way to hold and operate on data, allowing MLlib to leverage the power of the Spark SQL optimizer.
  • Transformer: An algorithm that can transform one DataFrame into another. For example, a feature transformer might take a column of categorical strings and transform it into a column of numerical indices.
  • Estimator: An algorithm that can be fit on a DataFrame to produce a Transformer. This represents the training process. For example, a LogisticRegression estimator is trained on a DataFrame to produce a LogisticRegressionModel, which is a Transformer.
  • Pipeline: A way to chain multiple Transformers and Estimators together into a single ML workflow. This is extremely useful for organizing and reusing the sequence of steps required for data preparation and model training.

Example: A Simple Classification Pipeline

Here is a condensed example of how to build a simple logistic regression model using a Pipeline in PySpark. This demonstrates the standard workflow: loading data, feature engineering, training, and making predictions.

from pyspark.sql import SparkSession
from pyspark.ml import Pipeline
from pyspark.ml.feature import VectorAssembler, StringIndexer
from pyspark.ml.classification import LogisticRegression

# 1. Create a SparkSession
spark = SparkSession.builder.appName("MLlibExample").getOrCreate()

# 2. Load data into a DataFrame
# Assume a CSV with columns: "feature1", "feature2", "category_label"
data = spark.read.csv("path/to/your/data.csv", header=True, inferSchema=True)

# 3. Define the stages of the pipeline
# Stage 1: Convert the string label into a numerical index
label_indexer = StringIndexer(inputCol="category_label", outputCol="label")

# Stage 2: Assemble the feature columns into a single feature vector
assembler = VectorAssembler(inputCols=["feature1", "feature2"], outputCol="features")

# Stage 3: Define the machine learning model (an Estimator)
lr = LogisticRegression(featuresCol="features", labelCol="label")

# 4. Create the pipeline by chaining the stages together
pipeline = Pipeline(stages=[label_indexer, assembler, lr])

# 5. Train the model
# The .fit() method runs the data through the pipeline and trains the model
model = pipeline.fit(data)

# 6. Make predictions on new, unseen data
# (For this example, we'll just use the same data)
predictions = model.transform(data)

# 7. Show the results
# The 'prediction' column contains the model's output
predictions.select("features", "label", "prediction", "probability").show()

# Stop the SparkSession
spark.stop()

This pipeline approach makes it easy to manage the entire machine learning process, from raw data to a trained model, in a clean and reproducible way.

Additional Resources

  • Official MLlib Programming Guide: https://spark.apache.org/docs/latest/ml-guide.html
  • Example in Colab: Titanic Dataset Classification with MLlib
Privacy Policy | Terms & Conditions