2017-02-23 4 views

답변

0

나는 이것을 SparkR 창 함수를 사용하여 해결할 수있었습니다. 나는 Spark 2.0 btw를 사용하고있다.

set.seed(123) 

#generate poisson distribution for easy checking, with lambda = 15 
n <- 1000 
orderingColumn = seq(1,n) 
data = rpois(n, 15) 
df <- data.frame(orderingColumn, data) 

#Create sparkdf 
sdf <- as.DataFrame(df); 

#Moving average 
ws <- windowOrderBy(sdf$orderingColumn) 
frame <- rowsBetween(ws, -100, 0) #100 observations back included in average 
sdfWithMa <- withColumn(sdf, "moving_average", over(avg(sdf$data), frame)) 

head(sdfWithMa, 100) 

한 가지 이상 그 불꽃은 불행하게도, 그것은 대용량 데이터 세트를 통해 느릴 수 있도록 단일 파티션에 모든 데이터를로드하려고 시도합니다입니다 함께 알고 있어야합니다. 데이터가 분산되어있는 시스템에서는 정렬 된 데이터에서 슬라이딩 윈도우를 계산하는 것이 어렵다는 것을 알고 있지만 기본 구현이 다르다면 좋겠습니다.

당신이 당신의 이동 평균은 당신이 당신의 창을 변경할 수있는 데이터의 파티션에서 실행할 수있을만큼 운이 좋은 경우 :

ws <- orderBy(windowPartitionBy("my_partition_column"), sdf$orderingColumn)