【问题标题】:Spark 2.0.0: SparkR CSV ImportSpark 2.0.0:SparkR CSV 导入
【发布时间】:2016-12-04 04:28:05
【问题描述】:

我正在尝试将 csv 文件读入 SparkR(运行 Spark 2.0.0) - 并尝试尝试新添加的功能。

在这里使用 RStudio。

“读取”源文件时出现错误。

我的代码:

Sys.setenv(SPARK_HOME = "C:/spark-2.0.0-bin-hadoop2.6")
library(SparkR, lib.loc = c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib")))
sparkR.session(master = "local[*]", appName = "SparkR")
df <- loadDF("F:/file.csv", "csv", header = "true")

我在 loadDF 函数处遇到错误。

错误:

loadDF("F:/file.csv", "csv", header = "true")

invokeJava(isStatic = TRUE, className, methodName, ...) 中的错误: java.lang.reflect.InvocationTargetException 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:422) 在 org.apache.spark.sql.hive.client.IsolatedClientLoader.createClient(IsolatedClientLoader.scala:258) 在 org.apache.spark.sql.hive.HiveUtils$.newClientForMetadata(HiveUtils.scala:359) 在 org.apache.spark.sql.hive.HiveUtils$.newClientForMetadata(HiveUtils.scala:263) 在 org.apache.spark.sql.hive.HiveSharedState.metadataHive$lzycompute(HiveSharedState.scala:39) 在 org.apache.spark.sql.hive.HiveSharedState.metadataHive(HiveSharedState.scala:38) 在 org.apache.spark.sql.hive.HiveSharedState.externalCatalog$lzycompute(HiveSharedState.scala:46) 在 org.apache.spark.sql.hive.HiveSharedSt

我在这里缺少一些规范吗?任何继续进行的指针将不胜感激。

【问题讨论】:

    标签: csv apache-spark spark-dataframe sparkr


    【解决方案1】:

    我也有同样的问题。 但是这个简单的代码也有类似的问题

    createDataFrame(iris)
    

    可能安装有问题?

    UPD。是的 !我找到了解决办法。

    本方案基于此:Apache Spark MLlib with DataFrame API gives java.net.URISyntaxException when createDataFrame() or read().csv(...)

    对于 R,只需通过以下代码开始会话:

    sparkR.session(sparkConfig = list(spark.sql.warehouse.dir="/file:C:/temp"))
    

    【讨论】:

      【解决方案2】:

      也许您应该尝试使用此库读取 CSV

      https://github.com/databricks/spark-csv

      Sys.setenv(SPARK_HOME = "C:/spark-2.0.0-bin-hadoop2.6")
      
      library(SparkR, lib.loc = c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib")))
      
      sparkR.session(master = "local[*]", appName = "SparkR")  
      
      Sys.setenv('SPARKR_SUBMIT_ARGS'='"--packages" "com.databricks:spark-csv_2.10:1.4.0" "sparkr-shell"')
      
      sqlContext <- sparkRSQL.init(sc)
      
      df <- read.df(sqlContext, "cars.csv", source = "com.databricks.spark.csv", inferSchema = "true")
      

      【讨论】:

      • 您好,埃里克,感谢您的回复。但据我所知,Spark 2.0.0 具有原生的“csv”支持,这就是为什么我尝试探索如何直接“读取”csv 文件的原因。此外,Spark 2.0.0 现在使用“SparkR.session”方法进行初始化,并且不推荐使用 sqlContext。 (在他们的官方网页上,他们说可以不使用 sqlContext 直接对数据帧进行操作!)我有点迷茫,因为我在尝试执行示例时出错。 :(
      • spark-csv 确实被合并到 Spark2 中,只是做了一些小的改动。打包后的软件应被视为旧版软件 - 正如您的 Github 链接所表明的那样。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-21
      • 1970-01-01
      • 1970-01-01
      • 2017-01-05
      • 2019-04-16
      • 2017-01-02
      • 1970-01-01
      相关资源
      最近更新 更多