{"id":30547,"date":"2024-11-04T21:51:57","date_gmt":"2024-11-05T00:51:57","guid":{"rendered":"https:\/\/building.nu.com\/?p=30547"},"modified":"2024-12-19T19:06:38","modified_gmt":"2024-12-19T22:06:38","slug":"como-o-nubank-usa-o-spark-para-processar-dados","status":"publish","type":"post","link":"https:\/\/building.nu.com\/pt-br\/como-o-nubank-usa-o-spark-para-processar-dados\/","title":{"rendered":"Como o Nubank usa o Spark para processar dados"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">A transforma\u00e7\u00e3o digital do setor financeiro colocou o processamento de dados no centro das opera\u00e7\u00f5es, com empresas como o Nubank aproveitando plataformas sofisticadas como o Spark. O Spark, um framework de computa\u00e7\u00e3o distribu\u00edda de c\u00f3digo aberto, oferece uma solu\u00e7\u00e3o robusta para lidar com grandes volumes de dados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No entanto, dominar suas complexidades n\u00e3o \u00e9 uma tarefa simples. Continue lendo para entender melhor a mec\u00e2nica do Spark, os desafios \u00fanicos de processamento de dados que o Nubank enfrenta e as estrat\u00e9gias que empregamos para superar essas complexidades.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Uma breve introdu\u00e7\u00e3o ao Spark<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">O Spark \u00e9 essencialmente um framework de computa\u00e7\u00e3o distribu\u00edda, executando c\u00f3digos em paralelo em v\u00e1rias m\u00e1quinas. Desenvolvido principalmente para o processamento de Big Data, ele se destaca por ser totalmente open source.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Como o Spark funciona?&nbsp;<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">A arquitetura do Spark \u00e9 composta por v\u00e1rios componentes, entre os quais os seguintes s\u00e3o fundamentais:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Cluster:<\/strong> Um grupo de JVMs (Java Virtual Machines).<\/li>\n\n\n\n<li><strong>Driver:<\/strong> Respons\u00e1vel por interpretar o programa (consulta) do usu\u00e1rio, analisar, distribuir e agendar as tarefas entre os executores. Pense no driver como o c\u00e9rebro das opera\u00e7\u00f5es.<\/li>\n\n\n\n<li><strong>Executor: <\/strong>&nbsp;S\u00e3o os que fazem o trabalho pesado. Eles processam segmentos espec\u00edficos de dados, conhecidos como parti\u00e7\u00f5es, executando o c\u00f3digo designado pelo driver.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Desafios de processamento de dados do Nubank com Spark<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Com um portf\u00f3lio de produtos em expans\u00e3o e um crescimento r\u00e1pido, o Nubank identificou a necessidade de uma melhor orquestra\u00e7\u00e3o de comunica\u00e7\u00e3o para evitar que os clientes recebessem mensagens simult\u00e2neas sobre diferentes produtos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Estabelecendo o cen\u00e1rio: Orquestrador de comunica\u00e7\u00e3o<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Para resolver isso, foi criada uma infraestrutura dentro do nosso processo de ETL (Extract, Transform, Load). Essa infraestrutura era composta por m\u00f3dulos como:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>M\u00f3dulo de produto:<\/strong> Permite que os usu\u00e1rios adicionem novos produtos sobre os quais desejam comunicar.<\/li>\n\n\n\n<li><strong>M\u00f3dulo de segmento de clientes:<\/strong> Facilita a comunica\u00e7\u00e3o com base em v\u00e1rios crit\u00e9rios, como idade ou renda.<\/li>\n\n\n\n<li><strong>M\u00f3dulo de campanha:<\/strong> Especifica o tipo de comunica\u00e7\u00e3o, seja um e-mail ou uma notifica\u00e7\u00e3o.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Os usu\u00e1rios adicionavam novos segmentos de clientes e campanhas a essa estrutura. Esses detalhes das campanhas eram ent\u00e3o armazenados em conjuntos de dados. Para determinar qual segmento de cliente receberia qual campanha, era realizada uma opera\u00e7\u00e3o de &#8220;join&#8221; entre segmentos e campanhas. Essa combina\u00e7\u00e3o foi chamada de &#8220;pipeline&#8221;.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The problem at hand<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">O problema em quest\u00e3o Inicialmente, os usu\u00e1rios adicionavam apenas alguns segmentos e campanhas para o mesmo produto. No entanto, em certas ocasi\u00f5es, o n\u00famero de segmentos e campanhas adicionados aumentou drasticamente, resultando em um aumento de dez vezes nos conjuntos de dados de campanhas. Isso foi acompanhado por um aumento significativo na cria\u00e7\u00e3o de segmentos, que n\u00e3o eram persistidos nos conjuntos de dados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esse aumento inesperado levou ao aparecimento de mensagens de erro. No Databricks, uma popular ferramenta de an\u00e1lise baseada em Spark, o erro &#8220;driver stopped unexpectedly&#8221; come\u00e7ou a aparecer. No lado do ETL, foi sinalizado um erro de &#8220;timeout exception&#8221;.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Principais suspeitos: broadcast join ou falta de mem\u00f3ria no driver<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Duas suspeitas principais surgiram:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Broadcast join:<\/strong> O Spark escolhe o tipo de opera\u00e7\u00e3o join com base no tamanho dos dados. Quando h\u00e1 uma disparidade significativa entre os tamanhos dos conjuntos de dados, ele pode optar por um &#8220;broadcast join&#8221;. Se o Spark escolher esse tipo de join equivocadamente, pode exceder o tempo limite de broadcast pr\u00e9-definido, causando o erro.<\/li>\n\n\n\n<li><strong>Falta de mem\u00f3ria no driver: <\/strong>&nbsp;Isso pode ocorrer quando uma a\u00e7\u00e3o em uma consulta envia ao driver resultados que s\u00e3o grandes demais para sua mem\u00f3ria, levando ao esgotamento da mem\u00f3ria.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Utilizando o SparkUI no Databricks, foi poss\u00edvel discernir que os joins feitos entre segmentos e campanhas n\u00e3o eram do tipo broadcast, mas sim do tipo &#8220;sort merge&#8221;. Essa observa\u00e7\u00e3o eliminou a hip\u00f3tese do broadcast join.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Investiga\u00e7\u00f5es adicionais mostraram que o processo parava durante a uni\u00e3o de v\u00e1rias tabelas. Curiosamente, quando a consulta foi transferida para um cluster geral com mais mem\u00f3ria, ela rodou sem problemas, indicando um problema de mem\u00f3ria.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ao combinar uma grande quantidade de conjuntos de dados, h\u00e1 o risco de sobrecarregar o driver. Para mitigar isso preventivamente, institu\u00edmos testes para garantir que os usu\u00e1rios n\u00e3o adicionem mais do que um certo n\u00famero de segmentos \u2013 especificamente, 40. Esse n\u00famero serve como um buffer antes que o sistema entre em colapso.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Fluxo de dados<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">No centro dos nossos desafios est\u00e3o os enormes fluxos de dados provenientes dos eventos do aplicativo. Com mais de 59 milh\u00f5es de usu\u00e1rios, registramos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Mais de 1 bilh\u00e3o de eventos disparados diariamente.<\/li>\n\n\n\n<li>Um total de mais de 100 terabytes de dados de eventos que necessitam de processamento di\u00e1rio.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Alguns dos principais desafios relacionados aos eventos do aplicativo s\u00e3o:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Desduplica\u00e7\u00e3o de eventos:<\/strong> Frequentemente, cliques s\u00e3o registrados v\u00e1rias vezes e precisam ser desduplicados dentro do Spark.<\/li>\n\n\n\n<li><strong>Processamento di\u00e1rio de dados:<\/strong> Garantir que os dados mais recentes estejam sempre dispon\u00edveis para nossos analistas.<\/li>\n\n\n\n<li><strong>Explora\u00e7\u00e3o de dados:<\/strong> A vastid\u00e3o dos dados torna a explora\u00e7\u00e3o complexa em nossas plataformas..<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">As solu\u00e7\u00f5es para esses problemas incluem:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Desduplica\u00e7\u00e3o: <\/strong>Ao garantir que os eventos sejam produzidos e entregues apenas uma vez (tanto dentro do aplicativo quanto no n\u00edvel do Message Broker), a responsabilidade do Spark pela desduplica\u00e7\u00e3o \u00e9 minimizada.<\/li>\n\n\n\n<li><strong>Processamento incremental: <\/strong>Em vez de processar todo o banco de dados diariamente, processar os dados de forma incremental \u2013 um dia de cada vez.<\/li>\n\n\n\n<li><strong>Filtragem de dados:<\/strong> Oferecer conjuntos de dados filtrados aos analistas pode agilizar o processamento de dados em plataformas como Databricks ou BigQuery.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Lidando com conjuntos de dados menores&nbsp;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Por outro lado, tamb\u00e9m precisamos analisar conjuntos de dados menores, como pesquisas de satisfa\u00e7\u00e3o dos clientes. O desafio aqui \u00e9 diferente. Quando lidamos com tamanhos de dados modestos, como 20 MB, o uso do Spark pode parecer exagerado. No entanto, a centraliza\u00e7\u00e3o dos dados para uma an\u00e1lise abrangente na empresa justifica essa abordagem.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Desafios com CSVs:<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Garantia de esquema:<\/strong> Assegurar que a estrutura do CSV permane\u00e7a consistente.<\/li>\n\n\n\n<li><strong>Rastreamento de dados e versionamento:<\/strong>&nbsp; Manter o controle das vers\u00f5es dos dados, especialmente quando recebidos de forma ad hoc.<\/li>\n\n\n\n<li><strong>Sobrecarga do Spark: <\/strong>A sobrecarga de usar o Spark para conjuntos de dados menores.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">As solu\u00e7\u00f5es incluem:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Garantia de esquema em JSON:<\/strong> Se um CSV n\u00e3o estiver conforme o esquema garantido, n\u00e3o ser\u00e1 processado.<\/li>\n\n\n\n<li><strong>Versionamento autom\u00e1tico: <\/strong>Todas as vers\u00f5es dos dados s\u00e3o armazenadas automaticamente no Data Lake. Al\u00e9m dos dados, os esquemas tamb\u00e9m s\u00e3o versionados.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Explorando mais a fundo: desafios espec\u00edficos do Spark<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ao lidar com tamanhos variados de dados, o Spark traz suas pr\u00f3prias complica\u00e7\u00f5es:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Spill: <\/strong>Os dados s\u00e3o movidos para o disco se n\u00e3o couberem na RAM. Se a mem\u00f3ria do disco acabar, o processamento pode ser interrompido.<\/li>\n\n\n\n<li><strong>Skew:<\/strong> Isso ocorre quando uma parti\u00e7\u00e3o de dados \u00e9 significativamente maior que as outras. Em casos extremos, enquanto todas as outras parti\u00e7\u00f5es j\u00e1 conclu\u00edram, uma ainda permanece processando.<\/li>\n\n\n\n<li><strong>Shuffle:<\/strong> A movimenta\u00e7\u00e3o de dados entre parti\u00e7\u00f5es, especialmente durante opera\u00e7\u00f5es como join ou groupby, pode ser demorada.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Para resolver esses problemas, utilizamos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Otimiza\u00e7\u00e3o de par\u00e2metros no Spark: <\/strong>As configura\u00e7\u00f5es padr\u00e3o podem n\u00e3o ser suficientes, ent\u00e3o \u00e9 essencial otimizar com base na origem dos dados.<\/li>\n\n\n\n<li><strong>Parti\u00e7\u00f5es de shuffle e maxPartitionBytes:<\/strong> Esses par\u00e2metros podem ser ajustados para gerenciar melhor as parti\u00e7\u00f5es de dados.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Adotando o Spark 3<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A migra\u00e7\u00e3o recente para o Spark 3 trouxe uma infinidade de par\u00e2metros para otimiza\u00e7\u00e3o. Funcionalidades como o AQE ajudam a lidar automaticamente com joins desbalanceados. H\u00e1 a capacidade inerente de alternar de sort-merge join para broadcast join durante a execu\u00e7\u00e3o. O Spark 3 tamb\u00e9m automatiza a configura\u00e7\u00e3o das parti\u00e7\u00f5es, garantindo tamanhos de parti\u00e7\u00e3o ideais durante o processamento.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A jornada do Nubank no processamento de enormes volumes de dados usando Spark oferece um olhar esclarecedor sobre os desafios pr\u00e1ticos e poss\u00edveis solu\u00e7\u00f5es para empresas que navegam na era do Big Data. Isso destaca a necessidade de agilidade, vis\u00e3o de futuro e uma abordagem proativa na gest\u00e3o e otimiza\u00e7\u00e3o dos fluxos de trabalho de processamento de dados.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Com o Spark em constante evolu\u00e7\u00e3o, como \u00e9 evidente na transi\u00e7\u00e3o para o Spark 3, as organiza\u00e7\u00f5es podem antecipar ferramentas e recursos ainda mais aprimorados. Aprendendo com pioneiros como o Nubank, as empresas podem se posicionar melhor para aproveitar os benef\u00edcios do Spark e elevar suas estrat\u00e9gias de dados a novos patamares.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Confira o que compartilhamos sobre esse tema no Meetup a seguir:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<span class=\"embed-youtube\" style=\"text-align:center; display: block;\"><iframe loading=\"lazy\" class=\"youtube-player\" title=\"YouTube video player\" width=\"640\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/JDlbFhdU1Zw?version=3&#038;rel=1&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;fs=1&#038;hl=pt-BR&#038;autohide=2&#038;wmode=transparent&#038;listType=playlist&#038;list=PLfqo9_UMdHhYKJ6LnyzNNNOYKshjvJFUA\" allowfullscreen=\"true\" style=\"border:0;\" sandbox=\"allow-scripts allow-same-origin allow-popups allow-presentation allow-popups-to-escape-sandbox\"><\/iframe><\/span>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Desenvolvido principalmente para o processamento de Big Data, o Spark se destaca por ser totalmente open source.<\/p>\n","protected":false},"author":178110103,"featured_media":30539,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_eb_attr":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_wpcom_ai_launchpad_first_post":false,"_jetpack_hide_featured_image":false,"_jetpack_featured_image_duplicate_dismissed":0,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[2604,2514,2503],"tags":[2733,2607],"class_list":["post-30547","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-analytics-engineering-pt-br","category-building-stories-pt-br","category-data-analytics","tag-analytics-engineer-pt-br","tag-data-analytics-pt-br"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Como o Nubank usa o Spark para processar dados - Building Nubank<\/title>\n<meta name=\"description\" content=\"Desenvolvido principalmente para o processamento de Big Data, o Spark se destaca por ser totalmente open source.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/building.nu.com\/pt-br\/como-o-nubank-usa-o-spark-para-processar-dados\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Como o Nubank usa o Spark para processar dados - Building Nubank\" \/>\n<meta property=\"og:description\" content=\"Desenvolvido principalmente para o processamento de Big Data, o Spark se destaca por ser totalmente open source.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/building.nu.com\/pt-br\/como-o-nubank-usa-o-spark-para-processar-dados\/\" \/>\n<meta property=\"og:site_name\" content=\"Building Nubank\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-05T00:51:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-12-19T22:06:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-28-at-13.53.45.png?fit=1139%2C738&ssl=1\" \/>\n\t<meta property=\"og:image:width\" content=\"1139\" \/>\n\t<meta property=\"og:image:height\" content=\"738\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Nubank Editorial\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nubank Editorial\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/como-o-nubank-usa-o-spark-para-processar-dados\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/como-o-nubank-usa-o-spark-para-processar-dados\\\/\"},\"author\":{\"name\":\"Nubank Editorial\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/#\\\/schema\\\/person\\\/462f4f5a8d4ec3ccbc3d661dde00f0a4\"},\"headline\":\"Como o Nubank usa o Spark para processar dados\",\"datePublished\":\"2024-11-05T00:51:57+00:00\",\"dateModified\":\"2024-12-19T22:06:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/como-o-nubank-usa-o-spark-para-processar-dados\\\/\"},\"wordCount\":1506,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/como-o-nubank-usa-o-spark-para-processar-dados\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/building.nu.com\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/Screenshot-2024-10-28-at-13.53.45.png?fit=1139%2C738&ssl=1\",\"keywords\":[\"Analytics Engineer\",\"data analytics\"],\"articleSection\":[\"Analytics Engineering\",\"Building Stories\",\"Data &amp; Analytics\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/como-o-nubank-usa-o-spark-para-processar-dados\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/como-o-nubank-usa-o-spark-para-processar-dados\\\/\",\"url\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/como-o-nubank-usa-o-spark-para-processar-dados\\\/\",\"name\":\"Como o Nubank usa o Spark para processar dados - Building Nubank\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/como-o-nubank-usa-o-spark-para-processar-dados\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/como-o-nubank-usa-o-spark-para-processar-dados\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/i0.wp.com\\\/building.nu.com\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/Screenshot-2024-10-28-at-13.53.45.png?fit=1139%2C738&ssl=1\",\"datePublished\":\"2024-11-05T00:51:57+00:00\",\"dateModified\":\"2024-12-19T22:06:38+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/#\\\/schema\\\/person\\\/462f4f5a8d4ec3ccbc3d661dde00f0a4\"},\"description\":\"Desenvolvido principalmente para o processamento de Big Data, o Spark se destaca por ser totalmente open source.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/como-o-nubank-usa-o-spark-para-processar-dados\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/como-o-nubank-usa-o-spark-para-processar-dados\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/como-o-nubank-usa-o-spark-para-processar-dados\\\/#primaryimage\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/building.nu.com\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/Screenshot-2024-10-28-at-13.53.45.png?fit=1139%2C738&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/building.nu.com\\\/wp-content\\\/uploads\\\/2024\\\/10\\\/Screenshot-2024-10-28-at-13.53.45.png?fit=1139%2C738&ssl=1\",\"width\":1139,\"height\":738,\"caption\":\"Nubanker working at our office\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/como-o-nubank-usa-o-spark-para-processar-dados\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Como o Nubank usa o Spark para processar dados\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/#website\",\"url\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/\",\"name\":\"Building Nubank\",\"description\":\"We make the extraordinary happen\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/#\\\/schema\\\/person\\\/462f4f5a8d4ec3ccbc3d661dde00f0a4\",\"name\":\"Nubank Editorial\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8c056170dc75ffd365b306a0ac7bea4e51d1cdab52a0c84e6ba0a42f7e2f4633?s=96&d=identicon&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8c056170dc75ffd365b306a0ac7bea4e51d1cdab52a0c84e6ba0a42f7e2f4633?s=96&d=identicon&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8c056170dc75ffd365b306a0ac7bea4e51d1cdab52a0c84e6ba0a42f7e2f4633?s=96&d=identicon&r=g\",\"caption\":\"Nubank Editorial\"},\"url\":\"https:\\\/\\\/building.nu.com\\\/pt-br\\\/author\\\/editorial\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Como o Nubank usa o Spark para processar dados - Building Nubank","description":"Desenvolvido principalmente para o processamento de Big Data, o Spark se destaca por ser totalmente open source.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/building.nu.com\/pt-br\/como-o-nubank-usa-o-spark-para-processar-dados\/","og_locale":"pt_BR","og_type":"article","og_title":"Como o Nubank usa o Spark para processar dados - Building Nubank","og_description":"Desenvolvido principalmente para o processamento de Big Data, o Spark se destaca por ser totalmente open source.","og_url":"https:\/\/building.nu.com\/pt-br\/como-o-nubank-usa-o-spark-para-processar-dados\/","og_site_name":"Building Nubank","article_published_time":"2024-11-05T00:51:57+00:00","article_modified_time":"2024-12-19T22:06:38+00:00","og_image":[{"width":1139,"height":738,"url":"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-28-at-13.53.45.png?fit=1139%2C738&ssl=1","type":"image\/png"}],"author":"Nubank Editorial","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Nubank Editorial","Est. tempo de leitura":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/building.nu.com\/pt-br\/como-o-nubank-usa-o-spark-para-processar-dados\/#article","isPartOf":{"@id":"https:\/\/building.nu.com\/pt-br\/como-o-nubank-usa-o-spark-para-processar-dados\/"},"author":{"name":"Nubank Editorial","@id":"https:\/\/building.nu.com\/pt-br\/#\/schema\/person\/462f4f5a8d4ec3ccbc3d661dde00f0a4"},"headline":"Como o Nubank usa o Spark para processar dados","datePublished":"2024-11-05T00:51:57+00:00","dateModified":"2024-12-19T22:06:38+00:00","mainEntityOfPage":{"@id":"https:\/\/building.nu.com\/pt-br\/como-o-nubank-usa-o-spark-para-processar-dados\/"},"wordCount":1506,"commentCount":0,"image":{"@id":"https:\/\/building.nu.com\/pt-br\/como-o-nubank-usa-o-spark-para-processar-dados\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-28-at-13.53.45.png?fit=1139%2C738&ssl=1","keywords":["Analytics Engineer","data analytics"],"articleSection":["Analytics Engineering","Building Stories","Data &amp; Analytics"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/building.nu.com\/pt-br\/como-o-nubank-usa-o-spark-para-processar-dados\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/building.nu.com\/pt-br\/como-o-nubank-usa-o-spark-para-processar-dados\/","url":"https:\/\/building.nu.com\/pt-br\/como-o-nubank-usa-o-spark-para-processar-dados\/","name":"Como o Nubank usa o Spark para processar dados - Building Nubank","isPartOf":{"@id":"https:\/\/building.nu.com\/pt-br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/building.nu.com\/pt-br\/como-o-nubank-usa-o-spark-para-processar-dados\/#primaryimage"},"image":{"@id":"https:\/\/building.nu.com\/pt-br\/como-o-nubank-usa-o-spark-para-processar-dados\/#primaryimage"},"thumbnailUrl":"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-28-at-13.53.45.png?fit=1139%2C738&ssl=1","datePublished":"2024-11-05T00:51:57+00:00","dateModified":"2024-12-19T22:06:38+00:00","author":{"@id":"https:\/\/building.nu.com\/pt-br\/#\/schema\/person\/462f4f5a8d4ec3ccbc3d661dde00f0a4"},"description":"Desenvolvido principalmente para o processamento de Big Data, o Spark se destaca por ser totalmente open source.","breadcrumb":{"@id":"https:\/\/building.nu.com\/pt-br\/como-o-nubank-usa-o-spark-para-processar-dados\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/building.nu.com\/pt-br\/como-o-nubank-usa-o-spark-para-processar-dados\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/building.nu.com\/pt-br\/como-o-nubank-usa-o-spark-para-processar-dados\/#primaryimage","url":"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-28-at-13.53.45.png?fit=1139%2C738&ssl=1","contentUrl":"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-28-at-13.53.45.png?fit=1139%2C738&ssl=1","width":1139,"height":738,"caption":"Nubanker working at our office"},{"@type":"BreadcrumbList","@id":"https:\/\/building.nu.com\/pt-br\/como-o-nubank-usa-o-spark-para-processar-dados\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/building.nu.com\/pt-br\/"},{"@type":"ListItem","position":2,"name":"Como o Nubank usa o Spark para processar dados"}]},{"@type":"WebSite","@id":"https:\/\/building.nu.com\/pt-br\/#website","url":"https:\/\/building.nu.com\/pt-br\/","name":"Building Nubank","description":"We make the extraordinary happen","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/building.nu.com\/pt-br\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/building.nu.com\/pt-br\/#\/schema\/person\/462f4f5a8d4ec3ccbc3d661dde00f0a4","name":"Nubank Editorial","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/8c056170dc75ffd365b306a0ac7bea4e51d1cdab52a0c84e6ba0a42f7e2f4633?s=96&d=identicon&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/8c056170dc75ffd365b306a0ac7bea4e51d1cdab52a0c84e6ba0a42f7e2f4633?s=96&d=identicon&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8c056170dc75ffd365b306a0ac7bea4e51d1cdab52a0c84e6ba0a42f7e2f4633?s=96&d=identicon&r=g","caption":"Nubank Editorial"},"url":"https:\/\/building.nu.com\/pt-br\/author\/editorial\/"}]}},"jetpack_likes_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pbKBB5-7WH","jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/i0.wp.com\/building.nu.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-28-at-13.53.45.png?fit=1139%2C738&ssl=1","_links":{"self":[{"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/posts\/30547","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/users\/178110103"}],"replies":[{"embeddable":true,"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/comments?post=30547"}],"version-history":[{"count":3,"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/posts\/30547\/revisions"}],"predecessor-version":[{"id":30580,"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/posts\/30547\/revisions\/30580"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/media\/30539"}],"wp:attachment":[{"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/media?parent=30547"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/categories?post=30547"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/building.nu.com\/pt-br\/wp-json\/wp\/v2\/tags?post=30547"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}