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
SNIPPET
Avalie esse Tutorial
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.
- Implemente facilmente a movimentação de uma ampla variedade de tipos de dados entre o MongoDB e o BigQuery.
- 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.
- Você pode usar seu notebook favorito para criar a solução, incluindo o novo notebook de visualização disponível no BigQuery Studio.
- 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.
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 .
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 2 import certifi 3 import pprint 4 import pymongo 5 import pymongoarrow 6 from pymongo import MongoClient 7 8 client = MongoClient("URI ``sting``",tlsCAFile=certifi.where()) 9 10 #Initialize database and collection 11 db = client.get_database("sample_geospatial") 12 col = db.get_collection("shipwrecks") 13 14 for doc in col.find({}): 15 pprint.pprint(doc) 16 17 from pymongoarrow.monkey import patch_all 18 patch_all() 19 20 #Create Dataframe for data read from MongoDB 21 import pandas as pd 22 df = 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 4 del(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 3 import pandas_gbq 4 5 pandas_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:
- Agrupe Dataframes em blocos, especialmente ao lidar com grandes conjuntos de dados, para evitar problemas de memória.
- 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.
- 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.
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).
1 import bigframes.pandas as bpd 2 bigframes.options.bigquery.project = "GCP project ID" 3 4 # df = <pandas_df> 5 bdf = bpd.read_pandas(df)
Para obter mais informações sobre como usar os DataFrames do Google Cloud Bigquery, visite a documentaçãodo Google Cloud.
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.
Principais comentários nos fóruns
Ainda não há comentários sobre este artigo.