Agregando múltiples columnas con función personalizada en Spark

Me preguntaba si hay alguna forma de especificar una función de agregación personalizada para marcos de datos de chispa en varias columnas.

Tengo una tabla como esta del tipo (nombre, artículo, precio):

john | tomato | 1.99
john | carrot | 0.45
bill | apple  | 0.99
john | banana | 1.29
bill | taco   | 2.59

a:

Me gustaría agregar el artículo y su costo para cada persona en una lista como esta:

john | (tomato, 1.99), (carrot, 0.45), (banana, 1.29)
bill | (apple, 0.99), (taco, 2.59)

¿Es esto posible en los marcos de datos? Hace poco aprendí sobrecollect_list pero parece que solo funciona para una columna.

Respuestas a la pregunta(4)

Su respuesta a la pregunta