Fala monstros e monstras dos dados! Tudo bem?
Hoje escolhi um tema que tirou o sono da nossa equipe por alguns dias, portanto vou compartilhar com vocês como montar a conexão entre o Azure Databricks e o Azure CosmosDB, bora lá?
Antes de tudo é importante explicar as configurações que estamos utilizando:
- Azure Cosmos DB (SQL API) -> Conheça mais sobre esta versão, clicando aqui
- Azure Databricks
- Cluster Mode: Standard
- Runtime Version: 6.4 Extended Support (Scala 2.11, Spark 2.4.5) -> Isso mesmo, uma versão antiga. Infelizmente é a única que suporta a biblioteca que funciona sem problemas de conflitos ou versões
Em primeiro lugar vamos criar o banco de dados e o container no cosmosDB, se você chegou até aqui, por analogia vou supor que você já saiba como fazer este passo, do contrário, clique aqui e saiba como fazer do inicio.
Em seguida criaremos o cluster no databricks, do mesmo modo, caso você não saiba como fazer isso, clique aqui.
Criação do Cluster
Agora, vamos a criação do nosso cluster:
Em seguida, com o cluster criado é hora de fazer a instalação da biblioteca e referenciá-la dentro do cluster. Nesse meio tempo você pode baixar a biblioteca clicando aqui (sim, esta é a única biblioteca que faz a conexão sem nenhum impeditivo). Por fim, vamos fazer a instalação:
Clicando na aba “Libraries“:
Então, clique no botão “Install New“:
Logo depois na área de transferência “Drop JAR here” deposite o arquivo baixado (azure-cosmosdb-spark_2.4.0_2.11-3.7.0-uber.jar) e por último no botão “Install“:
Por fim, devemos aguardar a instalação da biblioteca e então vamos criar um notebook para configurar o acesso ao cosmosDB pelas credenciais e fazer a ingestão dos item de testes (criados a partir de um dataframe).
Configuração para acesso ao Azure CosmosDB
writeConfig = {
"Endpoint" : "https://REPLACEME.documents.azure.com:443/",
"Masterkey" : "REPLACEME",
"Database" : "DatabricksToCosmos",
"Collection" : "data",
"Upsert" : "true"
}
Vou explicar onde encontrar as chaves: Endpoint, Masterkey, Database e Collection.
Em primeiro lugar o Endpoint encontraremos na página inicial do recurso cosmosDB:
Em seguida vamos encontrar a Masterkey:
E então, vamos encontrar o Database (nome do banco de dados) e Collection (nome do container):
Ingestão dos dados no CosmosDB pelo Databricks
Por fim, vamos para a parte que importa, fazer a ingestão dos dados (usando dataframe) para dentro do Azure cosmosDB:
spark.createDataFrame((("1", "Rafa Costa", 30, "Head of Data"), ("2", "Maria da Silva", 40, "CDO")))\
.toDF("id","nome","idade","cargo") \
.write\
.format("com.microsoft.azure.cosmosdb.spark")\
.options(**writeConfig)\
.mode("append")\
.save()
Os dados no Azure CosmosDB:
E ai, foi útil pra você? Comenta aqui embaixo e compartilha com os amigos monstros nos dados!
Se você tiver alguma dúvida ou sugestão, não se esqueça de conectar comigo.