簡體   English   中英

在 SparkR 中運行相關性:沒有將此 S4 類強制轉換為向量的方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM