r-在SparkR中运行相关性:没有将这个S4类强制为向量的方法



我最近开始使用SparkR,并希望运行一些相关分析。我可以将内容作为SparkR数据帧,但不允许运行简单的cor()分析与数据帧。(下面出现S4错误):

usr/local/src/spark/spark-1.5.1/bin/sparkR --packages com.databricks:spark-csv_2.10:1.0.3
library(SparkR)
setwd('/DATA/')
Sys.setenv('SPARKR_SUBMIT_ARGS'='"--packages" "com.databricks:spark-csv_2.10:1.2.0" "sparkr-shell"')
sqlContext <- sparkRSQL.init(sc)
df <- read.df(sqlContext, "/DATA/GSE45291/GSE45291.csv", source = "com.databricks.spark.csv", inferSchema = "true")
results <- cor(as.data.matrix(df), type="pearson")

data.mamatrix(df)as.vvector(data)中的错误:没有将该S4类强制为向量的方法

SparkR是否没有内置的相关函数?如何将S4对象固定为在R中工作,在R中我可以执行基本功能?任何感谢大家的建议。谢谢-富

Spark<1.6

如何将S4对象固定为在R中工作,在R中我可以执行基本功能?

你根本做不到。Spark数据帧不是标准R data.frame的替代品。如果你愿意,你可以收集到本地R data.frame,但大多数时候这不是一个可行的解决方案。

您可以使用UDF来计算各个列之间的相关性。首先,您需要一个Hive上下文:

sqlContext <- sparkRHive.init(sc)

以及一些伪数据:

ldf <- iris[, -5]
colnames(ldf) <- tolower(gsub("\.", "_", colnames(ldf)))
sdf <- createDataFrame(sqlContext, ldf)

接下来你必须注册临时表:

registerTempTable(sdf, "sdf")

现在您可以像这样使用SQL查询:

q <- sql(sqlContext, "SELECT corr(sepal_length, sepal_width) FROM sdf")
head(q)
##          _c0
## 1 -0.1175698

火花>=1.6

您可以直接在DataFrame上使用cor函数。

最新更新