Spark Context nelze serializovat.
Jakákoli implementace ForeachWriter musí být serializovatelná, protože každá úloha získá novou serializovanou-deserializovanou kopii poskytnutého objektu. Proto se důrazně doporučuje, aby jakákoli inicializace pro zápis dat (např. otevření připojení nebo zahájení transakce) byla provedena po zavolání metody open(...), což znamená, že úloha je připravena generovat data.
Ve svém kódu se pokoušíte použít kontext jiskry v rámci metody procesu,
override def process(record: Row) = {
val stringHashRDD = sc.parallelize(Seq(("lastContact", record(1).toString)))
*sc.toRedisHASH(stringHashRDD, record(0).toString)(redisConfig)*
}
Chcete-li odeslat data do redis, musíte si vytvořit vlastní připojení a otevřít je metodou open a poté je použít v metodě procesu.
Podívejte se, jak vytvořit fond připojení redis. https://github.com/RedisLabs/spark-redis/blob/master/src/main/scala/com/redislabs/provider/redis/ConnectionPool.scala