sql >> Databáze >  >> NoSQL >> MongoDB

MongoDBOobject se nepřidává dovnitř smyčky rrd foreach casbah scala apache spark

Výpočty na RDD jsou distribuovány v clusteru. Z RDD nelze aktualizovat proměnnou, která byla vytvořena mimo uzavření operace RDD. Jsou v zásadě na dvou různých místech:Proměnná je vytvořena v ovladači Spark a je přístupná v pracovnících a měla by být považována pouze za čtení.

Spark podporuje distribuované kumulátory, které lze v tomto případě použít:Spark Cumulators

Další možností (kterou bych preferoval) je transformace streamu RDD do požadovaného formátu dat a použití foreachRDD způsob, jak jej uložit do sekundárního úložiště. To by byl funkčnější způsob, jak k problému přistupovat. Vypadalo by to zhruba takto:

  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 - metoda 'save' neexistuje

  2. Použití redis jako mezipaměti pro databázi mysql

  3. mongo export SyntaxError:chybí; před příkazem @(shell):1:14

  4. Smažte vše v databázi MongoDB