Join works by operating on the partitions of a DataFrame using the multiple executors. However, the actual operations and the subsequent performance depends on the type of join and the nature of the datasets being joined. In the next section, we will look at the types of joins.