A menos que
Dataset
está cached
usando armazenamento confiável (padrão Spark cache
fornecerá apenas garantias fracas) o banco de dados pode ser acessado várias vezes, cada vez mostrando o estado atual do banco de dados. Desde ver contagens diferentes é um comportamento esperado.
Além disso, se a fonte JDBC for usada em modo distribuído (com coluna de particionamento ou
predicates
), cada thread executor usará sua própria transação. Como resultado, o estado do Dataset
pode não ser totalmente consistente. Não use JDBC. Você pode por exemplo
COPY
dados para um sistema de arquivos e carregá-los de lá.- Use a solução de replicação de sua escolha para criar uma réplica dedicada à análise e defina e pause a replicação enquanto analisa os dados.