¿Cómo afecta el número de particiones a `wholeTextFiles` y` textFiles`?

En la chispa, entiendo cómo usar wholeTextFiles textFiles wholeTextFiles y textFiles , pero no estoy seguro de cuál usar cuándo. Esto es lo que sé hasta ahora:

  • Cuando se trata de archivos que no están divididos por línea, uno debe usar wholeTextFiles , de lo contrario use textFiles .

Pienso que, de forma predeterminada, wholeTextFiles y textFiles dividen por el contenido del archivo y por las líneas, respectivamente. Pero, ambos te permiten cambiar el parámetro minPartitions .

Entonces, ¿cómo afecta el cambio de las particiones a cómo se procesan estas?

Por ejemplo, digamos que tengo un archivo muy grande con 100 líneas. ¿Cuál sería la diferencia entre procesarlo como wholeTextFiles con 100 particiones y procesarlo como un textFile (que particiona línea por línea) utilizando el valor predeterminado de la partición 100?

Cuál es la diferencia entre esto?

Para referencia, wholeTextFiles usa WholeTextFileInputFormat que se extiende a CombineFileInputFormat .

Un par de notas sobre texto wholeTextFiles .

  • Cada registro en el RDD devuelto por wholeTextFiles tiene el nombre del archivo y todo el contenido del archivo. Esto significa que un archivo no se puede dividir (en absoluto).
  • Debido a que extiende CombineFileInputFormat , intentará combinar grupos de archivos más pequeños en una partición.

Si tengo dos archivos pequeños en un directorio, es posible que ambos archivos terminen en una sola partición. Si configuro minPartitions=2 , es probable que recupere dos particiones en su lugar.

Ahora, si tuviera que configurar minPartitions=3 , todavía recuperaré dos particiones porque el contrato para wholeTextFiles es que cada registro en el RDD contiene un archivo completo.