如何在RStudio上将csv文件加载到SparkR?

时间:2015-09-30 18:43:09

标签: r apache-spark apache-spark-sql sparkr

如何在RStudio上将csv文件加载到SparkR?以下是我在RStudio上运行SparkR时必须执行的步骤。我用read.df读取.csv不知道怎么写这个。不确定此步骤是否被视为创建RDD。

i = False
val1 = []
while i == False:
    if  val1 != 0:
        val1 = eval(input("Enter an integer, the value ends if it is 0: "))
    else:
        i = True
        print(val1)

我收到错误:

#Set sys environment variables
Sys.setenv(SPARK_HOME = "C:/Users/Desktop/spark/spark-1.4.1-bin-hadoop2.6")
.libPaths(c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib"), .libPaths()))

#Sys.setenv('SPARKR_SUBMIT_ARGS'='"--packages" "com.databricks:spark-csv_2.10:1.0.3" "sparkr-shell"')

#Load libraries
library(SparkR)
library(magrittr)

sc <- sparkR.init(master="local")
sc <- sparkR.init()
sc <- sparkR.init(sparkPackages="com.databricks:spark-csv_2.11:1.0.3")
sqlContext <- sparkRSQL.init(sc)

data <- read.df(sqlContext, "C:/Users/Desktop/DataSets/hello_world.csv", "com.databricks.spark.csv", header="true")

3 个答案:

答案 0 :(得分:3)

Spark 2.0.0 +

您可以使用csv数据源:

loadDF(sqlContext, path="some_path", source="csv", header="true")

不加载spark-csv

原始回答

据我所知,你使用的是spark-csv的错误版本。 Spark的预构建版本使用的是Scala 2.10,但您使用的是Spark CSV for Scala 2.11。试试这个:

sc <- sparkR.init(sparkPackages="com.databricks:spark-csv_2.10:1.2.0")

答案 1 :(得分:1)

我通过提供commons-csv-1.2.jar和spark-csv包来成功解决了这个问题。

显然,spark-csv使用commons-csv但不包含它。

使用以下SPARKR_SUBMIT_ARGS解决了问题(我使用--jars而不是--packages)。

Sys.setenv('SPARKR_SUBMIT_ARGS'='"--jars" "/usr/lib/spark-1.5.1-bin-hadoop2.6/lib/spark-csv_2.11-1.2.0.jar,/usr/lib/spark-1.5.1-bin-hadoop2.6/lib/commons-csv-1.2.jar" "sparkr-shell"')

事实上,相当模糊的错误

Error in writeJobj(con, object) : invalid jobj 1

更明确的是直接使用R shell代替R Studio并明确说明

java.lang.NoClassDefFoundError: org/apache/commons/csv/CSVFormat

可以在此处找到所需的commons-csv jar:https://commons.apache.org/proper/commons-csv/download_csv.cgi

答案 2 :(得分:1)

我感谢大家的输入和解决方案!我想出了将.csv文件加载到SparkR RStudio的另一种方法。这是:

#set sc
sc <- sparkR.init(master = "local")
sqlContext <- sparkRSQL.init(sc)

#load .csv 
patients <- read.csv("C:/...") #Insert your .csv file path

df <- createDataFrame(sqlContext, patients)
df
head(df)
str(df)