Redis
 sql >> Baza danych >  >> NoSQL >> Redis

Azure DataBricks Stream foreach kończy się niepowodzeniem z NotSerializableException

Kontekstu Spark nie można serializować.

Każda implementacja ForeachWriter musi być możliwa do serializacji, ponieważ każde zadanie otrzyma świeżą zserializowaną, zdeserializowaną kopię dostarczonego obiektu. Dlatego zdecydowanie zaleca się, aby inicjalizacja do zapisu danych (np. otwarcie połączenia lub rozpoczęcie transakcji) była wykonywana po wywołaniu metody open(...), co oznacza, że ​​zadanie jest gotowe do wygenerowania danych.

W swoim kodzie próbujesz użyć kontekstu iskry w metodzie procesu,

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

Aby wysłać dane do redis, musisz utworzyć własne połączenie i otworzyć je w metodzie otwartej, a następnie użyć w metodzie procesowej.

Zobacz, jak utworzyć pulę połączeń redis. https://github.com/RedisLabs/spark-redis/blob/master/src/main/scala/com/redislabs/provider/redis/ConnectionPool.scala




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak skonfigurować handlery w RedMQ ze zdarzeń zgłoszonych w mojej domenie

  2. Jak używać klastrów Node.js w mojej prostej aplikacji Express?

  3. Jak unieważnić części hierarchii (drzewa) danych w pamięci podręcznej Redis?

  4. ConnectionMultiplexer.Connect przerywa się podczas łączenia z serwerem redis

  5. Jak mogę ręcznie zainstalować bibliotekę Redis perl, tj. W trybie offline. I skąd mogę uzyskać wszystkie zależności do zainstalowania