gpt4 book ai didi

r - SparkR - 将数据帧转换为向量

转载 作者:行者123 更新时间:2023-12-04 10:34:15 24 4
gpt4 key购买 nike

我正在探索 SparkR 以计算统计数据,例如分位数、平均值、类别频率(源文件为 Amazon S3 - csv 格式)。

我能够解析 csv 文件并创建数据框。但是,我无法将此 spark-dataframe 与标准 R 函数一起使用,例如 quantile()、mean() 等。

例如,这里是 R 数据框“test”

> test <- data.frame(x=c(26,21,20),y=c(34,29,28))
> quantile ( test$x )
0% 25% 50% 75% 100%
20.0 20.5 21.0 23.5 26.0

上面的数据框产生了正确的结果。但是,通过 read.df() 创建的数据框不适用于 quantile() 函数。

> myDf = read.df(sqlContext, "s3n://path/s3file.csv", , source="com.databricks.spark.csv")
> quantile ( myDf$column1 )
Warning messages:
1: In is.na(<S4 object of class "Column">) :
is.na() applied to non-(list or vector) of type 'S4'
2: In is.na(x) : is.na() applied to non-(list or vector) of type 'S4'
Error in x[order(x, na.last = na.last, decreasing = decreasing)] :
error in evaluating the argument 'i' in selecting a method for function '[': Error in x[!nas] : object of type 'S4' is not subsettable

我的问题很简单,无论如何都可以将 SparkR 的数据框与 native R 函数一起使用吗?或者如何将 SparkR 数据帧转换为向量。

提前致谢。

最佳答案

无法在 SparkR 数据帧上应用原生 R 函数。最简单的方法是通过

使您的 DataFrame 本地化
localDf <- collect(myDf)

在此 data.frame 上,您可以应用原生 R 函数,但不能以分布式方式应用。当您使用 native R 函数将 localDf 更改为 localDf2 时,您可以将其转换回 SparkR DataFrame

myDf2 <- createDataFrame(sqlContext, localDF2)

关于r - SparkR - 将数据帧转换为向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31431192/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com