Question SparkR filterRDD et flatMap ne fonctionnent pas


Après avoir passé beaucoup de temps à déterminer comment installer SparkR, je pense qu'il pourrait y avoir des problèmes avec le package ...

Gardez bien à l'esprit que je suis très nouveau à briller alors je ne sais pas si j'ai bien fait ou non.

A partir d'une nouvelle instance de l'EC6 ubuntu 64 bits, j'ai installé R et JDK

J'ai cloné le repo spark repo et l'ai construit avec:

git clone https://github.com/apache/spark.git
cd spark
build/mvn -DskipTests -Psparkr package

J'ai ensuite changé mon .Rprofile faire référence au répertoire R en incluant les lignes suivantes ....

Sys.setenv(SPARK_HOME="/home/ubuntu/spark")
.libPaths(c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib"), .libPaths()))

Puis, après avoir commencé R, j'essaie de parcourir le guide de démarrage rapide donné ici

Voici les étapes suivantes que j'ai prises ...

 R> library(SparkR)
 R> sc <- sparkR.init(master="local")
 R> textFile <- SparkR:::textFile(sc, "/home/ubuntu/spark/README.md")
 R> cc <- SparkR:::count(textFile)
 R> t10 <- SparkR:::take(textFile,10)

Tout fonctionne bien jusqu'à ici ... les lignes ci-dessous ne fonctionnent pas ...

 R> SparkR:::filterRDD(textFile, function(line){ grepl("Spark", line)})
 Error: class(objId) == "jobj" is not TRUE

 R> traceback()
 7: stop(sprintf(ngettext(length(r), "%s is not TRUE", "%s are not all TRUE"), 
   ch), call. = FALSE, domain = NA)
 6: stopifnot(class(objId) == "jobj")
 5: callJMethod(object@jrdd, "toString")
 4: paste(callJMethod(object@jrdd, "toString"), "\n", sep = "")
 3: cat(paste(callJMethod(object@jrdd, "toString"), "\n", sep = ""))
 2: function (object) 
    standardGeneric("show")(x)
 1: function (object) 
    standardGeneric("show")(x)

Un autre exemple qui ne fonctionne pas est ci-dessous.

 R> SparkR:::flatMap(textFile,
         function(line) {
            strsplit(line, " ")[[1]]
               })
  Error: class(objId) == "jobj" is not TRUE

Ci-dessous mes informations de session ...

 R> > sessionInfo()
 R version 3.2.0 (2015-04-16)
 Platform: x86_64-pc-linux-gnu (64-bit)
 Running under: Ubuntu 14.04.2 LTS

 locale:
  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
  [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
 [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

 attached base packages:
 [1] stats     graphics  grDevices utils     datasets  methods   base     

 other attached packages:
 [1] SparkR_1.4.0

Toute aide est grandement appréciée ici....


14
2018-05-05 15:50


origine


Réponses:


Donc, c'est en fait un bogue dans la méthode show du RDD dans SparkR et j'ai documenté ceci à https://issues.apache.org/jira/browse/SPARK-7512

Cependant, ce bogue ne devrait en aucun cas affecter votre calcul. Donc, si vous avez plutôt utilisé

filteredRDD <- SparkR:::filterRDD(textFile, function(line){ grepl("Spark", line)})

alors le message d'erreur devrait disparaître


7
2018-05-10 00:06