Авро Схема не подходит классам - PullRequest
0 голосов

Я новичок в Avro и уже знаю, что это фантастическая библиотека, я хотел бы помочь мне приспособить файл Avro к определенному классу. Я не уверен, почему я разместил первую запись записи, это моя первая схема, и я попробовал, объединив (с небольшим размышлением) какую-то схему, которую я видел в sof / internet. Класс:

import org.apache.tika.metadata.Metadata
class ParsedData extends Serializable {
    var extractedText: String = _
    var outlinks: Set[String] = Set.empty[String]
    var metadata: Metadata = new Metadata()
    var headers: Map[String, AnyRef] = Map.empty
}

и моя связанная с ним схема avro выглядит следующим образом

{
    "type": "record",
    "name": "AvroSparkler",
    "namespace": "edu.usc.irds.sparkler.avro",
    "fields": [
    {
        "name": "ParsedDataKafka",
        "type": {
            "type": "record",
            "name": "ParsedDataKafka",
            "namespace": "edu.usc.irds.sparkler.avro",
            "fields": [
            {
                "name": "outlinks",
                "type": {
                    "type": "array",
                    "items": {
                        "type":"string"
                        }
                    }
                },
                {
                    "name": "metadata",
                    "type": {
                        "type": "record",
                        "name": "metadata",
                        "namespace": "edu.usc.irds.sparkler.avro",
                        "fields": [
                            {
                                "name": "metadata",
                                "type": {
                                    "type":"map",
                                    "values": {
                                        "type": "string"
                                    }
                                }
                            }
                        ]
                    }
                },
                {
                    "name": "headers",
                    "type": {
                        "type": "map",
                        "values": {
                            "type": "string"
                        }
                    }
                }
            ]
        }
    }
]
}
...