Migrer des données de MongoDB vers Azure Cosmos DB for MongoDB basé sur vCore avec Azure Databricks
Azure Databricks simplifie le déplacement des jeux de données MongoDB volumineux vers Azure Cosmos DB for MongoDB basé sur vCore, facilitant ainsi le transfert de données complexes. Il permet un contrôle précis sur le rythme de la migration et les transformations de données, gérant efficacement des jeux de données volumineux.
Pourquoi utiliser Azure Databricks ?
Azure Databricks, une platform en tant que service (PaaS) pour Apache Spark, présente une méthode simple et efficace pour la migration de base de données à partir de MongoDB en ligne et hors connexion. Son architecture est conçue pour prendre en charge des jeux de données étendus, ce qui en fait un choix idéal pour vos projets de migration.
Prérequis
Avant de commencer la migration, vérifiez que vous avez les prérequis suivants :
- Vérifiez que votre compte Azure Cosmos DB for MongoDB basé sur vCore est actif et correctement configuré. Vérifiez que vous avez activé une identité managée pour votre compte Azure MongoDB et accordé les autorisations nécessaires pour accéder à la base de données MongoDB source.
- Provisionnez un cluster Azure Databricks, en sélectionnant Databricks runtime version 7.6 pour une compatibilité optimale avec Spark 3.0.
- Ajoutez la bibliothèque MongoDB Connector for Spark Maven à votre cluster. Cette bibliothèque permet des connexions aux points de terminaison MongoDB et Azure Cosmos DB natifs.
Effectuer la migration
Vous pouvez créer un notebook Python ou Scala dans Azure Databricks afin d’effectuer la migration. Par exemple, si vous souhaitez migrer des données de MongoDB vers Azure Cosmos DB for MongoDB basé sur vCore à l’aide d’un notebook Python, vous devez ajouter cet extrait de code à votre 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()
Exécutez la migration
Exécutez votre notebook de migration, en surveillant le processus pour identifier les potentielles erreurs de limitation de débit et en ajustant des paramètres si besoin afin de garantir un transfert de données fluide.
Améliorer les performances de migration
Selon le niveau de service de votre cluster Azure Cosmos DB for MongoDB basé sur vCore, vous souhaiterez peut-être modifier certains paramètres pour améliorer les performances de migration. Voici quelques-uns de ces paramètres :
- Configuration du cluster Spark : l’optimisation du nombre de workers et de cœurs a un impact direct sur la capacité de calcul pour traiter votre migration de données.
- Ajustements de taille de lot : le paramétrage du paramètre maxBatchSize peut aider à atténuer les erreurs de limitation de débit. Ce paramètre contrôle le nombre de documents envoyés à la base de données cible dans chaque lot.
Peu importe si vous effectuez une migration en ligne ou hors ligne, l’utilisation de Azure Databricks pour votre projet de migration offre une solution robuste et évolutive afin de transférer des jeux de données volumineux de MongoDB vers Azure Cosmos DB for MongoDB basé sur vCore. Il offre la flexibilité nécessaire pour ajuster la vitesse de migration et la transformation des données, ce qui garantit un processus de migration réussi.