【问题标题】:Sparkr java error火花java错误
【发布时间】:2015-10-20 13:05:39
【问题描述】:

当我尝试在 R 中加载数据时:

df <- read.df(sqlContext, "https://s3-us-west-2.amazonaws.com/sparkr-data/nycflights13.csv", "com.databricks.spark.csv",header=T)

我在使用 java 时遇到错误

Error in invokeJava(isStatic = TRUE, className, methodName, ...) : 
  java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String
    at com.databricks.spark.csv.DefaultSource.createRelation(DefaultSource.scala:74)
    at com.databricks.spark.csv.DefaultSource.createRelation(DefaultSource.scala:39)
    at com.databricks.spark.csv.DefaultSource.createRelation(DefaultSource.scala:27)
    at org.apache.spark.sql.execution.datasources.ResolvedDataSource$.apply(ResolvedDataSource.scala:125)
    at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:114)
    at org.apache.spark.sql.api.r.SQLUtils$.loadDF(SQLUtils.scala:156)
    at org.apache.spark.sql.api.r.SQLUtils.loadDF(SQLUtils.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.spark.api.r.RBackendHandler.handleMethodCall(RBackendHandler.scala:132)
    at or

【问题讨论】:

  • 您能否提供导致此错误的(最小)CSV 文件?
  • df s3-us-west-2.amazonaws.com/sparkr-data/…) 这还是不行,如果有误解请指正。
  • 大家好,我刚刚发现我在加载 CSV 时遇到问题,我尝试加载 CSV 包 SparkR 时抛出错误,之后实际上没有任何效果。

标签: java r csv sparkr


【解决方案1】:

我终于找到了解决上述问题的方法。 需要确保遵循

你已经安装了java开发包,你可以从网站下载 下载this并保存到C:/hadoop 在这个 bin 文件夹中应该像 C:/hadoop/bin

在环境变量中设置JAVA_HOME(这里不要提到bin文件夹) 将 HADOOP_HOME 设置为环境变量(此处不要提及 bin 文件夹)

现在运行以下

rm(list=ls())
  # Set the system environment variables


Sys.setenv(SPARK_HOME = "C:/spark")
Sys.setenv(HADOOP_HOME = "C:/Hadoop")
.libPaths(c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib"), .libPaths()))


#load the Sparkr library
library(rJava)
library(SparkR)


Sys.setenv('SPARKR_SUBMIT_ARGS'='"--packages" "com.databricks:spark-csv_2.11:1.2.0" "sparkr-shell"')

Sys.setenv(SPARK_MEM="1g")


# Create a spark context and a SQL context
sc <- sparkR.init(master = "local")

sqlContext <- sparkRSQL.init(sc)

现在您应该可以读取 CSV 文件了

【讨论】:

    【解决方案2】:

    经过多次尝试,我发现了read.df() 的问题所在。 header 属性会产生问题。标头应为header="true"header="false"

    > people = read.df(sqlContext, "C:\\Users\\Vivek\\Desktop\\AirPassengers.csv", source = "com.databricks.spark.csv",header=TRUE)
    Error in invokeJava(isStatic = TRUE, className, methodName, ...) : 
      java.lang.ClassCastException: java.lang.Boolean cannot be cast to java.lang.String
    
            at com.databricks.spark.csv.DefaultSource.createRelation(DefaultSource.scala:81)
    
            at com.databricks.spark.csv.DefaultSource.createRelation(DefaultSource.scala:40)
    
            at com.databricks.spark.csv.DefaultSource.createRelation(DefaultSource.scala:28)
    
            at org.apache.spark.sql.execution.datasources.ResolvedDataSource$.apply(ResolvedDataSource.scala:125)
    
            at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:114)
    
            at org.apache.spark.sql.api.r.SQLUtils$.loadDF(SQLUtils.scala:156)
    
            at org.apache.spark.sql.api.r.SQLUtils.loadDF(SQLUtils.scala)
    
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    
            at java.lang.reflect.Method.invoke(Unknown Source)
    
            at org.apache.spark.api.r.RBackendHandler.handleMethodCall(RBackendHandler.scala:132)
    
            at or
    > people = read.df(sqlContext, "C:\\Users\\Vivek\\Desktop\\AirPassengers.csv", source = "com.databricks.spark.csv",header="true")
    > head(people)
      Sl_No        time AirPassengers
    1     1        1949           112
    2     2 1949.083333           118
    3     3 1949.166667           132
    4     4     1949.25           129
    5     5 1949.333333           121
    6     6 1949.416667           135
    > 
    

    【讨论】:

      猜你喜欢
      • 2017-07-08
      • 2016-03-30
      • 2020-07-26
      • 1970-01-01
      • 2018-06-19
      • 2019-01-13
      • 1970-01-01
      • 2017-11-24
      • 2017-08-22
      相关资源
      最近更新 更多