Faça em SQL, no warehouse. Dois bilhões de linhas não cabem na memória do pandas e mover isso pela rede é a parte lenta. Empurre filtragem, join e agregação para o motor, que é feito para isso, e traga de volta só o resultado agregado. Use pandas ou Polars no último trecho, quando os dados já são pequenos o bastante para caber confortavelmente na memória.
Por que os entrevistadores perguntam isso
Essa é uma checagem prática de julgamento sobre onde a computação deve acontecer. Os entrevistadores veem muitos candidatos que por reflexo puxam dados para um dataframe e depois se perguntam por que o job morre. Eles querem ouvir empurre a computação para os dados, consciência do que realmente custa tempo (transferência de rede e shuffles) e um limite sensato de onde começa o trabalho com dataframe.
Como estruturar sua resposta
- Responda direto: agregue no warehouse.
- Explique que o gargalo é transferência e memória, não computação.
- Diga o que pertence ao SQL e o que pertence ao dataframe.
- Cite poda de partições ou computação incremental para controlar custo.
Exemplo de resposta
SQL, sem hesitar. Dois bilhões de linhas não vão entrar em um dataframe do pandas em nenhuma máquina que vão me dar, e mesmo que entrassem, a transferência pela rede dominaria tudo. O motor foi feito para escanear e agregar nessa escala, com um paralelismo que eu não tenho localmente. Então eu empurro o filtro, o join e o group by para o warehouse e trago de volta o agregado, que para uma tabela de features costuma ser alguns milhões de linhas chaveadas por entidade e data, e isso cabe confortavelmente na memória. Meu limite aproximado é que tudo o que reduz linhas pertence ao SQL, e tudo o que dá forma a um resultado pequeno para modelagem pertence ao Python. Eu também me importo com custo, então eu garanto que a consulta poda partições pela coluna de data em vez de escanear o histórico inteiro, e se a feature é recalculada todo dia eu a construo de forma incremental, acrescentando o dia anterior em vez de recalcular três anos toda manhã. Em um projeto, essa mudança levou um job noturno de cerca de quarenta minutos para menos de três, e cortou a conta mais ou menos no mesmo fator.
Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.
Veja como funcionaPerguntas de acompanhamento que você pode esperar
- Como você depuraria uma consulta que de repente ficou dez vezes mais lenta?
- Quando você recorreria ao Spark em vez do warehouse?
- O que faria você escolher Polars em vez de pandas no último trecho?
Mais perguntas para Cientista de Dados
Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.
Prever minhas perguntas