sql >> データベース >  >> NoSQL >> Redis

Azure DataBricksStreamforeachがNotSerializableExceptionで失敗する

    SparkContextはシリアル化できません。

    ForeachWriterの実装はすべてシリアル化可能である必要があります。これは、各タスクが提供されたオブジェクトの新しいシリアル化-逆シリアル化されたコピーを取得するためです。したがって、データを書き込むための初期化(接続を開く、トランザクションを開始するなど)は、open(...)メソッドが呼び出された後に実行することを強くお勧めします。これは、タスクがデータを生成する準備ができていることを意味します。

    コードでは、プロセスメソッド内でsparkコンテキストを使用しようとしています。

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

    データをredisに送信するには、独自の接続を作成し、openメソッドで開いてから、processメソッドで使用する必要があります。

    redis接続プールを作成する方法を見てみましょう。 https://github.com/RedisLabs/spark-redis/blob/master/src/main/scala/com/redislabs/provider/redis/ConnectionPool.scala




    1. MongoDB Aggregation:合計レコード数を取得する方法は?

    2. ApacheHBaseスナップショットの概要

    3. MongoDBでインデックスを作成する3つの方法

    4. SpringDataMongoDBとJava8LocalDate MappingException