Я обычный пользователь R.Статистика агрегирования в sparkR 1.4.0
Для data.frame
, который выглядит следующим образом, я хотел бы рассчитать базовую статистику агрегации; минимум, 1-й квантиль, медианный, третий квантил и максимум. Следующий код, используя reshape2
пакет и dplyr
приступить к этой opperation в регулярном обычном R является
library(reshape2)
library(dplyr)
tidy_data <- data.frame(topic1 = rnorm(10^6),
topic2 = rnorm(10^6),
topic3 = rnorm(10^6),
topic4 = rnorm(10^6),
topic5 = rnorm(10^6))
tidy_data %>%
melt(measure.vars = c("topic1","topic2","topic3","topic4","topic5")) %>%
group_by(variable) %>%
summarise(MIN = min(value),
Q1 = quantile(value, 0.25),
Q2 = median(value),
Q3 = quantile(value, 0.75),
MAX = max(value))
Мне интересно, как такие операции могут быть воспроизведены в кадре распределенных данных (DataFrame
объекта искры из) в sparkR
.I've удалось вычислить максимум каждой переменной, но не достаточно и элегантно. Есть ли способ сделать это эффективным и плавным способом?
Моего sparkR
ниже выполнение кода:
system.time({
print(
head(
summarize(topics5,
MAX5 = max(topics5$topic5),
MAX4 = max(topics5$topic4),
MAX3 = max(topics5$topic3),
MAX2 = max(topics5$topic2),
MAX1 = max(topics5$topic1)
)
)
)
})
Вообще говоря вычисления точных квантилей на больших массивах данных, как правило, не практично. Можно использовать внутренний API для получения чего-то подобного [this] (http://stackoverflow.com/a/31437177), но я снова сомневаюсь, что это хорошая идея. Что касается остальной части вашего вопроса ... Если по «эффективному и плавному» вы имеете в виду нечто похожее на типичное для метапрограммирования магии R, я боюсь, что нет ничего подобного (пока?). В источнике SparkR нет 'substitute',' lazy_eval' и подобных материалов. – zero323
Spark SQL намного более зрелый и может быть легко доступен из SparkR. Что-то вроде 'registerTempTable (themes5," themes5 "); sql (sqlContext, "SELECT max (topic5) max5, max (topic4) max4, ..., FROM themes5") ', вероятно, стоит рассмотреть. – zero323
Пробовал ли вы новый пакет 'SparkRext', доступный на github https://github.com/hoxo-m/SparkRext. Он использует тот же синтаксис 'dplyr' для управления Spark' DataFrames'. – KRC