Освен ако Dataset се cached използвайки надеждно хранилище (стандартен cache на Spark ще ви даде само слаби гаранции) базата данни може да бъде достъпвана многократно, като всеки път показва текущото състояние на базата данни. От
виждането на различни преброявания е очаквано поведение.
Освен това, ако източникът на JDBC се използва в разпределен режим (с колона за разделяне или predicates ), тогава всяка изпълнителна нишка ще използва своя собствена транзакция. В резултат на това състоянието на Dataset може да не съответстват напълно.
Не използвайте JDBC. Можете например
COPYданни във файлова система и да ги заредите от там.- Използвайте решение за репликация по ваш избор, за да създадете реплика, предназначена за анализи, и задайте и поставете на пауза репликацията, докато използвате анализ на данните.