Объединение двух наборов данных в Mapreduce / Hadoop

Кто-нибудь знает, как реализовать операцию Natural-Join между двумя наборами данных в Hadoop?

Более конкретно, вот что мне нужно сделать:

У меня есть два набора данных:

point information which is stored as (tile_number, point_id:point_info) , this is a 1:n key-value pairs. This means for every tile_number, there might be several point_id:point_info

Line information which is stored as (tile_number, line_id:line_info) , this is again a 1:m key-value pairs and for every tile_number, there might be more than one line_id:line_info

Как вы можете видеть, номера тайлов одинаковы между двумя наборами данных. Теперь мне действительно нужно объединить эти два набора данных на основе каждого номера плитки. Другими словами, для каждого номера тайла у нас есть n point_id: point_info и m line_id: line_info. Что я хочу сделать, так это соединить все пары point_id: point_info со всеми парами line_id: line_info для каждого номера плитки

Чтобы пояснить, вот пример:

Для точечных пар:

(tile0, point0)
(tile0, point1)
(tile1, point1)
(tile1, point2)

для пар линий:

(tile0, line0)
(tile0, line1)
(tile1, line2)
(tile1, line3)

то, что я хочу, заключается в следующем:

для плитки 0:

 (tile0, point0:line0)
 (tile0, point0:line1)
 (tile0, point1:line0)
 (tile0, point1:line1)

для плитки 1:

 (tile1, point1:line2)
 (tile1, point1:line3)
 (tile1, point2:line2)
 (tile1, point2:line3)

Ответы на вопрос(3)

Ваш ответ на вопрос