Såvida inte Dataset
är cached
använder pålitlig lagring (standard Spark cache
ger dig endast svaga garantier) kan databasen nås flera gånger, varje gång visar det aktuella tillståndet för databasen. Sedan
att se olika siffror är ett förväntat beteende.
Dessutom, om JDBC-källa används i ett distribuerat läge (med partitioneringskolumn eller predicates
), kommer varje executor-tråd att använda sin egen transaktion. Som ett resultat av tillståndet för Dataset
kanske inte är helt konsekvent.
Använd inte JDBC. Du kan till exempel
COPY
data till ett filsystem och ladda den därifrån.- Använd valfri replikeringslösning för att skapa en replik avsedd för analys och ställ in och pausa replikeringen samtidigt som du analyserar data.