Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Junte-se a nós no Amazon Web Services re:Invent 2024! Saiba como usar o MongoDB para casos de uso de AI .
Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
MongoDBchevron-right

Orquestrando o MongoDB e BigQuery para excelência em aprendizado de máquina com as bibliotecas PyMongoArrow e BigQuery Pandas

Venkatesh Shanbhag, Maruti C4 min read • Published Feb 07, 2024 • Updated Feb 08, 2024
PandasGoogle cloudIAPythonMongoDB
SNIPPET
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
No mundo atual, orientado por dados, a capacidade de analisar e mover dados com eficiência entre diferentes plataformas é crucial. MongoDB Atlas e Google BigQuery são duas plataformas poderosas frequentemente usadas para gerenciar e analisar dados. Embora sejam excelentes em seus respectivos domínios, conectar e transferir dados entre eles de maneira transparente pode representar desafios. No entanto, com as ferramentas e técnicas certas, esta integração torna-se não só possível, mas também simplificada.
Uma maneira eficaz de estabelecer um pipeline estável entre o MongoDB Atlas e o BigQuery é aproveitando o PyMongoArrow e o Pandas-gbq, duas bibliotecas Python poderosas que facilitam a transferência e a manipulação de dados. O PyMongoArrow atua como uma ponte entre o MongoDB e o Arrow, uma camada analítica colunar na memória, permitindo uma conversão eficiente de dados. Por outro lado, o Pandas-gbq é uma biblioteca cliente Python para o Google BigQuery, permitindo fácil interação com conjuntos de dados do BigQuery.
Imagem 1: Diagrama de arquitetura para interação do MongoDB com BigQuery e VertexAI usando bibliotecas python

Vantagens de uma solução baseada em Python

  1. Implemente facilmente a movimentação de uma ampla variedade de tipos de dados entre o MongoDB e o BigQuery.
  2. Junte-se facilmente a várias fontes de dados, como cloud, bancos de dados do Google, MongoDB Atlas etc., e transforme os dados usando estruturas de dados Pandas.
  3. Você pode usar seu notebook favorito para criar a solução, incluindo o novo notebook de visualização disponível no BigQuery Studio.
  4. Realize análise exploratória de dados na leitura de dados das plataformas Google BigQuery e MongoDB Atlas sem mover manualmente os dados entre essas plataformas. Isso simplificará o esforço exigido pelos engenheiros de dados para mover os dados e oferece uma maneira mais rápida para os Cientistas de Dados criarem modelos de machine learning (ML).
Vamos discutir cada uma das vantagens de implementação com exemplos.

Dados ETL do MongoDB para o BigQuery

Vamos considerar um conjunto dedados de naufrágios de amostra disponível no MongoDB Atlas para este caso de uso.
Use os comandos abaixo para instalar as bibliotecas necessárias no ambiente de notebook de sua escolha. Para uma configuração fácil e escalonável, use blocos de anotações Jupyter do BigQuery ou blocos  de anotações gerenciados do VertexAIWorkbench .
Imagem 2: captura de tela do notebook jupyter para implementação do BigQuery DataFrames.
1!pip install --upgrade pip
2!pip install pymongoarrow
3!pip install pandas-gbq
Primeiro, estabeleça uma conexão com seu cluster MongoDB Atlas usando PyMongoArrow. Isto envolve configurar a autenticação e selecionar o banco de dados e a coleção dos quais você deseja transferir os dados. Siga a documentaçãodo MongoDB Atlas para configurar seu cluster, acesso à rede e autenticação. Carregue um conjunto de dados de amostra em seu cluster Atlas. Obtenha a string de conexão do Atlas e substitua a string URI abaixo pela sua string de conexão. O script abaixo também está disponível no repositório GitHub com etapas de configuração.
1#Read data from MongoDB
2import certifi
3import pprint
4import pymongo
5import pymongoarrow
6from pymongo import MongoClient
7
8client = MongoClient("URI ``sting``",tlsCAFile=certifi.where())
9
10#Initialize database and collection
11db = client.get_database("sample_geospatial")
12col = db.get_collection("shipwrecks")
13
14for doc in col.find({}):
15  pprint.pprint(doc)
16
17from pymongoarrow.monkey import patch_all
18patch_all()
19
20#Create Dataframe for data read from MongoDB
21import pandas as pd
22df = col.find_pandas_all({})
Transforme os dados para o formato necessário — por exemplo, transforme e remova os formatos de dados não compatíveis, como o ID do objeto MongoDB, ou converta o objeto MongoDB em JSON antes de gravá-lo no BigQuery. Consulte a documentação para saber mais sobre os tipos de dados suportados pelo Pandas-gbq e PyMongoArrow.
1#Transform the schema for required format.
2#e.g. the object id is not supported in dataframes can be removed or converted to string.
3
4del(df["_id"])
Depois de recuperar os dados do MongoDB Atlas e convertê-los em um formato adequado usando o PyMongoArrow, você poderá transferi-los para o BIGQuery usando o padras-gbq ou google-cloud-bigquery. Neste artigo, estamos usando o Pandas-gbq. Consulte a documentação para obter mais detalhes sobre as diferenças entre as bibliotecas Pandas-gbq e google-cloud-bigquery. Verifique se você tem um conjunto de dados no BigQuery para o qual deseja carregar os dados do MongoDB. Você pode criar um novo conjunto de dados ou utilizar um existente.
1#Write the transformed data to BigQuery.
2
3import pandas_gbq
4
5pandas_gbq.to_gbq(df[0:100], "gcp-project-name.bigquery-dataset-name.bigquery-table-name", project_id="gcp-project-name")
À medida que você inicia a construção do pipeline, otimizar o processo de transferência de dados entre o MongoDB Atlas e o BigQuery é essencial para o desempenho. Alguns pontos a serem considerados:
  1. Agrupe Dataframes em blocos, especialmente ao lidar com grandes conjuntos de dados, para evitar problemas de memória.
  2. Manipule o mapeamento de esquema e as conversões de tipo de dados corretamente para garantir a compatibilidade entre os bancos de dados de origem e de destino.
  3. Com as ferramentas certas, como o Google colab, o VertexAI Workbench etc., esse pipeline pode se tornar a base do seu ecossistema de dados, facilitando a movimentação de dados sem problemas e confiáveis entre o MongoDB Atlas e o Google BigQuery.

Introdução aos DataFrames do Google BigQuery (bigframes)

O Google bigframes é uma API Python que fornece um DataFrame compatível com o Pandas e recursos de aprendizado de máquina com base no mecanismo BigQuery. Ele fornece uma interface familiar do Pandas para manipulação e análise de dados. Depois que os dados do MongoDB são gravados no BigQuery, os BigQuery DataFrames podem desbloquear a solução amigável para analisar petabytes de dados com facilidade. O DataFrame dos Pandas pode ser lido diretamente nos DataFrames do BigQuery usando o Python bigframes.pandas biblioteca. Instale a biblioteca bigframes para usar o BigQuery DataFrames.
1!pip install bigframes
Antes de ler os Pandas DataFrames em BigQuery DataFrames, renomeie as colunas de acordo com as diretrizes de esquemado Google. (Observe que, no momento da publicação, o recurso pode não ser GA).
1import bigframes.pandas as bpd
2bigframes.options.bigquery.project = "GCP project ID"
3
4# df = <pandas_df>
5bdf = bpd.read_pandas(df)
Para obter mais informações sobre como usar os DataFrames do Google Cloud Bigquery, visite a documentaçãodo Google Cloud.

Conclusão

A criação de uma pipeline robusta entre o MongoDB Atlas e o BigQuery usando o PyMongoArrow e o Pandas-gbq abre um mundo de possibilidades para a movimentação e análise eficientes de dados. Essa integração permite a transferência contínua de dados, permitindo que as organizações aproveitem os pontos fortes de ambas as plataformas para análise de dados e tomada de decisões abrangentes.

Leitura adicional

Principais comentários nos fóruns
Ainda não há comentários sobre este artigo.
Iniciar a conversa

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Tutorial

Atualize sem receios com a stable API do MongoDB


Mar 05, 2024 | 5 min read
Tutorial

Design de esquema do MongoDB: melhores práticas de modelagem de dados


Oct 01, 2024 | 11 min read
exemplo de código

Exemplo de aplicativo para cuidadores de cães


Jul 12, 2024 | 3 min read
Início rápido

Introdução a pipelines de agregação em Rust


Oct 01, 2024 | 15 min read
Sumário
  • Vantagens de uma solução baseada em Python