【发布时间】:2017-10-10 16:15:39
【问题描述】:
我对 SparkR (Apache Spark 2.1.0) 应用函数有疑问。在 SparkDataFrame 上应用任何函数时,POSIXct 类型的时间戳会降级为整数,因为 POSIXct 自 Epoch 起保存为整数毫秒。
有没有办法防止这种简化?
这是一个最小的例子:
我创建了一个 R data.frame 并加载到 Spark:
localDF <- data.frame(time=as.POSIXct(c("2016-01-01 00:51:45","2016-01-01 02:29:51", "2016-01-01 03:58:45", "2016-01-01 05:27:23")))
df <- as.DataFrame(localDF)
str(df)
得到的输出是:
'SparkDataFrame': 1 variables:
$ time: POSIXct 2016-01-01 00:51:45 2016-01-01 02:29:51 2016-01-01 03:58:45 2016-01-01 05:27:23
现在我使用 dapply 在此 SparkDataFrame 上应用 R 函数:
sillyFunction <- function(x){
return(x)
}
outdf <- dapplyCollect(df, sillyFunction)
str(outdf)
但是,结构发生了变化:
'data.frame': 4 obs. of 1 variable:
$ time: num 1.45e+09 1.45e+09 1.45e+09 1.45e+09
谢谢!
【问题讨论】:
标签: apache-spark sparkr