Es sei denn Dataset
wird cached
mit zuverlässigem Speicher (Standard-Spark cache
gibt Ihnen nur schwache Garantien) kann mehrmals auf die Datenbank zugegriffen werden, wobei jedes Mal der aktuelle Zustand der Datenbank angezeigt wird. Seit
Das Anzeigen unterschiedlicher Zählwerte ist ein erwartetes Verhalten.
Wenn die JDBC-Quelle in einem verteilten Modus verwendet wird (mit Partitionierungsspalte oder predicates
), dann verwendet jeder Executor-Thread seine eigene Transaktion. Als Ergebnis der Zustand des Dataset
möglicherweise nicht vollständig konsistent.
Verwenden Sie kein JDBC. Sie können zum Beispiel
COPY
Daten in ein Dateisystem und laden sie von dort.- Verwenden Sie eine Replikationslösung Ihrer Wahl, um eine Replikation speziell für Analysen zu erstellen und die Replikation einzustellen und anzuhalten, während Sie die Daten analysieren.