В поисках более функционального и вычислительно эффективного подхода в PySpark ->
У меня есть основная таблица (содержащая миллиарды строк), столбцы интересов:
id - (String),
токены - (Массив (строка)) - ex, ['alpha', 'beta', 'gamma']
- (Называя это dataframe, df1)
У меня есть еще одна сводная таблица, которая содержит 25 лучших токенов, таких как:
- (Называя его dataframe, df2) Пример:
Токен
Альфа
Beta
Zi
Mu
Теперь к этой второй таблице (или фрейму данных) я хочу добавить строку, содержащую список идентификаторов для этого токена изпервой таблицы, так что результат выглядит следующим образом:
Идентификаторы токенов
Альфа [1, 2, 3]
Бета [3, 5, 6, 8, 9]
Зи [2, 8, 12]
Му [1, 15, 16, 17]
Нынешний подход:
Из df2 определите различные токены и сохраните их в виде списка (скажем, l1).
(For every token from list, l1):
Filter df1 to extract the unique ids as a list, call it l2
Add this new list (l2) as a new column (Ids) to the dataframe (df2) to create a new dataframe (df3)
persist df3 to a table
I agree, это ужасный подход, и для любого данного l1 с 100k записями он будет работать вечно.Может кто-нибудь помочь мне переписать код (для Pyspark)