Найти не общие элементы между парой идентификаторов из pyspark DataFrame - PullRequest
0 голосов
/ 25 марта 2020

Я ищу способ найти разницу в значениях от пары id в DataFrame. Например, у меня есть DataFrame

df = spark.createDataFrame([
                            (1,'st' ,'aaa'), (1,'st', 'bbb'),
                            (2,'ac' ,'aaa'), (2,'ac', 'ccc'), (3,'ac', 'ggg'),
                            (3,'ds' ,'aaa'), (3,'ds', 'ggg'),(3,'ds', 'mmm')
                            ], ("id","code" ,"prod")) 
df.show()
+---+----+----+
| id|code|prod|
+---+----+----+
|  1|  st| aaa|
|  1|  st| bbb|
|  2|  ac| aaa|
|  2|  ac| ccc|
|  3|  ac| ggg|
|  3|  ds| aaa|
|  3|  ds| ggg|
|  3|  ds| mmm|
+---+----+----+

и таблица парных идентификаторов

pairId = spark.createDataFrame([('st' ,'ac'), ('st' ,'ac'),('st','ds' ),('st','ds' ),('ac' ,'ds' )], 
                               ("idSorce","idTarget" ))

pairId .show()
+-------+--------+
|idSorce|idTarget|
+-------+--------+
|     st|      ac|
|     st|      ac|
|     st|      ds|
|     st|      ds|
|     ac|      ds|
+-------+--------+

Моя цель - получить prod, что только в idTarget что-то вроде

+-------+--------+----+
|idSorce|idTarget|prod|
+-------+--------+----+
|     st|      ac| ccc|
|     st|      ac| ggg|
|     st|      ds| ggg|
|     st|      ds| mmm|
|     ac|      ds| mmm|
+-------+--------+----+
...