A meno che Dataset
è cached
utilizzando uno spazio di archiviazione affidabile (standard Spark cache
ti darà solo deboli garanzie) è possibile accedere al database più volte, ogni volta mostrando lo stato corrente del database. Dal
vedere conteggi diversi è un comportamento previsto.
Inoltre, se l'origine JDBC viene utilizzata in modalità distribuita (con colonna di partizionamento o predicates
), quindi ogni thread dell'esecutore utilizzerà la propria transazione. Di conseguenza lo stato del Dataset
potrebbe non essere del tutto coerente.
Non utilizzare JDBC. Puoi per esempio
COPY
dati in un file system e caricarlo da lì.- Utilizza la soluzione di replica di tua scelta per creare una replica dedicata per l'analisi e impostare e sospendere la replica durante l'utilizzo dell'analisi dei dati.