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.partitionColumn
lowerBound
upperBound
numPartitions
¿Alguien puede explicarme los significados de estos parámetros?
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.lowerBound
upperBound
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.upperBound
lowerbound
numPartitions
upperBound
lowerbound
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 = 500
lowerBound = 0
numPartitions = 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