2015-09-30 13 views
5

Làm thế nào để bạn tải tệp csv vào SparkR trên RStudio? Dưới đây là các bước tôi đã thực hiện để chạy SparkR trên RStudio. Tôi đã sử dụng read.df để đọc .csv không chắc cách viết khác. Bạn không chắc chắn liệu bước này có được coi là tạo RDD hay không.Cách tải tệp csv vào SparkR trên RStudio?

#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") 

Tôi nhận được lỗi:

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

Trả lời

3

Spark 2.0.0+:

Bạn có thể sử dụng nguồn dữ liệu csv:

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

mà không bốc spark-csv.

Original câu trả lời:

Theo như tôi có thể nói bạn đang sử dụng một phiên bản sai của spark-csv. Các phiên bản trước của Spark đang sử dụng Scala 2.10, nhưng bạn đang sử dụng Spark CSV cho Scala 2.11. Hãy thử thay vào đó:

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

Tôi đã thử phương pháp spark-csv mới từ trên cao. Bây giờ tôi khi tôi chạy dữ liệu <- read.df, tôi nhận được lỗi này: Lỗi: returnStatus == 0 không phải là TRUE. – sharp

+0

Bạn có thể cung cấp một stacktrace đầy đủ không? – zero323

+0

Bạn đang đề cập đến kết quả đầu ra của bàn điều khiển R? – sharp

1

Tôi giải quyết thành công vấn đề này bằng cách cung cấp commons-csv-1.2.jar cùng với gói spark-csv.

Rõ ràng, spark-csv sử dụng commons-csv nhưng không phải là gói với nó.

Sử dụng SPARKR_SUBMIT_ARGS sau đây đã giải quyết được sự cố (tôi sử dụng - câu trả lời thay vì --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"') 

Trong thực tế, sai số khá mơ hồ

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

là rõ ràng hơn bằng cách sử dụng vỏ R trực tiếp thay vì từ R Studio và nêu rõ

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

jar Các cần commons-csv thể được tìm thấy ở đây: https://commons.apache.org/proper/commons-csv/download_csv.cgi

1

Tôi đánh giá cao ý kiến ​​và giải pháp của mọi người !!! Tôi đã tìm ra cách khác để tải tệp .csv vào SparkR RStudio. Dưới đây là:

#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) 
+2

Giải pháp của bạn hoạt động, nhưng không thể mở rộng: khi bệnh nhân của bạn không phù hợp với bộ nhớ, bạn sẽ không thể tải trong R và chuyển đổi thành SparkR, nhưng bạn vẫn có thể tải trực tiếp lên SparkR . –

+0

Điểm tốt. Tôi đã chạy vào điều này. Tuy nhiên, với câu trả lời của người dùng bên dưới, tôi gặp lỗi. Đang cố gắng tìm cách tôi có thể tải dữ liệu trực tiếp vào SparkR. – sharp

+0

Sys.setenv ('SPARKR_SUBMIT_ARGS' = '"- gói" ... hoạt động tốt cho tôi. –

Các vấn đề liên quan