java.lang.ClassCastException : java. lang.String 无法转换为 org.apache.avro.generic.GenericRecord

标签 java

我尝试使用 KafkaConsumer 来消费记录,但出现以下异常

public void kafkaConsumerRun() {
    Properties prop = getProperties();
    try (KafkaConsumer<String, GenericRecord> kafkaConsumer = new KafkaConsumer<>(prop)) {
        kafkaConsumer.subscribe(Arrays.asList(topicName));
        Schema schema = Common.SCHEMA;
        log.info("SCHEMA = " + schema.toString());
        Map<String, Object> eventMap = new LinkedHashMap<>();
        while (true) {
            ConsumerRecords<String, GenericRecord> records = kafkaConsumer.poll(Duration.ofSeconds(pollInterval));
            JSONObject payloadJson = new JSONObject();
            if (records.count() > 0) {
                log.info(records.count() + " records in partition");
                for (ConsumerRecord<String, GenericRecord> rec : records) {
                    GenericRecord record = SpecificData.get().deepCopy(schema, rec.value());
                    log.info("Priting Events before camel case conversion : " + record.toString());
                    for (Iterator<Schema.Field> fieldItr = record.getSchema().getFields().iterator(); fieldItr
                            .hasNext();) {
                        String fieldName = fieldItr.next().name();
                        Object value = record.get(fieldName);
                        getFieldName(fieldName, eventMap, value);
                    }
                    log.info("JSON String: " + new JSONObject(eventMap).toString());
                    callOrchestrator(eventMap, payloadJson);
                }
            }
        }
    } catch (Exception ex) {
        log.error("Exception Caught: ", ex);
    }

最佳答案

异常堆栈跟踪应该准确地指出哪一行是错误的,并且它准确地告诉您发生了什么:有一个 String 实例,您正试图将其转换为 通用记录。确保当您将对象作为 Object 传递时,在需要时将其转换回正确的类型。

关于java.lang.ClassCastException : java. lang.String 无法转换为 org.apache.avro.generic.GenericRecord,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61891891/

相关文章:

java - 声纳问题 : Correctness - Call to equals() comparing different types

java - 从 firebase 检索的数据始终为空

java - Hibernate 删除级联

java - JDK8编译速度慢

java - 如何将 AEM 标签导出到 Excel

使用扫描仪的java数组

java - 创建动态加载类的另一个实例 - Java

java - 从 Integer.parseInt() 获取 "NumberFormatException",可能是由于误解

java - 将 JavaScript 连接到 Java

java - 如何遍历图 "forwards"和 "backwards"?