保存到Kafka后,日期转换为默认值

时间:2019-06-29 19:07:23

标签: date apache-spark apache-kafka avro

我已将Avro(通用记录)格式的数据保存到Kafka中,然后进行了检索。数据由2个字符串类型字段和日期类型组成。当我保存到Kafka时,必须将日期转换为时间。但是,当我获得日期时,它将被设置为一些默认值。如何解决?

写给卡夫卡的日期:2019-03-19 保存到Kafka的日期时间:1552953600000

从卡夫卡检索的日期时间:1824561152 从日期时间转换的日期:1969-12-10

以下是写入Kafka的代码:

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)

从Kafka读取数据的代码:

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()

0 个答案:

没有答案