无法将R数据帧转换为Spark DataFrame

时间:2017-01-24 08:15:03

标签: r sparkr

当我尝试使用以下方法将R中的本地数据帧转换为Spark DataFrame时

raw.data <- as.DataFrame(sc,raw.data)

我收到此错误:

  

17/01/24 08:02:04 WARN RBackendHandler:找不到匹配的方法类org.apache.spark.sql.api.r.SQLUtils.getJavaSparkContext。候选人是:   17/01/24 08:02:04 WARN RBackendHandler:getJavaSparkContext(class org.apache.spark.sql.SQLContext)   17/01/24 08:02:04 ERROR RBackendHandler:org.apache.spark.sql.api.r.SQLUtils上的getJavaSparkContext失败   invokeJava出错(isStatic = TRUE,className,methodName,...):

问题类似于 sparkR on AWS: Unable to load native-hadoop library and

2 个答案:

答案 0 :(得分:4)

如果您使用的是最新版本的Spark,则无需使用sc我在RStudio中使用版本为2.0.0的SparkR包。请仔细阅读以下代码(用于将R会话与SparkR会话连接):

if (nchar(Sys.getenv("SPARK_HOME")) < 1) {
Sys.setenv(SPARK_HOME = "path-to-spark home/spark-2.0.0-bin-hadoop2.7")
 }
 library(SparkR)
 library(SparkR, lib.loc = c(file.path(Sys.getenv("SPARK_HOME"), "R","lib")))
 sparkR.session(enableHiveSupport = FALSE,master = "spark://master url:7077", sparkConfig = list(spark.driver.memory = "2g"))

以下是R控制台的输出:

> data<-as.data.frame(iris)
> class(data)
[1] "data.frame"
> data.df<-as.DataFrame(data)
> class(data.df)
[1] "SparkDataFrame"
attr(,"package")
[1] "SparkR"

答案 1 :(得分:0)

使用此示例代码:

library(SparkR)
library(readr)

sc <- sparkR.init(appName = "data")
sqlContext <- sparkRSQL.init(sc)

old_df<-read_csv("/home/mx/data.csv")
old_df<-data.frame(old_df)
new_df <- createDataFrame( sqlContext, old_df)