Eseguire la migrazione di dati da MongoDB ad Azure Cosmos DB basato su vCore per MongoDB usando Azure Databricks
Azure Databricks semplifica lo spostamento di set di dati MongoDB di grandi dimensioni in Azure Cosmos DB for MongoDB basato su vCore, rendendo più semplice il trasferimento di dati complessi. Consente di controllare in modo dettagliato il ritmo di migrazione e le trasformazioni dei dati, gestendo in modo efficace set di dati di grandi dimensioni.
Perché usare Azure Databricks?
Azure Databricks, una piattaforma distribuita come servizio (PaaS) per Apache Spark, introduce un metodo semplificato ed efficiente per la migrazione offline e online dei database da MongoDB. L'architettura è progettata per supportare set di dati estesi, rendendola una scelta adatta per i progetti di migrazione.
Prerequisiti
Prima di avviare la migrazione, assicurarsi di disporre dei prerequisiti seguenti:
- Verificare che l'account Azure Cosmos DB per MongoDB basato su vCore sia attivo e configurato correttamente. Assicurarsi di aver abilitato un'identità gestita per l'account Azure MongoDB e di aver concesso le autorizzazioni necessarie per accedere al database MongoDB di origine.
- Effettuare il provisioning di un cluster di Azure Databricks, selezionando Databricks runtime versione 7.6 per garantire una compatibilità ottimale con Spark 3.0 .
- Aggiungere la libreria Connettore MongoDB di Maven per Spark al cluster. Questa libreria consente le connessioni agli endpoint Nativi di MongoDB e Azure Cosmos DB.
Eseguire la migrazione
È possibile creare un notebook Python o Scala in Azure Databricks per eseguire la migrazione. Ad esempio, se si vuole eseguire la migrazione dei dati da MongoDB ad Azure Cosmos DB basato su vCore per MongoDB usando un notebook Python, è necessario aggiungere questo frammento di codice al notebook:
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()
Eseguire la migrazione
Eseguire il notebook di migrazione, monitorare il processo per eventuali errori di limitazione della frequenza e regolare i parametri in base alle esigenze per garantire un trasferimento uniforme dei dati.
Migliorare le prestazioni della migrazione
A seconda del livello del cluster Azure Cosmos DB per MongoDB basato su vCore, è possibile modificare alcune impostazioni per migliorare le prestazioni della migrazione. Alcune di queste impostazioni includono:
- Configurazione del cluster Spark: L'ottimizzazione del numero di ruoli di lavoro e core influisce direttamente sulla capacità di calcolo per elaborare la migrazione dei dati.
- Regolazioni delle dimensioni batch: L'ottimizzazione del parametro maxBatchSize consente di ridurre gli errori di limitazione della frequenza. Questo parametro controlla il numero di documenti inviati al database di destinazione in ogni batch.
Indipendentemente dal fatto che si stia eseguendo una migrazione online o offline, l'uso di Azure Databricks per il progetto di migrazione offre una soluzione affidabile e scalabile per il trasferimento di set di dati di grandi dimensioni da MongoDB a azure Cosmos DB basato su vCore per MongoDB. Offre la flessibilità necessaria per regolare la velocità di migrazione e la trasformazione dei dati, garantendo un processo di migrazione efficace.