当我尝试使用以下方法将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
答案 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)