Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

Onde o Spark ainda ganha de Polars, DuckDB e SQL no DW?

Olá, pessoal!

Contexto rápido: sou analista de dados em operações logisticas e fabrica, trabalho no dia a dia com Python e BigQuery, e estou estudando Spark agora. Conforme avanço no treinamento, tento entender em que ponto ele realmente se paga. Queria a experiência prática em três pontos que pra mim deixa o Spark como uma ferramente muito nichada que pouquissimas pessoas no mundo usa e menos ainda deveria usar de verdade.

1 Qual é o ponto de virada real das ferramentas locais/unica-VM para Spark?

Primeiro não vejo ganho em usar Spark local, a regra antiga era "não cabe na RAM, usa Spark". Hoje, com Polars em modo lazy/streaming e DuckDB com spill em disco, dá pra ir bem longe numa máquina só.

Na prática de vocês, onde fica esse limite? É volume bruto, formato do dado (Parquet comprimido vs. CSV), tipo de operação ou o fator decisivo acaba sendo tolerância a falha? Penso num job de 6h que morre em 5:50 e obriga a recomeçar do zero, sinto que muitos de nos já sofremos algo assim.

2 Distribuído gerenciado por mim vs. distribuído gerenciado pelo DW

Boa parte da transformação pesada hoje pode ir para SQL no DW BigQuery, Snowflake, Databricks etc, que também são motores distribuídos. Então a escolha não me parece "distribuído vs. não distribuído", e sim "quem gerencia a distribuição".

Nesse recorte, o que ainda faz vocês trazerem a transformação para o Spark em vez de deixar no DW? Chuto ML distribuído, lógica que não cabe bem em SQL, ou custo quando o volume fica muito grande. Mas queria saber o que pesa de verdade no dia a dia, pois essas são coisas que fezemos pouqueissmas vezes.

A não ser em um servidor proprio, ai é outra história mas eu nunca tive um a disposição e acredito que não é pratica de mercado mais a alguns anos.

3 Streaming onde o D-1 deixa de bastar?

Vejo muito cenário em que D-1 resolve e a complexidade do streaming não se paga, porque o negócio não tem processo para agir em segundos. Por outro lado, existe o meio-termo do micro-batch (5 a 15 min) muito usados em linha de produção, que parece cobrir bastante coisa a um custo bem menor e o SQL, pandas e polares reina aqui.

Quais casos vocês viram em que o streaming de fato mudou uma decisão de negócio, e não só a hora de atualização do dashboard?

Sobre custo: tenho acompanhado o argumento do "Big Data is Dead" e a ideia de que a maioria das empresas nunca chega perto da escala que justificaria um cluster. Mas desconfio que a conta certa seja custo total da operação da informação incluindo hora de engenharia, curva de aprendizado e retrabalho e não só o custo da AWS, GCP ou Azure. Faz sentido para vocês?

Agradeço qualquer experiência concreta, principalmente casos em que o Spark ganhou de um Polars/DuckDB/DW bem utilizado. Estou tentando calibrar onde vale investir tempo de estudo, ou aprender apenas a base pra não se perder em conversas de bar rsrsrsrsr

1 resposta

Olá, Davi! Como vai?

Gostei bastante da forma como você elaborou toda a discussão.

Principalmente por não tratar o Spark como uma solução obrigatória para qualquer cenário de dados. A comparação com Polars, DuckDB e os próprios Data Warehouses é muito pertinente, porque a escolha da ferramenta precisa considerar volume, complexidade das transformações, custo operacional, tolerância a falhas e principalmente o problema de negócio que precisa ser resolvido.

Vamos abordar suas questões:

  1. Ponto de virada para o uso do Spark: Você está certo ao mencionar que ferramentas como Polars e DuckDB têm avançado bastante, permitindo processamento eficiente em uma única máquina. No entanto, o Spark ainda se destaca em cenários onde o volume de dados é extremamente grande ou onde a tolerância a falhas é crítica. Por exemplo, em operações que requerem processamento distribuído para garantir que um job longo não precise ser reiniciado do zero em caso de falhas. Além disso, o Spark é vantajoso quando se precisa de integração com outras ferramentas do ecossistema Hadoop ou quando se trabalha com dados em formatos distribuídos como HDFS.

  2. Distribuído gerenciado por mim vs. distribuído gerenciado pelo DW: A decisão de usar Spark em vez de um DW como BigQuery ou Snowflake pode depender de vários fatores. Um deles é a flexibilidade e o controle que você tem sobre o ambiente de execução e as otimizações específicas que pode aplicar. Além disso, o Spark pode ser preferido em cenários de machine learning distribuído ou quando há necessidade de executar lógica complexa que não se encaixa bem em SQL. O custo também pode ser um fator, especialmente se você já possui infraestrutura de cluster disponível.

  3. Streaming e micro-batch: O Spark Streaming pode ser crucial em cenários onde decisões em tempo real impactam diretamente o negócio, como em sistemas de detecção de fraudes ou em aplicações de IoT que exigem respostas imediatas. Embora o micro-batch cubra muitas necessidades, o streaming contínuo do Spark pode ser necessário em situações que exigem latência mínima.

Você mencionou a ideia de que "Big Data is Dead", mas é importante lembrar que o custo total de operação envolve mais do que apenas o custo de infraestrutura. A eficiência da equipe, a facilidade de manutenção e a capacidade de escalar rapidamente também são fatores importantes a considerar.

Espero que essas reflexões ajudem você a calibrar seu investimento de tempo no estudo do Spark.

Abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado