[英]Error in as.vector(data) : no method for coercing this S4 class to a vector
[英]Running correlations in SparkR: no method for coercing this S4 class to a vector
我最近開始使用 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.matrix(df)Error in as.vector(data) : 沒有將此 S4 類強制轉換為向量的方法
SparkR 沒有內置相關函數嗎? 如何修復 S4 對象以在 R 中執行基本功能? 任何建議人們表示贊賞。 謝謝-Rich
火花 < 1.6
如何修復 S4 對象以在 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
函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.