¿Cuál es el significado de los parámetros partitionColumn, lowerBound, upperBound, numPartitions?

Mientras obtenía datos de SQL Server a través de una conexión JDBC en Spark, descubrí que puedo establecer algunos parámetros de paralelización como , , , y . He revisado la documentación de spark pero no pude entenderla.partitionColumnlowerBoundupperBoundnumPartitions

¿Alguien puede explicarme los significados de estos parámetros?

Respuestas:4 Respuestas 4
Tiempo:hace 5 años, 9 meses
Última modificación:hace 1 año, 11 meses

Solución

En realidad, la lista anterior pierde un par de cosas, específicamente la primera y la última consulta.

Sin ellos perderías algunos datos (los datos antes del y el que después). Del ejemplo no está claro porque el límite inferior es 0.lowerBoundupperBound

La lista completa debe ser:

SELECT * FROM table WHERE partitionColumn < 100

SELECT * FROM table WHERE partitionColumn BETWEEN 0 AND 100  
SELECT * FROM table WHERE partitionColumn BETWEEN 100 AND 200  

SELECT * FROM table WHERE partitionColumn > 9000

Otras respuestas

La creación de particiones no resulta en la pérdida de datos debido al filtrado. El , junto con sólo define cómo se van a crear las particiones. El y no define el rango (filtro) para los valores de la columna de partición que se va a recuperar.upperBoundlowerboundnumPartitionsupperBoundlowerbound

For a given input of lowerBound (l), upperBound (u) and numPartitions (n) 
The partitions are created as follows:

stride, s= (u-l)/n

**SELECT * FROM table WHERE partitionColumn < l+s or partitionColumn is null**
SELECT * FROM table WHERE partitionColumn >= l+s AND <2s  
SELECT * FROM table WHERE partitionColumn >= l+2s AND <3s
...
**SELECT * FROM table WHERE partitionColumn >= l+(n-1)s**

Por ejemplo, para , y . Las particiones serán según las siguientes consultas:upperBound = 500lowerBound = 0numPartitions = 5

SELECT * FROM table WHERE partitionColumn < 100 or partitionColumn is null
SELECT * FROM table WHERE partitionColumn >= 100 AND <200 
SELECT * FROM table WHERE partitionColumn >= 200 AND <300
SELECT * FROM table WHERE partitionColumn >= 300 AND <400
...
SELECT * FROM table WHERE partitionColumn >= 400

Dependiendo del rango real de valores del , el tamaño del resultado de cada partición variará.partitionColumn

Deja un comentario