Migrar dados do MongoDB para o Azure Cosmos DB for MongoDB baseado em vCore usando o Azure Databricks
O Azure Databricks simplifica a movimentação de conjuntos de dados grandes do MongoDB para o Azure Cosmos DB for MongoDB baseado em vCore, simplificando a transferência de dados complexos. Ele permite um controle detalhado sobre o ritmo de migração e as transformações de dados, processando efetivamente conjuntos de dados grandes.
Por que usar o Azure Databricks?
O Azure Databricks, uma PaaS (plataforma como serviço) para Apache Spark, apresenta um método simplificado e eficiente para a migração offline e online de bancos de dados do MongoDB. A arquitetura dele foi projetada para dar suporte a conjuntos de dados extensivos, tornando-a uma opção adequada para seus projetos de migração.
Pré-requisitos
Antes de começar a migração, verifique se você tem os seguintes pré-requisitos:
- Confirme se a sua conta do Azure Cosmos DB for MongoDB baseada em vCore está ativa e se ela foi configurada corretamente. Verifique se você habilitou uma identidade gerenciada para sua conta do Azure MongoDB e concedeu as permissões necessárias para acessar o banco de dados mongoDB de origem.
- Provisione um cluster do Azure Databricks, selecionando o runtime do Databricks versão 7.6 para compatibilidade ideal com o Spark 3.0.
- Adicione a biblioteca do Conector do MongoDB do Maven para Spark ao cluster. Essa biblioteca permite conexões com pontos de extremidade nativos do MongoDB e do Azure Cosmos DB.
Realizar a migração
Você pode criar um notebook Python ou Scala no Azure Databricks para fazer a migração. Por exemplo, se você quiser migrar dados do MongoDB para o Azure Cosmos DB for MongoDB baseado em vCore usando um notebook Python, adicione este snippet de código ao 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()
Executar a migração
Execute seu notebook de migração, monitorando o processo em busca de possíveis erros de limitação de taxa e ajustando os parâmetros, conforme necessário, a fim de garantir uma transferência de dados estável.
Aprimorar o desempenho da migração
Dependendo da camada de cluster do Azure Cosmos DB for MongoDB baseado em vCore, o ideal é ajustar algumas configurações para aprimorar o desempenho da migração. Algumas dessas configurações incluem:
- Configuração do cluster do Spark: Otimizar o número de trabalhos e núcleos afeta diretamente a capacidade computacional para processar a migração de dados.
- Ajustes de tamanho do lote: O ajuste do parâmetro maxBatchSize pode ajudar a atenuar erros de limitação de taxa. Esse parâmetro controla o número de documentos enviados ao banco de dados de destino em cada lote.
Se você estiver fazendo uma migração online ou offline, usar o Azure Databricks para seu projeto de migração oferecerá uma solução robusta e escalonável para transferir conjuntos de dados grandes do MongoDB para o Azure Cosmos DB for MongoDB baseado em vCore. Ele fornece a flexibilidade para ajustar a velocidade de migração e a transformação de dados, garantindo um processo de migração bem-sucedido.