Создайте декартово произведение из ключей (только) двух Pcollections (Apache Beam python) - PullRequest
0 голосов
/ 30 июня 2019

(псевдокод выровнен по питону)

У меня есть одна PCollection (скажем, T) следующим образом:
{'t1': trd001, 't2': trd002, 't3': trd004}

У меня есть второй (скажем, C) следующим образом:
{'c1': crv001, 'c2': crv002, 'c3': crv003, 'c4': crv004, 'c5': crv005}

Каждый элемент в T должен быть связан со всеми элементами в C, поскольку эта пара должна быть оценена. Другими словами,
(t1, c1)
(t1, c2)
(t1, c3)
(t1, c4)
(t1, c5)
(t2, c1)
...
(t2, c5)
...
(t3, c5)

Необходимо создать. Каждая из приведенных выше пар будет элементом новой коллекции PC, которая затем может быть использована для одновременной оценки (с использованием сторонних входных данных и т. Д.)

В данный момент я поставляю PCollection C в качестве бокового ввода против T, затем перебираю их ключи C и возвращаю результат как K, V

Похоже, что это слишком много, чтобы предоставить всю коллекцию PC C, все, что мне нужно, это ключи C

class MyDoFn(beam.DoFn):
    def process(self, element, sideinpOfC):
        for cKey in sideinpOfC.keys():
            yield element["tName"]+"_"+cKey, element
...