MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

MongoDBObject nie jest dodawany do wnętrza pętli rrd foreach casbah scala apache spark

Obliczenia na RDD są rozłożone w klastrze. Nie można zaktualizować zmiennej, która została utworzona poza zamknięciem operacji RDD z poziomu RDD. Znajdują się one zasadniczo w dwóch różnych miejscach:zmienna jest tworzona w sterowniku Spark i dostępna w procesach roboczych i powinna być traktowana jako tylko do odczytu.

Spark obsługuje rozproszone kumulatory, które mogą być użyte w tym przypadku:Spark Cummulatory

Inną opcją (ta, którą wolałbym) jest przekształcenie strumienia RDD do pożądanego formatu danych i użycie foreachRDD metoda utrwalania go w pamięci dodatkowej. Byłby to bardziej funkcjonalny sposób podejścia do problemu. Wyglądałoby to mniej więcej tak:

  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. Dokument aktualizacji PyMongo z wieloma rekordami

  2. Przegląd mechanizmu pamięci masowej WiredTiger dla MongoDB

  3. Utwórz _id na poddokumentach w mongoimport --jsonArray

  4. Kompresja prefiksu indeksu w MongoDB 3.0 WiredTiger

  5. Przechowywanie schematu JSON w mongodb za pomocą spring