Anúncio UDF do MongoDB para modelos do BigQuery Dataflow
DJ
Venkatesh Shanbhag, Diana Annie Jenosh4 min read • Published Jan 26, 2023 • Updated Apr 02, 2024
Avalie esse Tutorial
Muitos clientes corporativos que usam o MongoDB Atlas como seu principal banco de dados operacional também usam o BigQuery para suas análises baseadas em Batch e AI/ML, tornando-o fundamental para a transferência perfeita de dados entre essas entidades. Desde o anúncio dos modelos de fluxo de dados (em outubro de 2022) sobre a movimentação de dados entre o MongoDB e o BigQuery, vimos muito interesse dos clientes, pois isso facilitou uma migração de dados somente para um anexo. Embora os três modelos do Dataflow fornecidos atendam à maioria dos casos de uso comuns, também havia uma demanda para poder fazer transformações como parte desses modelos.
Estamos muito satisfeitos em anunciar a adição da capacidade de escrever suas próprias funções definidas pelo usuário (UDFs) nesses pipelines do Dataflow! Este novo recurso permite usar UDFs no JavaScript para transformar e analisar dados no BigQuery. Com as UDFs, você pode definir lógica personalizada e regras de negócios que podem ser aplicadas aos seus dados durante o processamento pelo Dataflow. Isso permite que você realize transformações complexas, como transformar campos, concatenar campos, excluir campos, converter documentos incorporados em documentos separados etc. Essas UDFs aceitam documentos não processados como parâmetros de entrada e retornam os documentos processados como saída.
Para usar UDFs com o BigQuery Dataflow, basta escrever sua função JavaScript e armazená-la no bucket de armazenamento na nuvem do GCP. Use o parâmetro opcional dos modelos de fluxo de dados para ler esses UDFs durante a execução dos modelos. A função será executada nos dados conforme estiver sendo processado, permitindo que você aplique lógica e transformações personalizadas aos seus dados durante a transferência.
Vamos dar uma rápida olhada em como configurar uma amostra de UDF para processar (transformar um campo, nivelar um documento incorporado e excluir um campo) de um documento de entrada antes de gravar os dados processados no BigQuery.
- Configuração do MongoDB Atlas por meio do GCP Marketplace. (O MongoDB Atlas está disponível para pagamento conforme o uso no marketplace da GCP).
- Clique em Browse collections (Procurar coleções) e clique em +Create Database (Criar banco de dados).
5: nomeie seu banco de dadosSample_Company e a coleção Sample_Employee. 6: Clique em Inserir documento. Copie e cole o documento abaixo e clique em Inserir.
1 { 2 "Name":"Venkatesh", 3 "Address":{"Phone":{"$numberLong":"123455"},"City":"Honnavar"}, 4 "Department":"Solutions Consulting", 5 "Direct_reporting": "PS" 6 }
7: para ter acesso autenticado no cluster MongoDB Sandbox a partir do console do Google, precisamos criar usuários de banco de dados.
Clique em Acesso ao banco de dados no painel esquerdo do painel do Atlas.
Escolha Adicionar novo usuário usando o botão verde à esquerda. Insira o nome de usuário
appUser
e a senha appUser123
. Usaremos funções embutidas; clique em Adicionar privilégios padrão e, na seçãoPrivilégios padrão, adicione os roles readWriteAnyDatabase. Em seguida, pressione o botão verde Adicionar usuário para criar o usuário.8: lista os IPs na lista de permissões.
Para fins desta demonstração, permitiremos o acesso de qualquer ip, ou seja, 0.0.0.0/0. No entanto, isso não é recomendado para uma configuração de produção, onde a recomendações será usar o VPC Peering e IP privados.
- Criar um bucket de armazenamento em nuvem.
- Em sua máquina local, crie um arquivo Javascript transform.js e adicione abaixo o código de amostra.
1 function transform(inputDoc) { 2 var outputDoc = new Object(); 3 inputDoc["City"] = inputDoc["Address"]["City"]; 4 delete doc.Address; 5 outputDoc = doc; 6 return returnObj; 7 }
Essa função lerá o documento lido do MongoDB usando o connector IO do MongoDB do Apache stream. Nivelar o documento incorporado Endereço/Cidade a Cidade. Exclua o campo Endereço e devolva o documento atualizado.
a. Clique no botãoCreate Job from the template (Criar trabalho a partir do modelo ) na parte superior.
b. Nome do trabalho: mongodb-udf.
c. Região: igual à região do conjunto de dados do BigQuery.
d. URI de conexão do MongoDB: Copie o URI de conexão para conectar aplicativos do MongoDB Atlas.
e. MongoDB database: Sample_Company.
f. MongoDB Collection: Sample_Employee.
g. Tabela de destino do BigQuery: copie o link da tabela de destino do BigQuery
h. Página de detalhes do conjunto de dados no formato: bigquery-project:sample_dataset.sample_company.
i. Opção do usuário: FLATTEN.
j. Clique em mostrar parâmetros opcionais.
k. Local de armazenamento na cloud do seu JavaScript UDF: navegue pelo arquivo UDF carregado no local do bucket. Este é o novo recurso que permite executar o UDF e aplicar as transformações antes de inserir no BigQuery.
l. Nome de sua função Javascript: transform.
6: clique em RUN JOB para iniciar a execução do pipeline. Assim que a execução do pipeline terminar, seu gráfico deverá mostrar Bem-sucedido em cada estágio, conforme mostrado abaixo.
7: Após a conclusão do trabalho, você poderá ver o documento transformado inserido no BigQuery.
Neste blog, apresentamos UDFs ao MongoDB aos modelos de fluxo de dados do BigQuery e seus recursos para transformar os documentos lidos do MongoDB usando funções Javascript personalizadas definidas pelo usuário armazenadas em buckets de armazenamento do Google Cloud. Este blog também inclui um tutorial simples sobre como configurar o MongoDB Atlas, o Google Cloud e os UDFs.
- Configure seu primeiro MongoDB cluster usando o Google Marketplace.