MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDBObject не се добавя към вътрешността на rrd foreach цикъл casbah scala apache spark

Изчисленията на RDD са разпределени в клъстера. Не можете да актуализирате променлива, която е създадена извън затварянето на RDD операция от RDD. Те са основно на две различни места:Променливата се създава в драйвера на Spark и се осъществява достъп в работните файлове и трябва да се третира като само за четене.

Spark поддържа разпределени кумулатори, които могат да се използват в този случай:Spark кумулатори

Друга опция (тази, която бих предпочел) е да трансформирате потока от RDD в желания формат на данни и да използвате foreachRDD метод за запазване във вторично хранилище. Това би бил по-функционален начин за подход към проблема. Това ще изглежда приблизително така:

  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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongodb foreach за вложена колекция за актуализиране/копиране на документи в друга колекция

  2. Mongo Query е неуспешно с код за грешка 13 и съобщение за грешка „не е оторизирано“

  3. Трябва ли да съхранявам JWT токени в redis?

  4. Проекция на MongoDB C# драйвер $elemMatch $

  5. Mongoose findOneAndUpdate и upsert не връщат грешки, няма засегнати документи