2017-06-26 3 views

Antwort

1

Von einem Kommentar in den source code:

Die aktuelle Implementierung setzt die Partitions-ID in den oberen 31 Bits, und die unteren 33 Bits repräsentieren die Datensatznummer innerhalb jeder Partition. Die Annahme ist, dass der Datenrahmen weniger als 1 Milliarden Partitionen hat, und jede Partition hat weniger als 8 Milliarden Datensätze.

So erhalten Sie niedrige Werte für Partition 0, sehr hohe Werte für jede andere Partition.

Aber das ist ein Implementierungsdetail, auf das Sie sich nicht verlassen sollten. Nur die monoton steigende Natur bleibt garantiert gleich.

+0

In der Praxis nicht sehr nützlich. – thebluephantom

1

Dies ist klar in der function doc für monotonicallyIncreasingId()

Ein Spalten Ausdruck, der 64-Bit-Ganzzahlen erzeugt monoton zunimmt. Die generierte ID ist garantiert monoton steigend und einzigartig, aber nicht konsekutiv. Die aktuelle Implementierung setzt die Partitions-ID in die oberen 31 Bits und die Datensatznummer innerhalb jeder Partition in die unteren 33 Bits. Die Annahme ist, dass der Datenrahmen weniger als 1 Milliarde Partitionen hat und jede Partition weniger als 8 Milliarden Datensätze hat.

Als Beispiel, betrachten Sie einen Datenrahmen mit zwei Partitionen mit jeweils 3 Datensätze. Dieser Ausdruck würde die folgenden IDs zurückgeben: 0, 1, 2, 8589934592 (1L < < 33), 8589934593, 8589934594.

hoffe, das hilft!

+0

thx auch für Ihre Mühe – thebluephantom