Agregando várias colunas com função personalizada no Spark

Fiquei me perguntando se existe alguma maneira de especificar uma função de agregação personalizada para quadros de dados spark em várias colunas.

Eu tenho uma tabela como esta do tipo (nome, item, preço):

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

para:

Gostaria de agregar o item e seu custo para cada pessoa em uma lista como esta:

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

Isso é possível em quadros de dados? Eu aprendi recentemente sobrecollect_list mas parece funcionar apenas para uma coluna.

questionAnswers(4)

yourAnswerToTheQuestion