Estaba hoy maldiciendo yo con lo que tardaba en Hive una consulta con un simple JOIN sobre dos tablas
y en lugar de asumirlo me me he dicho esto no puede ser, a alguien le habrá pasado y habrá encontrado una solución y voilá!
MAPJOIN optimization in Hive
Cuando tenemos que hacer una join en el que una de las tablas es pequeña podemos usar el MAPJOIN que básicamente lo que hace es almacenar en la caché distribuida la tabla sobre la que se hace el MAPJOIN, para hacerlo basta con incluir el MAPJOIN de la tabla a cachear:
Con este simple cambio el tiempo se reduce en más de un tercio.
Si queréis conocer un poco más aquí podéis encontrar un completo artículo de Facebook sobre el problema de tiempos y cómo se soluciona.
Un JOIN normal funciona así:
Un MAPJOIN así:
En el caso de Facebook y los grandes volúmenes de datos que manejan el porcentaje de mejora es aún mayor:







Deja un comentario