My DataFrame df
имеет столбец, действующий как внешний ключ, к таблице, которая является много-к-одному с df
. Для каждого уникального значения внешнего ключа, он содержит еще один внешний ключ, но только один раз, причем все более значений в этой группе порожняком:PySpark DataFrame reduce_by
df.filter(df.foreignkey1 == "12345").select("foreignkey1", "foreignkey2").show()
+-----------+-----------+
|foreignkey1|foreignkey2|
+-----------+-----------+
| 12345| |
| 12345| |
| 12345| |
| 12345| 100002020|
| 12345| |
+-----------+-----------+
Здесь я выбрал все записи, где foreignkey1
12345, и отобразили рядом с ними значения foreignkey2
.
Я хотел бы, чтобы свернуть это вниз к этому:
+-----------+-----------+
|foreignkey1|foreignkey2|
+-----------+-----------+
| 12345| 100002020|
+-----------+-----------+
В теории, должен быть только один foreignkey2
за уникальную ценность foreignkey1
, хотя часть этого тестирования, что.
Я довольно новичок в Спарке, и это кажется хорошим местом для того, чтобы спросить других, чтобы я следил за «искровым мышлением». Любая помощь приветствуется. Является ли мой лучший вариант df.rdd.reduceByKey
или есть ли еще более интеллектуальный способ сделать это, используя функции groupby и aggregate? Благодаря !
Просто подумал: Я мог бы, вероятно, просто 'dropna()' и посмотреть, если это больше, чем число уникальных значений в 'foreignkey1'. Однако это не гарантирует, что есть один 'foreignkey2' за' foreignkey1', хотя он, возможно, сильно указывает его. – Quentin