sql >> Database teknologi >  >> NoSQL >> Redis

Azure DataBricks Stream foreach fejler med NotSerializableException

Spark Context kan ikke serialiseres.

Enhver implementering af ForeachWriter skal kunne serialiseres, fordi hver opgave vil få en ny serialiseret-deserialiseret kopi af det leverede objekt. Derfor anbefales det kraftigt, at enhver initialisering til skrivning af data (f.eks. åbning af en forbindelse eller start af en transaktion) udføres, efter at den åbne(...) metode er blevet kaldt, hvilket betyder, at opgaven er klar til at generere data.

I din kode forsøger du at bruge gnistkontekst inden for procesmetoden,

override def process(record: Row) = {
    val stringHashRDD = sc.parallelize(Seq(("lastContact", record(1).toString)))
    *sc.toRedisHASH(stringHashRDD, record(0).toString)(redisConfig)*
  }

For at sende data til redis skal du oprette din egen forbindelse og åbne den i den åbne metode og derefter bruge den i procesmetoden.

Tag et kig på, hvordan du opretter redis-forbindelsespulje. https://github.com/RedisLabs/spark-redis/blob/master/src/main/scala/com/redislabs/provider/redis/ConnectionPool.scala




  1. er det muligt at kalde lua-funktioner defineret i andre lua-scripts i redis?

  2. Mongo bulk finde og opdatere matchede dokumentfelt i en enkelt forespørgsel?

  3. django:redis:CommandError:Du har ikke indstillet ASGI_APPLICATION, som er nødvendig for at køre serveren

  4. Spring Data MongoDB og Bulk Update