2017-08-03 9 views
0

Rで作成したデータフレームをJSONオブジェクトに変換し、そのJSONオブジェクトをsparkRに読み込みたいと思います。私の現在のプロジェクトでは、データフレームをSparkRに渡すだけでは済ませて、プロジェクトを動作させるためにこのラウンドアバウト方法を実行する必要があります。また、ローカルのJSONファイルを最初にsparkRに読み込むこともできません。そのため、データを保持するJSONオブジェクトを作成し、それをsparkRに読み込もうとしています。私が読んで他の記事でRで作成したJSONオブジェクトをsparkRに読み込む方法

は、Scalaのスパークは、私が達成しようとしています何をやっているようだ機能

sqlContext.read.json(anotherPeopleRDD) 

を持っています。 SparkRに似たものはありますか?ここで

は、私は今で働いていたコードです:私はread.jsonのために取得していますエラーメッセージが表示されて

.libPaths(c(.libPaths(), '/root/Spark1.6.2/spark-1.6.2-bin-hadoop2./R/lib')) 
Sys.setenv(SPARK_HOME = '/root/Spark1.6.2/spark-1.6.2-bin-hadoop2.6') 
Sys.setenv(R_HOME = '/root/R-3.4.1') 
.libPaths(c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib"), .libPaths())) 
Sys.setenv("spark.r.command" = '/usr/bin') 
Sys.setenv(HADOOP_CONF_DIR = "/etc/hadoop/conf.cloudera.yarn") 
Sys.setenv(PATH = paste(Sys.getenv(c('PATH')), '/root/Spark1.6.2/spark1.6.2-bin-hadoop2.6/bin', sep=':')) 

library(SparkR) 
sparkR.stop() 
sc <- sparkR.init(sparkEnvir = list(spark.shuffle.service.enabled=TRUE,spark.dynamicAllocation.enabled=TRUE, spark.dynamicAllocation.initialExecutors="2"), master = "yarn-client", appName = "SparkR") 
sqlContext <- sparkRSQL.init(sc) 
options(warn=-1) 
n = 1000 
x = data.frame(id = 1:n, val = rnorm(n)) 

library(RJSONIO) 
exportJson <- toJSON(x) 
testJsonData = read.json(sqlContext, exportJson) #fails 
collect(testJsonData) 

remove(sc) 
remove(sqlContext) 
sparkR.stop() 
options(warn=0) 

17/08/03 12:25:35 ERROR r.RBackendHandler: json on 2 failed 
Error in invokeJava(isStatic = FALSE, objId$id, methodName, ...) :java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: { 
+0

これは、簡単なことをするためには非常に複雑な方法のようですね... – desertnaut

答えて

0

この問題を解決するには、ということでした私が使っていたJSONファイルは、それがどのようにフォーマットされたかによってspark read.json関数でサポートされていませんでした。その代わりにJSONファイルを作成するために別のRライブラリjsonliteを使用しなければなりませんでした。 これは私が今ファイルを作成するときに、それがどのように見えるかです:

library(jsonlite) 
exportJson <- toJSON(x) 
testJsonData = read.json(sqlContext, exportJson) #fails 
collect(testJsonData) 

私は誰にもできますね!

関連する問題