2016-07-13 2 views
0

Вместо Математическая агрегирования с помощью соединим ключа и суммы, в среднем, не более, как:Как создать агрегацию списка значений после объединения элементов DataFrame?

df.join(dfCopy, df("key") === dfCopy("key"))).agg(sum(df("value"))) 

мне нужно сделать:

df.join(dfCopy, df("key") === dfCopy("key"))).agg(List(df("value"))) //Basically adding to a list all the values that match in a join 

Для reitirate, добавьте все соединяемых ценились в столбец «значение» в списке.

Каков наилучший способ сделать это с помощью DataFrame?

ответ

1

Рассмотрите возможность использования:

import org.apache.spark.sql.functions.collect_list 

df.join(dfCopy, df("key") == dfCopy("key")).agg(collect_list(df("value"))) 

См: http://spark.apache.org/docs/latest/api/scala/#org.apache.spark.sql.functions $

Примечание: collect_list доступен только по 1.6.0, и я считаю, что это ожидает, что вы используете в HiveContext, вместо SQLContext.

+0

Я проголосовал за ваш ответ @Hamel, я буду отмечать его как правильный ответ, как только проверю его. Можете ли вы сделать то же самое с вопросом, пожалуйста? Кто-то отказался от этого, не зная почему! – AmirHd

Смежные вопросы