Во-первых, вам нужно преобразовать p
, чтобы каждая комбинация идентификатора и названия компании отображалась в отдельной строке.
p_flattened = FOREACH p GENERATE
id,
FLATTEN(TOKENIZE(companies.name, ' ')) AS company;
dump p_flattened;
(1,c1)
(1,c2)
(1,c3)
(2,c4)
(2,c5)
(2,c6)
(3,c2)
(3,c3)
(3,c5)
Затем присоединитесь к q, чтобы получить только идентификаторы и имена, которые встречаются в обоих отношениях, и выполните команду foreach
, чтобы избавиться от дублирующих полей.
pq_joined = JOIN p_flattened BY (id, company), q BY (id, company);
final = FOREACH pq_joined GENERATE
q::id AS id,
q::company AS company;
dump final;
(1,c3)
(3,c5)