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