I've dealt with something similar in the past.
There was an order system that had order items that was supposed to be matched up against corresponding products in another system that acted as a master and handled invoicing.
As for unqiue considerations for doing this with databricks, maybe see if you can get the rows that needs to be joined unto the same worker so you can avoid shuffeling after the initial read?
Another thing to watch out for with this kind of problem is if you have rules where you have multiple candidates for matching, but where what gets matched depends on if a record is already matched.
In that case you may have some kind of reccursive problem on your hand, that can keep producing additonal matches when you run the same operation multiple times on the same dataset.
As for how to deal with this, atleast try to give all the rows unique keys to reduce the complexitiy of the queries/cognetive overhead when trying to deal with the business rules.
Also consider making a link/junction table and store the matched key pairs with useful metadata like timestamp, matching rule used etc. Keys missing from that table would automatically be elligible for future matching and it can be used to join the tables back together again in other contexts without reproducing the logic.