以下是我的案例类:
case class User(id: String, location: Option[Location] = None, age: Option[String] = None) {
override def toString: String = s"User: $id from ${location.toString} age of $age"
}
case class UserBookRating(user: User, bookISBN: String, rating: String)
如您所见,UserBookRating取决于用户
我正在从两个单独的csv文件中传输数据:Users.csv和BookRatings.csv
每个文件的示例行:
id,location,age
“10”;“芝加哥,伊利诺伊州,美国”;“26”
id,isbn,rating
“10”; “10240528340”, “5”
我正在使用带有GraphDSL的Akka流,我有两个来自每个文件的源。我的问题是如何从两个流中获取数据以形成BookRatings对象,因为它依赖于User。现在我有两个独立的流,它们构成来自Users.csv的User对象和另一个形成BookRating对象的流,但只有User的id字段被填充为BookRating对象,因为这是我从BookRatings.csv文件中知道的唯一信息。我怎样才能组合来自流的数据,以便形成BookRating对象?
答案 0 :(得分:0)
在图表中创建ZipWith
阶段。在ZipWith
的构造函数中,传入一个组合函数,该函数将转换两个csv流的输出的元组并输出BookRating
流。