2

以前の RDD パラダイムでは、キーを指定して、各キーに対応する RDD 要素に操作をマップすることができました。1.5.1 の時点で、SparkR の DataFrame でこれを行う明確な方法がわかりません。私がやりたいことは、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、DataFramevalueを数値に変換したときに生成されます)。を使用してテストしまし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

DataFrame を 1 つに落として実行すると、すべての操作がmyfunc正しく機能することに注意してください。実行にかかる時間 (タスクあたり約 50 秒) と例外がスローされないという事実に基づいて、すべてのs で実際に実行されていると思いますが、出力が必要です!filteridmyfuncid

任意の入力をいただければ幸いです。

4

0 に答える 0