Я сохранил данные в формате Avro (Generic Record) в Kafka и затем извлек их. Данные состоят из 2 полей типа String и типа Date. Когда я сохраняю в Kafka, я должен преобразовать дату в время. Тем не менее, когда я получаю дату назад, для нее устанавливается значение по умолчанию. Как это можно исправить?
Дата до записи в Кафку: 2019-03-19
Дата, сохраненная в Kafka: 1552953600000
Дата и время, полученные от Кафки: 1824561152
Дата конвертируется из даты и времени: 1969-12-10
Вот код для записи в Кафку:
val avroRecord = new GenericData.Record(parseAvroSchemaFromFile("/avro-offset-schema.json"))
avroRecord.put("stringValue", tableNameValue)
avroRecord.put("stringValue2", codeValue)
avroRecord.put("date", state)
val producer = new KafkaProducer[String, GenericRecord](kafkaParams)
val data = new ProducerRecord[String, GenericRecord](kafkaTopic, avroRecord)
producer.send(data)
Код для чтения данных из Кафки:
val dataRDD = KafkaUtils.createRDD(
sparkSession.sparkContext,
sparkAppConfig.kafkaParams.asJava,
offsetRanges,
LocationStrategies.PreferConsistent
)
val genericRecordsValues = dataRDD.map(record => record.value().asInstanceOf[GenericRecord])
val genericRecordsFields = genericRecordsValues.map(
record =>
(
record.get("TableName").toString,
record.get("Code").toString,
new Date(record.get(dayColumnName).asInstanceOf[Long])))
genericRecordsFields.first()