2016-07-29 60 views
4

我試圖讀取一個CSV文件到SparkR(運行Spark 2.0.0) - &試圖嘗試新添加的功能。Spark 2.0.0:SparkR CSV導入

在這裏使用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") 

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

我在這裏缺少一些規範?任何指針繼續將不勝感激。

回答

2

我有同樣的問題。 但有了這個簡單的代碼

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")) 
+0

感謝Yury!這個解決方法有所幫助。 – AC24

0

也許你應該嘗試讀取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") 
+0

喜埃裏克,謝謝大家的響應。但據我所知,Spark 2.0.0具有原生的「csv」支持,這就是爲什麼我試圖探索如何直接「讀取」csv文件的原因。另外,Spark 2.0.0現在使用「SparkR.session」方法進行初始化,而sqlContext的用法已被棄用。 (在他們的官方網頁上,他們說可以直接操作數據框而不使用sqlContext!)我有點失落,因爲我在嘗試執行示例時遇到錯誤。 ( – AC24

+0

)spark-csv的確被合併到了Spark2中,並做了一些小的改動。包裝應該被視爲傳統軟件 - 正如你的Github鏈接所指示的。 –