Время работы функции подсчета в sparkR

У меня есть DataFrame X в sparkR. X содержит столбец с идентификатором = 1 2 3 1 2 3 9 ... и счет для каждой записи: счет = 1241 233 20100 ....

Таким образом, найти все баллы для ID

s=filter(X, X$ID==1)

и тогда мы получаем все оценки для ID 1, которые мы можем взять в сумме.

Я хочу знать число ID = 1 в X, поэтому я использую функцию «счетчик» в SparkR.

count(s)

но это занимает очень много времени, чтобы вычислить. Есть лучший способ сделать это?

Предполагая, что мы организовали или отсортировали X так, что ID = 1 1 1 2 3 3 3 4 ..... тогда, возможно, есть лучшая альтернатива, чтобы не делать count(s) .


person Ole Petersen    schedule 06.08.2015    source источник
comment
Хотите узнать количество элементов для каждого идентификатора? И более или менее, насколько велик ваш DataFrame?   -  person Wannes Rosiers    schedule 06.08.2015
comment
Да, я хочу знать количество элементов для каждого идентификатора. Мой DataFrame составляет около 100 000 раз 2.   -  person Ole Petersen    schedule 06.08.2015


Ответы (1)


Агрегируя по идентификатору и подсчитывая количество элементов, вы немедленно получаете результат для всех идентификаторов, однако, имея всего 100 000 строк, это совсем не займет много времени!

countedData <- agg(groupBy(X, "ID"), count = n(X[["score"]]))
person Wannes Rosiers    schedule 06.08.2015
comment
КОГДА я набираю, что он говорит, что идентификатор не найден? Вы используете пакет? - person Ole Petersen; 06.08.2015
comment
Извините, идентификатор должен быть в кавычках, я его отредактировал. - person Wannes Rosiers; 06.08.2015
comment
Итак, теперь countedData - это DataFrame, а не число, подобное счетчику. Он говорит DataFrame [ID: строка, количество: bigint] - person Ole Petersen; 06.08.2015
comment
Да, теперь вы должны его собрать, и тогда у вас есть data.frame со счетчиком каждого идентификатора. - person Wannes Rosiers; 06.08.2015
comment
Когда я набираю collect(countedData), он продолжается и занимает некоторое время, как count(s). Я думаю, что это займет то же время около 30 мин. - person Ole Petersen; 06.08.2015
comment
Я ожидаю, что это будет намного быстрее на 100000 строк. Вы все еще можете проверить количество используемых вами разделов, но я боюсь, что это тоже не ускорит его. - person Wannes Rosiers; 06.08.2015