Я думаю, вы можете либо выбрать необходимые столбцы до, а затем выполнить объединение.Также было бы полезно переместить dropDuplicates до объединения, так как тогда вы избавитесь от user_ids, которые появляются несколько раз в одном из фреймов данных.
Результирующий запрос может выглядеть следующим образом:
dfA.select("user_id").join(broadcast(dfB.select("user_id")), ['user_id'], how='inner')\
.select('user_id').dropDuplicates().count()
ИЛИ:
dfA.select("user_id").dropDuplicates(["user_id",]).join(broadcast(dfB.select("user_id")\
.dropDuplicates(["user_id",])), ['user_id'], how='inner').select('user_id').count()
ИЛИ также должна работать версия с отлично.
dfA.select("user_id").distinct().join(broadcast(dfB.select("user_id").distinct()),\
['user_id'], how='inner').select('user_id').count()