sql >> Database teknologi >  >> NoSQL >> MongoDB

MongoDBO-objekt føjes ikke til indersiden af ​​en rrd foreach loop casbah scala apache spark

Beregningerne på RDD'er er fordelt over klyngen. Du kan ikke opdatere en variabel, der blev oprettet uden for RDD-operationens lukning inde fra RDD'en. De er grundlæggende to forskellige steder:Variablen oprettes i Spark-driveren og tilgås i arbejderne og skal behandles som skrivebeskyttet.

Spark understøtter distribuerede kummulatorer, der kunne bruges i dette tilfælde:Spark-kummulatorer

En anden mulighed (den jeg foretrækker) er at transformere strømmen af ​​RDD til det ønskede dataformat og bruge foreachRDD metode til at bevare det i sekundær lagring. Dette ville være en mere funktionel måde at gribe problemet an på. Det ville nogenlunde se sådan her ud:

  val filteredStream = twitterStream.filter(entry => filters.exists(term => entry.getText.getStatus.contains(term)))
  val filteredStreamWithTs = filteredStream.map(x => ((DateTime.now.toString(), x)))
  filteredStreamWithTs.foreachRdd(rdd => // write to Mongo)



  1. Importerer mongo-samling til eksisterende samling uden at tilsidesætte den

  2. Opslag med en række objekter

  3. Data.model.updateItem er ikke en funktion TypeError:Data.model.updateItem er ikke en funktion

  4. MongoDB $pop