要往kafka发二进制格式的数据,但是数据是case class类,怎么转Array[Byte]?
直接上代码
def writeByteArray(v: Any) = {
val byteOutputStream = new ByteArrayOutputStream()
val outputStream = new ObjectOutputStream(byteOutputStream)
outputStream.writeObject(v)
outputStream.close()
byteOutputStream.toByteArray
}
def readByteArray(array: Array[Byte]) = {
val byteInputStream = new ByteArrayInputStream(array)
val inputStream = new ObjectInputStream(byteInputStream)
val value = inputStream.readObject()
inputStream.close()
val kafkaByteData = value.asInstanceOf[KafkaByteData]
println(kafkaByteData.value)
println(kafkaByteData.uid)
println(kafkaByteData.name)
println(kafkaByteData.age)
}
case class KafkaByteData(value: Array[Byte],
topic: String,
partition: Int,
offset: Long,
timestamp: Long,
uid: Long,
name: String,
age: Int
)