-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathAvro4sExample.scala
38 lines (29 loc) · 906 Bytes
/
Avro4sExample.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package com.kafka.demo
package avro4s
import java.io.File
import com.sksamuel.avro4s._
import com.typesafe.scalalogging.Logger
import org.apache.avro.Schema
object Avro4sExample {
private[this] val logger = Logger(getClass.getSimpleName)
def serializeUsers(users: List[User], schema: Schema, filePath: String): Unit = {
val file: File = Files.initFile(filePath)
val os = AvroOutputStream.data[User].to(file).build()
os.write(users)
users.foreach { user =>
logger.debug(s"serialize user=[$user]")
}
os.flush()
os.close()
}
def deserializeUsers(schema: Schema, filePath: String): List[User] = {
val file: File = Files.initFile(filePath)
val is = AvroInputStream.data[User].from(file).build(schema)
val users = is.iterator.toList
is.close()
users.foreach { user =>
logger.debug(s"deserialize user=[$user]")
}
users
}
}