PySpark - UDF, получающий фрагменты кадра данных - PullRequest
0 голосов
/ 04 марта 2020

У меня есть большой массив данных PySpark со следующей структурой, где k_ * - ключи, а другие столбцы - столбцы данных (числа):

k_a  k_b  k_c  d  e
 a    1    x   4  7
 a    1    x   5  8
 b    3    x   6  9
...

Что я хочу сделать состоит в том, чтобы сделать некоторые вычисления, основанные на срезах, которые должны быть выполнены с использованием специального c пользовательского UDF. Однако эта функция должна получать «слайсы», где слайсы определяются уникальными комбинациями клавиш:

(k_a=1; k_b=1; k_c=x:)

d e
---
4 7
5 8
------------------
(k_a=b; k_b=3; k_c=x:)

d e
---
6 9

Кроме того, этот UDF создает список значений (строка), поэтому целью является создать новый фрейм данных, применяя UDF ко всем слайсам. Мой первый подход состоял в том, чтобы передать в UDF только существующие уникальные комбинации клавиш, а затем отфильтровать кадр данных внутри UDF, однако кадр данных слишком велик, чтобы его можно было транслировать, поэтому я не могу следовать этому подходу. Есть ли у вас какие-либо идеи о том, как сделать это, используя распределенные вычислительные возможности PySpark?

...