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

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

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

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

  1. информация о точке, которая хранится как (тайл _номер, точка _идентификатор :точка _информация ), это пары значений 1 :n ключей -. Это означает, что для каждого номера тайла _может быть несколько точек _идентификатор :точка _информация

  2. Информация о линии, которая хранится в виде (тайла _номера, строки _идентификатора :строки _информации ), это снова 1 :m ключей -пар значений и для каждого тайл _номер, может быть более одной строки _идентификатор :строка _информация

Как видите, номера тайлов _одинаковы для двух наборов данных. теперь мне действительно нужно соединить эти два набора данных на основе каждого номера тайла _. Другими словами, для каждого номера плитки _у нас есть n точек _id :точка _информация и m строка _id :строка _информация.Что я хочу сделать, так это объединить все пары точек _id :информацию о точке _со всеми парами строк _id :линии _информацию для каждой плитки _номер


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

Для пар точек:

(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)
10
задан Brian Tompsett - 汤莱恩 8 October 2017 в 18:15
поделиться