【问题标题】:Not able to to convert R data frame to Spark DataFrame无法将 R 数据帧转换为 Spark 数据帧
【发布时间】:2017-01-24 08:15:03
【问题描述】:

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

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(类 org.apache.spark.sql.SQLContext) 24 年 17 月 1 日 08:02:04 错误 RBackendHandler:org.apache.spark.sql.api.r.SQLUtils 上的 getJavaSparkContext 失败 invokeJava(isStatic = TRUE, className, methodName, ...) 中的错误:

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

【问题讨论】:

  • 这是您无法强制转换为 Spark 的 DataFrame 的唯一 data.frame 吗?是否存在 Spark 可能无法处理的特殊列?
  • 尝试在 SparkR 会话中使用 enableHiveSupport = FALSE 作为选项,如答案所示。
  • @RomanLuštrik 不,我也尝试过使用 IRIS 数据集...我无法创建任何 Spark Dataframe。

标签: r sparkr


【解决方案1】:

如果您使用的是最新版本的 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"

【讨论】:

  • 我使用的是 Spark 1.6.2 版。不支持 sparkR.session。
【解决方案2】:

使用此示例代码:

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)

【讨论】:

    猜你喜欢
    • 2020-07-24
    • 2019-01-16
    • 1970-01-01
    • 2015-09-08
    • 2016-09-27
    • 1970-01-01
    • 2021-09-15
    • 2016-01-03
    • 1970-01-01
    相关资源
    最近更新 更多