SparkR: разделить-применить-объединить в стиле dplyr на DataFrame

В предыдущей парадигме RDD я мог указать ключ и затем сопоставить операцию с элементами RDD, соответствующими каждому ключу. Я не вижу четкого способа сделать это с DataFrame в SparkR с 1.5.1. То, что я хотел бы сделать, это что-то вродеdplyr операция:

new.df <- old.df %>%
  group_by("column1") %>%
  do(myfunc(.))

В настоящее время у меня есть большой SparkR DataFrame в форме:

            timestamp  value  id
2015-09-01 05:00:00.0  1.132  24
2015-09-01 05:10:00.0  null   24
2015-09-01 05:20:00.0  1.129  24
2015-09-01 05:00:00.0  1.131  47
2015-09-01 05:10:00.0  1.132  47
2015-09-01 05:10:00.0  null   47

Я сортировал поid а такжеtimestamp.

Я хочу сгруппировать поid, но я не хочу агрегировать. Вместо этого я хочу сделать набор преобразований и вычислений для каждой группы - например, интерполировать для заполнения NA (которые генерируются, когда яcollect DataFrame, а затем преобразоватьvalue к числовому). Я тестировал с помощьюagg, но в то время как мои вычисления действительно выполняются, результаты не возвращаются, потому что я не возвращаю ни одного значения вmyfunc:

library(zoo)

myfunc <- function(df) {

  df.loc <- collect(df)
  df.loc$value <- as.numeric(df.loc$value)
  df.loc$newparam <- na.approx(df.loc$value, na.rm = FALSE)
  return(df.loc)

  # I also tested return(createDataFrame(sqlContext, df.loc)) here

}

df <- read.df( # some stuff )

grp <- group_by(df, "id")

test <- agg(grp, "myfunc")

15/11/11 18:45:33 INFO scheduler.DAGScheduler: Job 2 finished: dfToCols at NativeMethodAccessorImpl.java:-2, took 0.463131 s
   id
1  24
2  47

Обратите внимание, что операции вmyfunc все работают правильно, когда яfilter DataFrame до одногоid и запустить его. На основании времени, которое требуется для выполнения (около 50 секунд на задачу) и того факта, что исключения не выдаются, я считаю,myfunc действительно работает на всехidс - но мне нужен выход!

Любой вклад будет оценен.

Ответы на вопрос(0)

Ваш ответ на вопрос