Создать RDD [ConsumerRecord] для модульных тестов - PullRequest
0 голосов
/ 17 февраля 2020

Я хотел бы написать модульный тест для функции с такой подписью:

def myFunc(rdd: RDD[ConsumerRecord[String, String]], sparkSession: SparkSession): (DataFrame, (Long, Long))

Но я не могу создать СДР ConsumerRecord, поскольку класс ConsumerRecord не сериализуем. Так что это не работает:

val consumerRecord: ConsumerRecord[String, String] = 
  new ConsumerRecord[String, String]("myTopic", 0, 0L, "key", "value") 

val rdd = spark.sparkContext.parallelize(Seq(consumerRecord))

Я уже видел некоторые потоки в Stackoverflow, но они мне не очень помогли.

Я не могу выполнить преобразование в RDD [ConsumerRecord]

Создание вручную RDD (ConsumerRecord (String, String)) для использования в модульном тестировании (дубликат)

Объект не сериализуемо (org. apache .kafka.clients.consumer.ConsumerRecord) в Java потоковая передача spark kafka

В первой ссылке упоминается что-то о «Сериализуемый класс с использованием сериализации kryo». Как я могу это сделать?

Я начал с этого фрагмента кода:

val kryo: Kryo = new Kryo()
kryo.register(classOf[ConsumerRecord[String,String]])

val output: Output = new Output(new FileOutputStream("KryoTest.ser"))
kryo.writeObject(output, consumerRecord)
output.close()

Как мне продолжить или есть лучшие варианты?

Я использую spark -streaming-kafka10, kafka-клиентов 2.0.0 и Spark 2.2.3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...