sql >> Database >  >> NoSQL >> MongoDB

MongoDBObject wordt niet toegevoegd aan de binnenkant van een rrd foreach-lus casbah scala apache spark

De berekeningen op RDD's zijn verdeeld over het cluster. U kunt een variabele die buiten de afsluiting van de RDD-bewerking is gemaakt, niet bijwerken vanuit de RDD. Ze bevinden zich in principe op twee verschillende plaatsen:de variabele wordt gemaakt in het Spark-stuurprogramma en is toegankelijk in de werkers en moet worden behandeld als alleen-lezen.

Spark ondersteunt gedistribueerde cummulators die in dit geval kunnen worden gebruikt:Spark Cummulators

Een andere optie (die ik liever heb) is om de stroom van RDD om te zetten in het gewenste gegevensformaat en het gebruik van de foreachRDD methode om het in secundaire opslag te bewaren. Dit zou een meer functionele manier zijn om het probleem te benaderen. Het zou er ongeveer zo uitzien:

  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. Mongoose:Cast-to-date mislukt voor waarde bij het bijwerken van een document

  2. Is er een manier om het aantal records in een bepaalde verzameling te beperken?

  3. Lumen en MongoDB?

  4. Stel kleine bestanden in ShardingTest in