Cómo utilizar el particionador de Hadoop
De hecho, podemos lograr este objetivo: primero creando una serie de archivos ordenados; segundo, concatenando estos archivos (similar a la ordenación por fusión y finalmente obteniendo un archivo ordenado globalmente); La idea principal es utilizar un particionador para describir la salida de una clasificación global. Supongamos que tenemos 1000 datos del 1 al 10000 y ejecutamos 10 tareas ruduce. Si ejecutamos la partición, podemos asignar los datos del 1 al 1000 a la primera reducción y los datos del 1001 al 2000 a la segunda reducción, y así sucesivamente. . En otras palabras, los datos restaurados la enésima vez serán mayores que los datos restaurados la n-1ª vez.
De esta manera, cada restauración está en orden. Sólo necesitamos capturar todos los archivos de salida en un archivo grande, y todo estará en orden.
La idea básica es esta. , Pero ahora hay un problema, es decir, cómo dividir el intervalo de datos cuando la cantidad de datos es grande y no conocemos la distribución de los datos. Un método relativamente simple es el muestreo. Si hay 100 millones de datos, podemos muestrear los datos, como tomar 10,000 muestras de datos y luego dividir los datos muestreados en intervalos. En Hadoop, podemos usar TotalOrderPartitioner para reemplazar la partición predeterminada. Luego, pásele los resultados del muestreo para lograr la partición que queremos. En el muestreo, podemos utilizar múltiples herramientas de muestreo de hadoop, como RandomSampler, InputSampler e IntervalSampler.
De esta manera, podemos ordenar datos masivos usando sistemas de archivos distribuidos. También podemos reescribir la función de comparación en la clase Partitioner para definir reglas de comparación. tipos, así como clasificación secundaria o incluso clasificación múltiple. Reimpreso sólo como referencia.