Migración de datos de MongoDB a Azure Cosmos DB for MongoDB basado en núcleo virtual mediante Azure Databricks

Completado

Azure Databricks simplifica el traslado de grandes conjuntos de datos de MongoDB a Azure Cosmos DB for MongoDB basado en núcleo virtual, lo que facilita la transferencia de datos complejos. Permite un control detallado sobre el ritmo de migración y las transformaciones de datos, controlando eficazmente conjuntos de datos grandes.

¿Por qué usar Azure Databricks?

Azure Databricks, una plataforma como servicio (PaaS) para Apache Spark, presenta un método optimizado y eficaz para la migración sin conexión y en línea de bases de datos desde MongoDB. Su arquitectura está diseñada para admitir grandes conjuntos de datos, lo que lo convierte en una opción adecuada para los proyectos de migración.

Requisitos previos

Antes de empezar la migración, asegúrese de que se cumplen los siguientes requisitos previos:

  • Confirme que la cuenta de Azure Cosmos DB for MongoDB basado en núcleo virtual está activa y configurada correctamente. Asegúrese de habilitar una identidad administrada para la cuenta de Azure MongoDB y conceda los permisos necesarios para acceder a la base de datos de MongoDB de origen.
  • Aprovisione un clúster de Azure Databricks y seleccione Databricks runtime versión 7.6 para obtener una compatibilidad óptima con Spark 3.0 .

Captura de pantalla de cómo agregar la extensión de migración de MongoDB a Azure Data Studio.

  • Agregue la biblioteca MongoDB Connector for Spark de Maven al clúster. Esta biblioteca permite conexiones a puntos de conexión nativos de MongoDB y Azure Cosmos DB.

Realizar la migración

Puede crear un cuaderno de Python o Scala en Azure Databricks para realizar la migración. Por ejemplo, si desea migrar datos de MongoDB a Azure Cosmos DB for MongoDB basado en núcleo virtual mediante un cuaderno de Python, agregaría este fragmento de código al cuaderno:

from pyspark.sql import SparkSession
from azure.identity import DefaultAzureCredential

# Set up the managed identity credential
credential = DefaultAzureCredential()

# Retrieve the access token for Azure Cosmos DB
token = credential.get_token("https://cosmos.azure.com/.default")

# Construct the target connection string using the access token
target_account_name = "<ACCOUNTNAME>"  # Replace with your Cosmos DB account name
target_connection_string = (
    f"mongodb://:@{target_account_name}.mongo.cosmos.azure.com:10255/"
    f"?ssl=true&replicaSet=globaldb&retrywrites=false&maxIdleTimeMS=120000&appName=@{target_account_name}@"
    f"&authMechanism=PLAIN&authSource=$external&password={token.token}"
)

# MongoDB source connection details
source_connection_string = "mongodb://<USERNAME>:<PASSWORD>@<HOST>:<PORT>/<AUTHDB>"  # Replace with your source MongoDB connection
source_db = "<DB NAME>"
source_collection = "<COLLECTIONNAME>"
target_db = "<DB NAME>"
target_collection = "<COLLECTIONNAME>"

# Initialize Spark session
my_spark = SparkSession \
    .builder \
    .appName("MongoDB to CosmosDB Migration") \
    .config("spark.mongodb.input.uri", source_connection_string) \
    .config("spark.mongodb.output.uri", target_connection_string) \
    .getOrCreate()

# Read from source MongoDB
df = my_spark.read.format("com.mongodb.spark.sql.DefaultSource") \
    .option("uri", source_connection_string) \
    .option("database", source_db) \
    .option("collection", source_collection) \
    .load()

# Write to Azure Cosmos DB (MongoDB API)
df.write.format("mongo") \
    .mode("append") \
    .option("uri", target_connection_string) \
    .option("database", target_db) \
    .option("collection", target_collection) \
    .save()

Ejecución de la migración

Ejecute su cuaderno de migración, supervisando el proceso para detectar posibles errores de limitación de velocidad y ajustando los parámetros según sea necesario para garantizar una transferencia de datos sin problemas.

Mejora del rendimiento de la migración

En función del nivel de clúster de Azure Cosmos DB for MongoDB basado en núcleo virtual, es posible que quiera ajustar algunos parámetros para mejorar el rendimiento de la migración. Algunos de esos parámetros son:

  • Configuración del clúster de Spark: optimizar el número de trabajos y núcleos afecta directamente a la capacidad computacional para procesar la migración de datos.
  • Ajustes de tamaño de lote: el ajuste del parámetro maxBatchSize puede ayudar a mitigar los errores de limitación de velocidad. Este parámetro controla el número de documentos enviados a la base de datos de destino en cada lote.

Independientemente de si está realizando una migración en línea o sin conexión, el uso de Azure Databricks para el proyecto de migración ofrece una solución sólida y escalable para transferir grandes conjuntos de datos de MongoDB a Azure Cosmos DB for MongoDB basado en núcleo virtual. Proporciona la flexibilidad para ajustar la velocidad de migración y la transformación de datos, lo que garantiza un proceso de migración correcto.