¿Alguien sabe cómo implementar la operación Natural-Join entre dos datasets en Hadoop?Unir dos conjuntos de datos en Mapreduce/Hadoop
Más específicamente, esto es lo que exactamente tiene que hacer:
Estoy teniendo dos conjuntos de datos:
informaciónpunto que se almacena como (tile_number, point_id: point_info), esto es a 1: n pares clave-valor. Esto significa que para cada tile_number, puede haber varios point_id: point_info
Información de línea que se almacena como (tile_number, line_id: line_info), este es de nuevo un 1: m pares clave-valor y para cada tile_number, puede haber ser más de un line_id: line_info
Como puede ver, los tile_numbers son los mismos entre los dos datasets. ahora lo que realmente necesito es unir estos dos conjuntos de datos basados en cada tile_number. En otras palabras, para cada tile_number, tenemos n point_id: point_info y m line_id: line_info. Lo que quiero hacer es unirse a todos los pares de point_id: point_info con todos los pares de line_id: line_info para cada tile_number
Con el fin de aclarar, he aquí un ejemplo:
Para los pares de puntos:
(tile0, point0)
(tile0, point1)
(tile1, point1)
(tile1, point2)
de pares de líneas:
(tile0, line0)
(tile0, line1)
(tile1, line2)
(tile1, line3)
lo que yo quiero es la siguiente:
para el azulejo 0:
(tile0, point0:line0)
(tile0, point0:line1)
(tile0, point1:line0)
(tile0, point1:line1)
para el azulejo de 1:
(tile1, point1:line2)
(tile1, point1:line3)
(tile1, point2:line2)
(tile1, point2:line3)
grande. pero ¿cómo debo hacer el producto cruzado en la sección de reducción? – reza
¡Edité mi respuesta! – Razvan
genial, pero esto solo funciona si puede ajustar todos los puntos/líneas en la memoria para almacenarlos en las dos listas mencionadas. Me temo que no es el caso en mis conjuntos de datos grandes :( – reza