У меня есть искровой потоковый контекст, получающий потоки данных от потребителя Kafka.Данные содержат объекты JSON.Мне нужно преобразовать это в пользовательский объект Java, чтобы я мог выполнить некоторую обработку.Есть ли простой способ сделать это?По сути, мне нужен способ преобразования JavaRDD в обычную строку, чтобы я мог использовать gson.fromJSON для преобразования его в мой простой объект класса POJO.
Я пробовал какой-то метод, но получаю проблемы с сериализацией
JavaDStream jds = stream.map (x -> x.value ());
jds.foreachRDD(x -> System.out.println(x.count()));
jds.foreachRDD(new VoidFunction<JavaRDD<String>>() {
private static final long serialVersionUID = 1L;
@Override
public void call(JavaRDD<String> rdd) {
rdd.foreach(a -> {
TransactionData tr = gson.fromJson(a, TransactionData.class);
}
);
}
TransactionData - это обычный класс Java-бина с двумя полями id и amount и их методом получения / установки
В приведенном выше коде я получаю сообщение об ошибке сериализации.Это ошибка: org.apache.spark.SparkException: задача не сериализуема. Причина: java.io.NotSerializableException: com.google.gson.Gson Стек сериализации: - объект не сериализуем (класс: com.google.gson.Gson,значение: {serializeNulls: falsefactories: [Factory [typeHierarchy = com.google.gson.JsonElement, adapter = com.google.gson.internal.bind.TypeAdapters $ 25 @ 35c645ea] ....
Любые идеи покак это решить?