Given two dataframes students(id,name) and enrolled(course_id,student_id), if we execute a query to join on the student IDs, Spark must do which of the following

A. Sort the data in both DataFrames alphabetically.
B. Shuffle data to ensure rows with the same student ID are on the same node or partition.
C. Use a hash function to directly map student IDs to their corresponding rows.
D. Only perform local operations without involving data movement.