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