У меня есть 2 кадра данных pyspark,
i
+---+-----+
| ID|COL_A|
+---+-----+
| 1| 123|
| 2| 456|
| 3| 111|
| 4| 678|
+---+-----+
j
+----+-----+
|ID_B|COL_B|
+----+-----+
| 2| 456|
| 3| 111|
| 4| 876|
+----+-----+
Я пытаюсь вычесть i
из j
на основе значений определенного столбца, т. Е. Значения, присутствующие в COL_A
из i
, не должны присутствовать в COL_B
из j
.
Ожидаемый результат должен быть,
diff
+---+-----+
| ID|COL_A|
+---+-----+
| 1| 123|
| 4| 678|
+---+-----+
Это мой код,
common = i.join(j.withColumnRenamed('COL_B', 'COL_A'), ['COL_A'], 'leftsemi')
diff = i.subtract(common)
diff.show()
Но вывод идет не так,
diff
+---+-----+
| ID|COL_A|
+---+-----+
| 2| 456|
| 1| 123|
| 4| 678|
| 3| 111|
+---+-----+
Я что-то здесь не так делаю? Заранее спасибо.